使用 Amazon QuickSight API 开发应用程序
您可以使用 AWS SDK 来访问适用于您所用编程语言或平台的 API,从而管理部署的大多数方面。有关更多信息,请参阅 AWS SDK
有关 API 操作的更多信息,请参阅 Amazon QuickSight API Reference。
在调用 Amazon QuickSight API 操作之前,您需要附加到 IAM 身份的策略中的 quicksight: 权限。例如,要调用 operation-namelist-users,您需要 quicksight:ListUsers 权限。该模式适用于所有操作。
如果不确定所需的具体权限,您可以尝试进行调用。客户端会告诉您到底缺少什么权限。您可以在权限策略的“资源”字段中使用星号 (*),而非指定显式资源。不过,建议您尽量对每个权限施加限制。您可以在策略中使用资源的 Amazon QuickSight Amazon 资源名称(ARN)标识符来指定或排除资源,从而限制用户访问权限。
有关更多信息,请参阅下列内容:
要检索用户或组的 ARN,请对相关资源使用 Describe 操作。您也可以在 IAM 中添加条件,以进一步限制在某些情况下对 API 的访问。例如,将 User1 添加到 Group1 时,主资源为 Group1,因此您可以允许或拒绝对某些组的访问;但您也可以使用 IAM Amazon QuickSight 键 quicksight:UserName 添加条件,以允许或阻止将某些用户添加到该组。
下面是一个示例策略。这意味着只要添加到组中的用户名不是 user1,附加该策略的调用方就能够在任意组上调用 CreateGroupMembership 操作。
{ "Effect": "Allow", "Action": "quicksight:CreateGroupMembership", "Resource": "arn:aws:quicksight:us-east-1:aws-account-id:group/default/*", "Condition": { "StringNotEquals": { "quicksight:UserName": "user1" } } }
- AWS CLI
-
以下过程介绍如何通过 AWS CLI 与 Amazon QuickSight API 操作进行交互。以下说明已在 Bash 中进行测试,在其他命令行环境中应可取得相同或相似的效果。
-
在环境中安装 AWS SDK。有关如何执行该操作的说明,请参阅 AWS 命令行界面
。 -
使用以下命令根据后续说明设置 AWS CLI 身份和区域。使用具有适当权限的 IAM 身份或角色的凭证。
aws configure -
通过发出以下命令来查看 Amazon QuickSight SDK 帮助:
aws quicksight help -
要获取有关如何使用 API 的详细说明,请输入 API 名称,然后输入 help,如下所示:
aws quicksight list-users help -
现在您可以调用 Amazon QuickSight API 操作。此示例返回账户中 Amazon QuickSight 用户的列表。
aws quicksight list-users --aws-account-idaws-account-id--namespace default --region us-east-1
-
- Java SDK
-
要设置与 Amazon QuickSight 交互的 Java 应用程序,请按照以下过程操作。
-
首先,在 IDE 中创建一个 Java 项目。
-
将 Amazon QuickSight SDK 导入新项目,例如:
AWSQuickSightJavaClient-1.11.x.jar -
IDE 为 Amazon QuickSight SDK 编制索引后,即可添加 import 行,如下所示:
import com.amazonaws.services.quicksight.AmazonQuickSight;如果 IDE 未将其识别为有效名称,请确认是否已导入开发工具包。
-
与其他 AWS SDK 一样,Amazon QuickSight SDK 也需要外部依赖项来执行许多功能。您需要将它们下载并导入到同一个项目中。以下依赖项是必需的:
-
aws-java-sdk-1.11.402.jar(AWS Java SDK 和凭证设置)— 请参阅 Set up the AWS SDK for Java -
commons-logging-1.2.jar– 请参阅 https://commons.apache.org/proper/commons-logging/download_logging.cgi -
jackson-annotations-2.9.6.jar、jackson-core-2.9.6.jar和jackson-databind-2.9.6.jar– 请参阅 http://repo1.maven.org/maven2/com/fasterxml/jackson/core/ -
httpclient-4.5.6.jar、httpcore-4.4.10.jar– 请参阅 https://hc.apache.org/downloads.cgi -
joda-time-2.1.jar– 请参阅 https://mvnrepository.com/artifact/joda-time/joda-time/2.1
-
-
现在,您可以创建 Amazon QuickSight 客户端了。您可以使用客户端能够与之通信的默认公有终端节点,也可以显式引用该终端节点。有几种方法可提供 AWS 凭证。在以下示例中,我们提供一种直接、简单的方法。以下客户端方法用于进行下面所有的 API 调用:
private static AmazonQuickSight getClient() { final AWSCredentialsProvider credsProvider = new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() {} }; return AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(credsProvider) .build(); } -
现在,我们可以使用上述客户端列出我们 Amazon QuickSight 账户中的所有用户。
注意
您必须提供用于订阅 Amazon QuickSight 的 AWS 账户 ID。该信息必须与调用方身份的 AWS 账户 ID 相匹配。目前,不支持跨账户调用。此外,必需参数
namespace应始终设置为default。getClient().listUsers(new ListUsersRequest() .withAwsAccountId("relevant_AWS_account_ID") .withNamespace("default")) .getUserList().forEach(user -> { System.out.println(user.getArn()); }); -
要查看所有可能的 API 操作及其使用的请求对象的列表,您可以按住 CTRL 并单击 IDE 中的客户端对象,以查看 Amazon QuickSight 接口。您也可以在 Amazon QuickSight JavaClient JAR 文件的
com.amazonaws.services.quicksight程序包中找到该信息。
-
- JavaScript (Node.js) SDK
-
要使用 Node.js 与 Amazon QuickSight 进行交互,请按照以下过程操作。
-
使用以下命令设置节点环境:
-
npm install aws-sdk -
npm install aws4 -
npm install request -
npm install url
-
-
有关使用 AWS SDK 配置 Node.js 并设置凭证的更多信息,请参阅《适用于 JavaScript 的 AWS SDK SDK v2 开发人员指南》。
-
使用下面的代码示例测试设置。必须使用 HTTPS。该示例展示了 Amazon QuickSight 操作及其 URL 请求参数的完整列表,后跟账户中 Amazon QuickSight 用户的列表。
const AWS = require('aws-sdk'); const https = require('https'); var quicksight = new AWS.Service({ apiConfig: require('./quicksight-2018-04-01.min.json'), region: 'us-east-1', }); console.log(quicksight.config.apiConfig.operations); quicksight.listUsers({ // Enter your actual AWS account ID 'AwsAccountId': 'relevant_AWS_account_ID', 'Namespace': 'default', }, function(err, data) { console.log('---'); console.log('Errors: '); console.log(err); console.log('---'); console.log('Response: '); console.log(data); });
-
- Python3 SDK
-
要创建自定义构建的
botocore程序包与 Amazon QuickSight 进行交互,请按照以下过程操作。-
在 AWS 目录中为您的环境创建凭证文件。在基于 Linux/Mac 的环境中,该文件名为 ~/.aws/credentials,内容如下所示:
[default] aws_access_key_id =Your_IAM_access_keyaws_secret_access_key =Your_IAM_secret_key -
解压缩文件夹
botocore-1.12.10。将目录切换到botocore-1.12.10,然后进入 Python3 解释器环境。 -
响应以字典对象的形式返回。每个响应都有一个包含请求 ID 和响应状态的
ResponseMetadata条目。其他条目基于您运行的操作类型。 -
下面是一个示例应用程序,它首先创建、删除和列出组,然后列出 QuickSight 账户中的用户:
import botocore.session default_namespace = 'default' account_id = 'relevant_AWS_Account' session = botocore.session.get_session() client = session.create_client("quicksight", region_name='us-east-1') print('Creating three groups: ') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3') print('Retrieving the groups and listing them: ') response = client.list_groups(AwsAccountId = account_id, Namespace=default_namespace) for group in response['GroupList']: print(group) print('Deleting our groups: ') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3') response = client.list_users(AwsAccountId = account_id, Namespace=default_namespace) for user in response['UserList']: print(user)
-
- .NET/C# SDK
-
要使用 C#.NET 与 Amazon QuickSight 进行交互,请按照以下过程操作。该示例在 Microsoft Visual for Mac 上构建;根据您的 IDE 和平台,说明可能略有不同。但是,过程应该是相似的。
-
将
nuget.zip文件解压缩到名为nuget的文件夹。 -
在 Visual Studio 中创建一个新的控制台应用。
-
在解决方案下,找到应用程序 Dependencies (依赖关系),然后打开上下文(右键单击)菜单并选择 Add Packages (添加包))。
-
在源列表中,选择 Configure Sources (配置源)。
-
选择添加,然后将源命名为
QuickSightSDK。浏览到nuget文件夹,然后选择 Add Source (添加源)。 -
选择确定。然后,选中
QuickSightSDK并选择全部三个 Amazon QuickSight 程序包:-
AWSSDK.QuickSight -
AWSSDK.Extensions.NETCore.Setup -
AWSSDK.Extensions.CognitoAuthentication
-
-
请单击添加包。
-
将以下示例应用程序复制并粘贴到您的控制台应用编辑器中。
using System; using Amazon.QuickSight.Model; using Amazon.QuickSight; namespace DotNetQuickSightSDKTest { class Program { private static readonly string AccessKey = "insert_your_access_key"; private static readonly string SecretAccessKey = "insert_your_secret_key"; private static readonly string AccountID = "AWS_account_ID"; private static readonly string Namespace = "default"; // leave this as default static void Main(string[] args) { var client = new AmazonQuickSightClient( AccessKey, SecretAccessKey, Amazon.RegionEndpoint.USEast1); var listUsersRequest = new ListUsersRequest { AwsAccountId = AccountID, Namespace = Namespace }; client.ListUsersAsync(listUsersRequest).Result.UserList.ForEach( user => Console.WriteLine(user.Arn) ); var listGroupsRequest = new ListGroupsRequest { AwsAccountId = AccountID, Namespace = Namespace }; client.ListGroupsAsync(listGroupsRequest).Result.GroupList.ForEach( group => Console.WriteLine(group.Arn) ); } } }
-