使用 Amazon QuickSight API 开发应用程序 - Amazon QuickSight

使用 Amazon QuickSight API 开发应用程序

您可以使用 AWS SDK 来访问适用于您所用编程语言或平台的 API,从而管理部署的大多数方面。有关更多信息,请参阅 AWS SDK

有关 API 操作的更多信息,请参阅 Amazon QuickSight API Reference

在调用 Amazon QuickSight API 操作之前,您需要附加到 IAM 身份的策略中的 quicksight:operation-name 权限。例如,要调用 list-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 中进行测试,在其他命令行环境中应可取得相同或相似的效果。

  1. 在环境中安装 AWS SDK。有关如何执行该操作的说明,请参阅 AWS 命令行界面

  2. 使用以下命令根据后续说明设置 AWS CLI 身份和区域。使用具有适当权限的 IAM 身份或角色的凭证。

    aws configure
  3. 通过发出以下命令来查看 Amazon QuickSight SDK 帮助:

    aws quicksight help
  4. 要获取有关如何使用 API 的详细说明,请输入 API 名称,然后输入 help,如下所示:

    aws quicksight list-users help
  5. 现在您可以调用 Amazon QuickSight API 操作。此示例返回账户中 Amazon QuickSight 用户的列表。

    aws quicksight list-users --aws-account-id aws-account-id --namespace default --region us-east-1
Java SDK

要设置与 Amazon QuickSight 交互的 Java 应用程序,请按照以下过程操作。

  1. 首先,在 IDE 中创建一个 Java 项目。

  2. 将 Amazon QuickSight SDK 导入新项目,例如:AWSQuickSightJavaClient-1.11.x.jar

  3. IDE 为 Amazon QuickSight SDK 编制索引后,即可添加 import 行,如下所示:

    import com.amazonaws.services.quicksight.AmazonQuickSight;

    如果 IDE 未将其识别为有效名称,请确认是否已导入开发工具包。

  4. 与其他 AWS SDK 一样,Amazon QuickSight SDK 也需要外部依赖项来执行许多功能。您需要将它们下载并导入到同一个项目中。以下依赖项是必需的:

  5. 现在,您可以创建 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(); }
  6. 现在,我们可以使用上述客户端列出我们 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()); });
  7. 要查看所有可能的 API 操作及其使用的请求对象的列表,您可以按住 CTRL 并单击 IDE 中的客户端对象,以查看 Amazon QuickSight 接口。您也可以在 Amazon QuickSight JavaClient JAR 文件的 com.amazonaws.services.quicksight 程序包中找到该信息。

JavaScript (Node.js) SDK

要使用 Node.js 与 Amazon QuickSight 进行交互,请按照以下过程操作。

  1. 使用以下命令设置节点环境:

    • npm install aws-sdk

    • npm install aws4

    • npm install request

    • npm install url

  2. 有关使用 AWS SDK 配置 Node.js 并设置凭证的更多信息,请参阅《适用于 JavaScript 的 AWS SDK SDK v2 开发人员指南》。

  3. 使用下面的代码示例测试设置。必须使用 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 进行交互,请按照以下过程操作。

  1. 在 AWS 目录中为您的环境创建凭证文件。在基于 Linux/Mac 的环境中,该文件名为 ~/.aws/credentials,内容如下所示:

    [default] aws_access_key_id = Your_IAM_access_key aws_secret_access_key = Your_IAM_secret_key
  2. 解压缩文件夹 botocore-1.12.10。将目录切换到 botocore-1.12.10,然后进入 Python3 解释器环境。

  3. 响应以字典对象的形式返回。每个响应都有一个包含请求 ID 和响应状态的 ResponseMetadata 条目。其他条目基于您运行的操作类型。

  4. 下面是一个示例应用程序,它首先创建、删除和列出组,然后列出 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 和平台,说明可能略有不同。但是,过程应该是相似的。

  1. nuget.zip 文件解压缩到名为 nuget 的文件夹。

  2. 在 Visual Studio 中创建一个新的控制台应用

  3. 在解决方案下,找到应用程序 Dependencies (依赖关系),然后打开上下文(右键单击)菜单并选择 Add Packages (添加包))。

  4. 在源列表中,选择 Configure Sources (配置源)

  5. 选择添加,然后将源命名为 QuickSightSDK。浏览到 nuget 文件夹,然后选择 Add Source (添加源)

  6. 选择确定。然后,选中 QuickSightSDK 并选择全部三个 Amazon QuickSight 程序包:

    • AWSSDK.QuickSight

    • AWSSDK.Extensions.NETCore.Setup

    • AWSSDK.Extensions.CognitoAuthentication

  7. 请单击添加包

  8. 将以下示例应用程序复制并粘贴到您的控制台应用编辑器中。

    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) ); } } }