

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon Quick Sight API 开发应用程序
<a name="quicksight-sdks"></a>

您可以使用访问针对您正在使用的编程语言或平台量身定制的 API，从而管理部署的大部分方面。 AWS SDKs 有关更多信息，请参阅 [AWS SDKs](https://aws.amazon.com/tools/#SDKs)。

有关 API 操作的更多信息，请参阅 [Amazon Quick Sight API 参考](https://docs.aws.amazon.com/quicksight/index.html?id=docs_gateway)。

在调用 Amazon Quick Sight API 操作之前，您需要在附加到您的 IAM 身份的策略中`quicksight:operation-name`获得许可。例如，要调用 `list-users`，您需要 `quicksight:ListUsers` 权限。该模式适用于所有操作。

如果不确定所需的具体权限，您可以尝试进行调用。客户端会告诉您到底缺少什么权限。您可以在权限策略的“资源”字段中使用星号 (`*`)，而非指定显式资源。不过，建议您尽量对每个权限施加限制。您可以使用用户的 Amazon Quick Sight Amazon 资源名称 (ARN) 标识符在策略中指定或排除资源，从而限制用户访问。

有关更多信息，请参阅下列内容：
+ [亚马逊 Quick Sight 的 IAM 政策示例](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html)
+ [操作、资源和条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonquicksight.html)
+ [IAM JSON 策略元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)

要检索用户或组的 ARN，请对相关资源使用 `Describe` 操作。您也可以在 IAM 中添加条件，以进一步限制在某些情况下对 API 的访问。例如，`User1`添加到时，主要资源是 `Group1``Group1`，因此您可以允许或拒绝访问某些群组，但也可以使用 IAM Amazon Quick Sight 密钥添加条件，`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 Quick Sight API 操作进行交互。以下说明已在 Bash 中进行测试，在其他命令行环境中应可取得相同或相似的效果。

1. 在您的环境中安装 AWS SDK。有关如何执行该操作的说明，请参阅 [AWS 命令行界面](https://aws.amazon.com/cli/)。

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

   ```
   aws configure
   ```

1. 通过发出以下命令来查看 Amazon Quick Sight SDK 的帮助：

   ```
   aws quicksight help
   ```

1. 要获取有关如何使用 API 的详细说明，请输入 API 名称，然后输入 help，如下所示：

   ```
   aws quicksight list-users help
   ```

1. 现在你可以调用 Amazon Quick Sight API 操作了。此示例返回您账户中的 Amazon Quick Sight 用户列表。

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

------
#### [ Java SDK ]

使用以下步骤设置与 Amazon Quick Sight 交互的 Java 应用程序。

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

1. 将 Amazon Quick Sight 软件开发工具包导入到您的新项目中，例如：`AWSQuickSightJavaClient-1.11.x.jar`

1. 在你的 IDE 为 Amazon Quick Sight SDK 编制索引后，你应该能够按如下方式添加导入行：

   ```
   import com.amazonaws.services.quicksight.AmazonQuickSight;
   ```

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

1. 与其他软件开发工具包一样 AWS SDKs，Amazon Quick Sight SDK 需要外部依赖才能执行其许多功能。您需要将它们下载并导入到同一个项目中。以下依赖项是必需的：
   + `aws-java-sdk-1.11.402.jar`（AWS Java SDK 和凭据设置）— 参见[设置适用于 Java 的 AWS 软件开发工具包](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-install.html) 
   + `commons-logging-1.2.jar`— 见 [https://commons.apache。 org/proper/commons-logging/download](https://commons.apache.org/proper/commons-logging/download_logging.cgi)\$1logging.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](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/)/ 
   + `httpclient-4.5.6.jar`、`httpcore-4.4.10.jar` – 请参阅 [https://hc.apache.org/downloads.cgi](https://hc.apache.org/downloads.cgi) 
   + `joda-time-2.1.jar`— 参见 [ https://mvnrepository.com/artifact/joda-time/joda](https://mvnrepository.com/artifact/joda-time/joda-time/2.1)-time/2.1 

1. 现在，您已准备好创建 Amazon Quick Sight 客户端。您可以使用客户端能够与之通信的默认公有终端节点，也可以显式引用该终端节点。提供 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();
   	}
   ```

1. 现在，我们可以使用上述客户端列出我们的 Amazon Quick Sight 账户中的所有用户。
**注意**  
您必须提供订阅 Amazon Quick Sight 时使用的 AWS 账户编号。这必须与来电者身份的 AWS 账户 ID 相匹配。目前，不支持跨账户调用。此外，必需的参数`namespace`应始终设置为*default*。

   ```
   getClient().listUsers(new ListUsersRequest()
           .withAwsAccountId("relevant_AWS_account_ID")
           .withNamespace("default"))
           .getUserList().forEach(user -> {
               System.out.println(user.getArn());
           });
   ```

1. 要查看所有可能的 API 操作及其使用的请求对象的列表，您可以**按住 Ctrl 键单击** IDE 中的客户端对象，以查看 Amazon Quick Sight 界面。或者，也可以在 Amazon Quick Sight JavaClient JAR 文件的`com.amazonaws.services.quicksight`包中找到它。

------
#### [ JavaScript (Node.js) SDK ]

使用以下步骤通过 Node.js 与 Amazon Quick Sight 进行交互。

1. 使用以下命令设置节点环境：
   + `npm install aws-sdk`
   + `npm install aws4 `
   + `npm install request`
   + `npm install url`

1. 有关使用 AWS SDK 配置 Node.js 和设置凭据的信息，请参阅-> S [DK v 适用于 JavaScript 的 AWS SDK 2 开发者指南](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/welcome.html)。

1. 使用下面的代码示例测试设置。必须使用 HTTPS。该示例显示了 Amazon Quick Sight 操作的完整列表及其网址请求参数，然后是您账户中的 Amazon Quick Sight 用户列表。

   ```
   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 Quick Sight 进行交互。

1. 在您的环境 AWS 目录中创建凭证文件。在 a Linux/Mac-based environment, that file is called \$1/.aws/credentials 中看起来像这样：

   ```
   [default]
   aws_access_key_id = Your_IAM_access_key
   aws_secret_access_key = Your_IAM_secret_key
   ```

1. 解压缩文件夹 `botocore-1.12.10`。将目录切换到 `botocore-1.12.10`，然后进入 Python3 解释器环境。

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

1. 下面是一个示例应用程序，它首先创建、删除和列出组，然后列出 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\$1 SDK ]

使用以下步骤通过 C\$1.NET 与 Amazon Quick Sight 进行交互。该示例在 Microsoft Visual for Mac 上构建；根据您的 IDE 和平台，说明可能略有不同。但是，过程应该是相似的。



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

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

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

1. 在源列表中，选择 **Configure Sources (配置源)**。

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

1. 选择**确定**。然后，`QuickSightSDK`选择所有三个 Amazon Quick Sight 套餐：
   + `AWSSDK.QuickSight`
   + `AWSSDK.Extensions.NETCore.Setup`
   + `AWSSDK.Extensions.CognitoAuthentication`

1. 请单击**添加包**。

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

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

------