添加 Amazon AppConfig 代理 Lambda 扩展 - Amazon AppConfig
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

添加 Amazon AppConfig 代理 Lambda 扩展

要使用 Amazon AppConfig 代理 Lambda 扩展,您需要将该扩展添加到 Lambda 中。这可以通过将 Amazon AppConfig 代理 Lambda 扩展作为一个层添加到您的 Lambda 函数中,或者在 Lambda 函数上启用该扩展作为容器映像来实现。

注意

该 Amazon AppConfig 扩展与运行时无关,且支持所有运行时。

开始前的准备工作

在启用 Amazon AppConfig 代理 Lambda 扩展之前,请执行以下操作:

  • 在 Lambda 函数中组织配置,以便将其外部化为 Amazon AppConfig。

  • 创建 Amazon AppConfig 构件和配置数据,包括功能标志或自由格式配置数据。有关更多信息,请参阅 在 Amazon AppConfig 中创建功能标志和自由格式配置数据

  • appconfig:StartConfigurationSessionappconfig:GetLatestConfiguration 添加到 Lambda 函数执行角色使用的 Amazon Identity and Access Management (IAM) 策略中。有关更多信息,请参阅Amazon Lambda 开发人员指南 中的 Amazon Lambda 执行角色。有关 Amazon AppConfig 权限的更多信息,请参阅《服务授权参考》中的 Amazon AppConfig操作、资源和条件键

使用层和 ARN 添加 Amazon AppConfig 代理 Lambda 扩展

若要使用 Amazon AppConfig 代理 Lambda 扩展,您需要将扩展作为层添加到 Lambda 函数。有关如何向函数添加层的信息,请参阅《Amazon Lambda 开发者指南》中的配置扩展。Amazon Lambda 控制台中扩展的名称为 Amazon-AppConfig-Extension。另请注意,当您将扩展作为层添加到 Lambda 时,您必须指定 Amazon 资源名称(ARN)。从以下列表中选择一个与您创建 Lambda 的平台和 Amazon Web Services 区域 相对应的 ARN。

如果您想在将扩展添加到函数中之前对其进行测试,可以使用以下代码示例来验证其是否有效。

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name' config = urllib.request.urlopen(url).read() return config

要对其进行测试,请为 Python 创建一个新的 Lambda 函数,添加扩展,然后运行 Lambda 函数。运行 Lambda 函数后,Amazon AppConfig Lambda 函数会返回您为 http://localhost:2772 路径指定的配置。有关如何创建 Lambda 函数的信息,请参阅 Amazon Lambda《 Lambda 开发人员指南》中的 使用控制台创建 Lambda 函数

重要

可以在 Amazon Lambda 日志中查看 Amazon AppConfig 代理 Lambda 扩展的日志数据。日志条目以 appconfig agent 开头。以下为示例。

[appconfig agent] 2024/05/07 04:19:01 ERROR retrieve failure for 'SourceEventConfig:SourceEventConfigEnvironment:SourceEventConfigProfile': StartConfigurationSession: api error AccessDenied: User: arn:aws:sts::0123456789:assumed-role/us-east-1-LambdaRole/extension1 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::0123456789:role/test1 (retry in 60s)