不使用 Amazon AppConfig 代理检索配置数据
从 Amazon AppConfig 检索配置数据的建议方法是使用 Amazon 开发和管理的 Amazon AppConfig 代理。使用该代理,可以在本地缓存配置数据,并以异步方式轮询 Amazon AppConfig 数据面板服务来获取更新。这种缓存/轮询过程可确保配置数据始终可用于应用程序,同时最大限度地减少延迟和成本。如果您不想使用代理,则可以直接从 Amazon AppConfig 数据面板服务调用公有 API。
数据面板服务使用两个 API 操作:StartConfigurationSession 和 GetLatestConfiguration。数据面板服务还使用 Amazon AppConfig 控制面板中的 separate endpoints。
注意
数据面板服务取代了之前使用 GetConfiguration
API 操作来检索配置数据的过程。GetConfiguration
API 已弃用。
工作方式
以下是使用数据面板服务直接调用 Amazon AppConfig API 的过程的工作原理。
应用程序首先使用 StartConfigurationSession API 操作建立配置会话来检索配置数据。然后,会话的客户端会定期调用 GetLatestConfiguration,以检查和检索最新的可用数据。
在调用 StartConfigurationSession
时,代码发送以下信息:
-
会话跟踪的 Amazon AppConfig 应用程序、环境和配置文件的标识符(ID 或名称)。
-
(可选)会话的客户端在调用至
GetLatestConfiguration
之间必须等待的最短时间。
作为响应,Amazon AppConfig 向会话的客户端提供 InitialConfigurationToken
,并在第一次为该会话调用 GetLatestConfiguration
时使用。
重要
此令牌在第一次调用 GetLatestConfiguration
时只能使用一次。您必须在对 GetLatestConfiguration
的每次后续调用中在 GetLatestConfiguration
响应 (NextPollConfigurationToken
) 中使用新令牌。为了支持长时间轮询用例,令牌的有效期最长为 24 小时。如果 GetLatestConfiguration
调用使用过期的令牌,系统将返回 BadRequestException
。
调用 GetLatestConfiguration
时,您的客户端代码会发送它所拥有的最新 ConfigurationToken
值,并接收响应:
-
NextPollConfigurationToken
:下次调用GetLatestConfiguration
时要使用的ConfigurationToken
值。 -
NextPollIntervalInSeconds
:客户端在下次调用GetLatestConfiguration
之前应等待的持续时间。 -
配置:用于会话的最新数据。如果客户端已有最新版本的配置,则此字段可能为空。
重要
请注意以下重要信息。
-
每个应用程序、环境、配置文件和客户端只能调用一次 StartConfigurationSession API,以建立与服务的会话。这通常在应用程序启动时或首次检索配置之前完成。
-
如果您的配置是使用
KmsKeyIdentifier
部署的,则接收配置的请求必须包含调用kms:Decrypt
的权限。有关更多信息,请参阅 Amazon Key Management Service API 参考 中的 Decrypt。 -
以前用于检索配置数据的 API 操作
GetConfiguration
已弃用。GetConfiguration
API 接口不支持加密配置。
(示例)通过调用 Amazon AppConfig API 来检索配置
以下 Amazon CLI 示例演示如何使用 Amazon AppConfig 数据 StartConfigurationSession
和 GetLatestConfiguration
API 操作检索配置数据。第一个命令启动配置会话。该调用包括 Amazon AppConfig 应用程序、环境和配置文件的 ID(或名称)。API 返回用于获取配置数据的 InitialConfigurationToken
。
aws appconfigdata start-configuration-session \ --application-identifier
application_name_or_ID
\ --environment-identifierenvironment_name_or_ID
\ --configuration-profile-identifierconfiguration_profile_name_or_ID
系统使用以下格式的信息进行响应。
{ "InitialConfigurationToken":
initial configuration token
}
启动会话后,使用 InitialConfigurationToken 调用 GetLatestConfiguration 来提取配置数据。配置数据将保存到 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 调用的轮询频率。