

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

# 在没有代理的情况下 AWS AppConfig 检索配置数据
<a name="about-data-plane"></a>

从中检索配置数据的推荐方法 AWS AppConfig 是使用 Amazon-developed 和托管 AWS AppConfig 代理。使用代理，您可以在本地缓存配置数据，也可以异步轮询 AWS AppConfig 数据平面服务以获取更新。此 caching/polling 过程可确保您的配置数据始终可供您的应用程序使用，同时最大限度地减少延迟和成本。如果您不想使用代理，则可以直接从 AWS AppConfig 数据平面服务调用公共 API。

数据平面服务使用两个 API 操作，[StartConfigurationSession](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartConfigurationSession.html)和[GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html)。数据平面服务还使用与 AWS AppConfig 控制平面[不同的端点](https://docs.aws.amazon.com/general/latest/gr/appconfig.html#appconfigdata_data_plane)。

**注意**  
数据面板服务取代了之前使用 `GetConfiguration` API 操作来检索配置数据的过程。`GetConfiguration` API 已弃用。

**工作原理**  
以下是使用数据平面服务直接调用 AWS AppConfig API 的过程的工作原理。

您的应用程序首先使用 [StartConfigurationSession](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartConfigurationSession.html)API 操作建立配置会话来检索配置数据。然后，您的会话客户端会定期调用 [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html) 以检查和检索最新的可用数据。

在调用 `StartConfigurationSession` 时，代码发送以下信息：
+ 会话跟踪的 AWS AppConfig 应用程序、环境和配置文件的标识符（ID 或名称）。
+ （可选）会话的客户端在调用至 `GetLatestConfiguration` 之间必须等待的最短时间。

作为响应， AWS AppConfig 提供`InitialConfigurationToken`给会话的客户端，并在它第一次调`GetLatestConfiguration`用该会话时使用。

**重要**  
此令牌在第一次调用 `GetLatestConfiguration` 时只能使用一次。您*必须*在对 `GetLatestConfiguration` 的每次后续调用中在 `GetLatestConfiguration` 响应 (`NextPollConfigurationToken`) 中使用新令牌。为了支持长时间轮询用例，令牌的有效期最长为 24 小时。如果 `GetLatestConfiguration` 调用使用过期的令牌，系统将返回 `BadRequestException`。

调用 `GetLatestConfiguration` 时，您的客户端代码会发送它所拥有的最新 `ConfigurationToken` 值,并接收响应：
+ `NextPollConfigurationToken`：下次调用 `GetLatestConfiguration` 时要使用的 `ConfigurationToken` 值。
+ `NextPollIntervalInSeconds`：客户端在下次调用 `GetLatestConfiguration` 之前应等待的持续时间。
+ 配置：用于会话的最新数据。如果客户端已有最新版本的配置，则此字段可能为空。

**重要**  
请注意以下重要信息。  
每个应用程序、环境、配置文件和客户端只能调用一次 [StartConfigurationSession](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartConfigurationSession.html)API，才能与服务建立会话。这通常在应用程序启动时或首次检索配置之前完成。
如果您的配置是使用 `KmsKeyIdentifier` 部署的，则接收配置的请求必须包含调用 `kms:Decrypt` 的权限。有关更多信息，请参阅 *AWS Key Management Service API 参考* 中的 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)。
以前用于检索配置数据的 API 操作 `GetConfiguration` 已弃用。`GetConfiguration` API 接口不支持加密配置。

## （示例）通过调用 AWS AppConfig API 检索配置
<a name="appconfig-retrieving-the-configuration-example"></a>

以下 AWS CLI 示例演示如何使用数据`StartConfigurationSession`和 `GetLatestConfiguration` API 操作检索配置 AWS AppConfig 数据。第一个命令启动配置会话。此调用包括 AWS AppConfig 应用程序、环境和配置文件的 ID（或名称）。API 返回用于获取配置数据的 `InitialConfigurationToken`。

```
aws appconfigdata start-configuration-session \
    --application-identifier {{application_name_or_ID}} \
    --environment-identifier {{environment_name_or_ID}} \
    --configuration-profile-identifier {{configuration_profile_name_or_ID}}
```

系统使用以下格式的信息进行响应。

```
{
   "InitialConfigurationToken": {{initial configuration token}}
}
```

启动会话后，[InitialConfigurationToken](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartConfigurationSession.html#API_appconfigdata_StartConfigurationSession_ResponseSyntax)使用调[GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html)用获取您的配置数据。配置数据将保存到 `mydata.json` 文件中。

```
aws appconfigdata get-latest-configuration \
    --configuration-token {{initial configuration token}} mydata.json
```

对 `GetLatestConfiguration` 的第一次调用使用从 `StartConfigurationSession` 获取的 `ConfigurationToken`。返回信息如下。

```
{
    "NextPollConfigurationToken" : {{next configuration token}},
    "ContentType" : {{content type of configuration}},
    "NextPollIntervalInSeconds" : {{60}}
}
```

对 `GetLatestConfiguration` 的后续调用*必须*提供上一个响应的 `NextPollConfigurationToken`。

```
aws appconfigdata get-latest-configuration \
    --configuration-token {{next configuration token}} mydata.json
```

**重要**  
请注意有关 `GetLatestConfiguration` API 操作的以下重要详细信息：  
`GetLatestConfiguration` 响应包括显示配置数据的 `Configuration` 部分。仅当系统找到新的或更新的配置数据时，才会显示 `Configuration` 部分。如果系统找不到新的或更新的配置数据，则 `Configuration` 数据为空。
在来自 `GetLatestConfiguration` 的每个响应中，您都会收到一个新的 `ConfigurationToken`。
我们建议您根据预算、配置部署的预期频率以及配置目标数以调整 `GetLatestConfiguration` API 调用的轮询频率。