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

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

Amazon AppConfig与 Lambda 扩展集成

一个Amazon Lambda扩展是一个伴随过程,它增强了 Lambda 函数的功能。扩展可以在调用函数之前启动,与函数并行运行,并在处理函数调用后继续运行。实质上,Lambda 扩展就像一个与 Lambda 调用并行运行的客户端。这个并行客户端可以在函数生命周期的任何时间点与函数进行接口。

如果您使用Amazon AppConfig来管理 Lambda 函数的配置,那么我们建议您添加Amazon AppConfigLambda 扩展 此扩展包括简化使用Amazon AppConfig同时降低成本. 降低了成本,因为减少了对Amazon AppConfig服务,并且通过缩短 Lambda 函数处理时间,单独降低了成本。

本主题包括有关Amazon AppConfigLambda 扩展以及如何将扩展配置为与 Lambda 函数一起使用的过程。有关 Lambda 扩展的更多信息,请参阅Lambda 扩展中的Amazon Lambda开发人员指南

工作原理

如果您使用Amazon AppConfig管理 Lambda 函数的配置WILUTLambda 扩展,则必须将 Lambda 函数配置为与GetConfigurationAPI 操作。调用GetConfiguration您必须创建并传递唯一的客户端 ID 以及与函数中的配置数据相对应的 ClientConfigurationVersion。您还需要设置一种机制,以便在调用函数时定期检查新的配置数据,并管理缓存以便在检查到Amazon AppConfig服务。

集成Amazon AppConfig带有 Lambda 函数的 Lambda 扩展简化了这个过程。下图演示了工作原理。


          一个图表,说明了Amazon AppConfigLambda 扩展的工作原理
  1. 您可以配置Amazon AppConfigLambda 扩展作为 Lambda 函数的层。

  2. 要检索其配置数据,您的函数调用Amazon AppConfig扩展的 HTTP 终端节点上运行localhost:2772

  3. 扩展程序维护配置数据的本地缓存。如果数据不在缓存中,扩展将调用Amazon AppConfig获取配置数据。

  4. 从服务接收配置后,扩展将其存储在本地缓存中并将其传递给 Lambda 函数。

  5. Amazon AppConfigLambda 扩展程序会在后台定期检查配置数据的更新。每次调用 Lambda 函数时,扩展程序都会检查自检索配置以来所用的时间。如果所用时间大于配置的轮询间隔,则分机将调用Amazon AppConfig检查新部署的数据,如果发生更改,则更新本地缓存,并重置已用时间。

注意
  • Lambda 实例化与函数所需的并发级别对应的单独实例。每个实例都是隔离的,并维护其自己的配置数据的本地缓存。有关 Lambda 实例和并发的更多信息,请参阅管理 Lambda 函数的并发

  • 配置更改显示在 Lambda 函数中所花费的时间(从Amazon AppConfig,取决于您用于部署的部署策略以及为扩展配置的轮询间隔。

开始前的准备工作

在启用Amazon AppConfigLambda 扩展,执行以下操作:

  • 在 Lambda 函数中组织配置,以便您可以将它们外部化到Amazon AppConfig。

  • 配置Amazon AppConfig来管理您的配置更新。有关更多信息,请参阅 使用 Amazon AppConfig

  • Addappconfig:GetConfiguration添加到Amazon Identity and Access Management(IAM) 策略由 Lambda 函数执行角色使用。有关更多信息,请参阅 。Amazon Lambda执行角色中的Amazon Lambda开发人员指南。有关 Amazon AppConfig 权限的更多信息,请参阅 为 配置权限Amazon AppConfig

添加Amazon AppConfigLambda 扩展

使用Amazon AppConfigLambda 扩展名,你需要将扩展名添加到你的 Lambda。此操作可以通过添加Amazon AppConfigLambda 扩展到 Lambda 函数作为图层或通过在 Lambda 函数上启用扩展作为容器图像。

使用图层和 ARN 添加Amazon AppConfigLambda 扩展

使用Amazon AppConfigLambda 扩展,请将扩展作为层添加到 Lambda 函数中。有关如何向函数添加层的信息,请参阅配置扩展中的Amazon Lambda开发人员指南。扩展的名称Amazon Lambda控制台为Amazon-应用程序配置扩展。还请注意,当您将扩展作为层添加到 Lambda 时,必须指定 Amazon 资源名称 (ARN)。从以下列表中选择与 Amazon Web Services 区域 在那里你创建了 Lambda。

区域 ARN

美国东部(弗吉尼亚北部)

arn:aws:lambda:us-east-1:027255383542:layer:AWS-AppConfig-Extension:44

美国东部 (俄亥俄)

arn:aws:lambda:us-east-2:728743619870:layer:AWS-AppConfig-Extension:42

美国西部(加利福尼亚北部)

arn:aws:lambda:us-west-1:958113053741:layer:AWS-AppConfig-Extension:37

美国西部(俄勒冈)

arn:aws:lambda:us-west-2:359756378197:layer:AWS-AppConfig-Extension:62

加拿大 (中部)

arn:aws:lambda:ca-central-1:039592058896:layer:AWS-AppConfig-Extension:42

欧洲(法兰克福)

arn:aws:lambda:eu-central-1:066940009817:layer:AWS-AppConfig-Extension:49

欧洲(爱尔兰)

arn:aws:lambda:eu-west-1:434848589818:layer:AWS-AppConfig-Extension:41

欧洲(伦敦)

arn:aws:lambda:eu-west-2:282860088358:layer:AWS-AppConfig-Extension:42

欧洲(巴黎)

arn:aws:lambda:eu-west-3:493207061005:layer:AWS-AppConfig-Extension:43

欧洲(斯德哥尔摩)

arn:aws:lambda:eu-north-1:646970417810:layer:AWS-AppConfig-Extension:61

欧洲(米兰)

arn:aws:lambda:eu-south-1:203683718741:layer:AWS-AppConfig-Extension:39

中国 (北京)

arn:aws-cn:lambda:cn-north-1:615057806174:layer:AWS-AppConfig-Extension:38

中国 (宁夏)

arn:aws-cn:lambda:cn-northwest-1:615084187847:layer:AWS-AppConfig-Extension:38

亚太地区(香港)

arn:aws:lambda:ap-east-1:630222743974:layer:AWS-AppConfig-Extension:39

亚太区域(东京)

arn:aws:lambda:ap-northeast-1:980059726660:layer:AWS-AppConfig-Extension:38

亚太地区(大阪)

arn:aws:lambda:ap-northeast-3:706869817123:layer:AWS-AppConfig-Extension:24

亚太地区 (首尔)

arn:aws:lambda:ap-northeast-2:826293736237:layer:AWS-AppConfig-Extension:49

亚太地区(新加坡)

arn:aws:lambda:ap-southeast-1:421114256042:layer:AWS-AppConfig-Extension:38

亚太地区(悉尼)

arn:aws:lambda:ap-southeast-2:080788657173:layer:AWS-AppConfig-Extension:49

亚太地区 (孟买)

arn:aws:lambda:ap-south-1:554480029851:layer:AWS-AppConfig-Extension:50

南美洲(圣保罗)

arn:aws:lambda:sa-east-1:000010852771:layer:AWS-AppConfig-Extension:44

非洲(开普敦)

arn:aws:lambda:af-south-1:574348263942:layer:AWS-AppConfig-Extension:39

中东(巴林)

arn:aws:lambda:me-south-1:559955524753:layer:AWS-AppConfig-Extension:39

Amazon GovCloud(美国东部)

arn:aws-us-gov:lambda:us-gov-east-1:946561847325:layer:AWS-AppConfig-Extension:15

Amazon GovCloud(美国西部)

arn:aws-us-gov:lambda:us-gov-west-1:946746059096:layer:AWS-AppConfig-Extension:15

注意

这些区域有:Amazon AppConfigLambda 扩展仅在 Amazon Web Services 区域 其中Amazon AppConfig是可用的。

如果要在将扩展添加到函数之前测试扩展,则可以使用以下代码示例验证它是否有效。

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 AppConfigLambda 函数返回您为 http://localhost:2772 路径指定的配置。有关创建 Lambda 函数的信息,请参阅使用控制台创建 Lambda 函数中的Amazon Lambda开发人员指南

若要添加Amazon AppConfigLambda 扩展名作为容器图像,请参阅使用容器图像添加Amazon AppConfigLambda 扩展

配置Amazon AppConfigLambda 扩展

您可以通过以下方式配置扩展Amazon Lambda环境变量。有关更多信息,请参阅 。使用Amazon Lambda环境变量中的Amazon Lambda开发人员指南

环境变量AWS_APPCONFIG_EXTENSION_PREFETCH_LIST可以显著缩短函数的启动时间。当Amazon AppConfigLambda 扩展已初始化,它会从Amazon AppConfig之前 Lambda 开始初始化你的函数并调用你的处理程序。在某些情况下,配置数据在函数请求之前已在本地缓存中可用。

要使用预取功能,请将环境变量的值设置为与您的配置数据对应的路径。例如,如果您的配置对应于分别名为 “my_应用程序”、“my_环境” 和 “my_配置_data” 的应用程序、环境和配置配置文件,则路径将为/applications/my_application/environments/my_environment/configurations/my_configuration_data。您可以通过将多个配置项列为逗号分隔的列表来指定这些项目(如果您的资源名称包含逗号,请使用资源的 ID 值而不是其名称)。

注意

Amazon Lambda记录有关Amazon AppConfigLambda 扩展以及 Lambda 函数通过使用 Amazon CloudWatch Logs。

环境变量 详细信息 默认值

AWS_APPCONFIG_EXTENSION_POLL_INTERVAL_SECONDS

此环境变量控制扩展轮询的频率Amazon AppConfig以获取更新的配置(以秒为单位)。

45

AWS_APPCONFIG_EXTENSION_POLL_TIMEOUT_MILLIS

此环境变量控制扩展等待响应的最大时间量 (以毫秒为单位)Amazon AppConfig刷新缓存中的数据时。如果Amazon AppConfig在指定的时间段内没有响应,则扩展程序会跳过此轮询间隔并返回以前更新的缓存数据。

3000

AWS_APPCONFIG_EXTENSION_HTTP_PORT

此环境变量指定承载扩展的本地 HTTP 服务器在其上运行的端口。

2772

AWS_APPCONFIG_EXTENSION_PREFETCH_LIST

此环境变量指定在函数初始化和处理程序运行之前扩展开始检索的配置数据。它可以显著减少功能的冷启动时间。

AWS_APPCONFIG_EXTENSION_MAX_CONNECTIONS

此环境变量配置扩展用于从Amazon AppConfig。

3

AWS_APPCONFIG_EXTENSION_LOG_LEVEL

此环境变量指定Amazon AppConfig特定于扩展的日志会发送到 Amazon CloudWatch Logs 以获取功能。有效且不区分大小写的值包括:debuginfowarnerror, 和none。调试包括有关扩展的详细信息,包括计时信息。

info