激活和管理 Lambda SnapStart - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

激活和管理 Lambda SnapStart

要使用 SnapStart,请在新的或现有的 Lambda 函数 SnapStart 上激活。然后,发布并调用一个函数版本。

激活 SnapStart (控制台)

激活某 SnapStart 项功能
  1. 打开 Lamba 控制台的函数页面

  2. 选择一个函数的名称。

  3. 选择 Configuration(配置),然后选择 General configuration(常规配置)。

  4. General configuration(常规配置)窗格上,选择 Edit(编辑)。

  5. “编辑基本设置” 页面上 SnapStart,选择 “已发布版本”。

  6. 选择保存

  7. 发布函数版本。Lambda 会初始化您的代码,创建初始化执行环境的快照,然后缓存快照以实现低延迟访问。

  8. 调用函数版本

激活 SnapStart (Amazon CLI)

SnapStart 为现有功能激活
  1. 通过运行带--snap-start选项的update-function-configuration命令来更新函数配置。

    aws lambda update-function-configuration \ --function-name my-function \ --snap-start ApplyOn=PublishedVersions
  2. 使用 publish-version 发布函数版本。

    aws lambda publish-version \ --function-name my-function
  3. 运行get-function-configuration命令并指定版本号,确认函数版本已激活。 SnapStart 以下示例指定版本 1。

    aws lambda get-function-configuration \ --function-name my-function:1

    如果响应显示OptimizationStatus为,状态OnActive, SnapStart 则表示已激活,并且有指定函数版本的快照可用。

    "SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active",
  4. 通过运行 invoke 命令并指定版本来调用相应的函数版本。以下示例调用版本 1。

    aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:1 \ --payload '{ "name": "Bob" }' \ response.json

    如果使用 cli-binary-format 版本 2,则 Amazon CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 Amazon Command Line Interface 用户指南中的 Amazon CLI 支持的全局命令行选项

在创建新函数 SnapStart 时激活
  1. 通过运行带有 --snap-start 选项的 create-function 命令来创建函数。对于 --role,指定您的执行角色的 Amazon 资源名称(ARN)。

    aws lambda create-function \ --function-name my-function \ --runtime "java21" \ --zip-file fileb://my-function.zip \ --handler my-function.handler \ --role arn:aws:iam::111122223333:role/lambda-ex \ --snap-start ApplyOn=PublishedVersions
  2. 使用 publish-version 命令创建版本。

    aws lambda publish-version \ --function-name my-function
  3. 运行get-function-configuration命令并指定版本号,确认函数版本已激活。 SnapStart 以下示例指定版本 1。

    aws lambda get-function-configuration \ --function-name my-function:1

    如果响应显示OptimizationStatus为,状态OnActive, SnapStart 则表示已激活,并且有指定函数版本的快照可用。

    "SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active",
  4. 通过运行 invoke 命令并指定版本来调用相应的函数版本。以下示例调用版本 1。

    aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:1 \ --payload '{ "name": "Bob" }' \ response.json

    如果使用 cli-binary-format 版本 2,则 Amazon CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 Amazon Command Line Interface 用户指南中的 Amazon CLI 支持的全局命令行选项

激活 SnapStart (API)

要激活 SnapStart
  1. 请执行以下操作之一:

  2. 发布包含PublishVersion操作的函数版本。Lambda 会初始化您的代码,创建初始化执行环境的快照,然后缓存快照以实现低延迟访问。

  3. 使用 SnapStart GetFunctionConfiguration操作确认函数版本已激活。指定版本号以确认该版本 SnapStart 已激活该版本。如果响应显示OptimizationStatus为,状态OnActive, SnapStart 则表示已激活,并且有指定函数版本的快照可用。

    "SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active",
  4. 使用 invoke 操作调用相应函数版本。

Lambda SnapStart 和函数状态

使用时可能会出现以下函数状态 SnapStart。当 Lambda 定期回收执行环境并重新运行配置为的函数的初始化代码时,也会发生这种情况。 SnapStart

  • Pending – Lambda 正在初始化您的代码并为已初始化的执行环境创建快照。在该函数版本上运行的任何调用或其他 API 操作都将失败。

  • Active – 快照创建已完成,您可以调用此函数。要使用 SnapStart,必须调用已发布的函数版本,而不是未发布的版本 ($LATEST)。

  • Inactive – 函数版本已 14 天未被调用。当函数版本变为 Inactive 时,Lambda 会删除快照。如果您在 14 天后调用函数版本,Lambda 会返回 SnapStartNotReadyException 响应并开始初始化新的快照。函数版本达到 Active 状态之后再调用该函数。

  • Failed – Lambda 在运行初始化代码或创建快照时出现错误。

更新快照

Lambda 为每个已发布的函数版本创建快照。若要更新快照,请发布新的函数版本。Lambda 使用最新的运行时和安全补丁自动更新您的快照。

SnapStart 与... 一起使用 Amazon SDK for Java

为了从您的函数调用 Amazon 开发工具包,Lambda 通过代入函数的执行角色来生成一组临时凭证。这些凭证在函数调用期间可用作环境变量。您无需直接在代码中为开发工具包提供凭证。默认情况下,凭证提供程序链会按顺序检查每个可以设置凭证的位置,然后选择第一个可用位置,通常是环境变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN)。

注意

激活后 SnapStart ,Java 运行时会自动使用容器凭证(AWS_CONTAINER_CREDENTIALS_FULL_URIAWS_CONTAINER_AUTHORIZATION_TOKEN),而不是访问密钥环境变量。这样可以防止凭证在函数还原之前过期。

SnapStart 与Amazon CloudFormationAmazon SAM、和 Amazon CDK

  • Amazon CloudFormation:在模板中声明SnapStart实体。

  • Amazon Serverless Application Model(Amazon SAM): 在模板中声明该SnapStart属性。

  • Amazon Cloud Development Kit (Amazon CDK): 使用SnapStartProperty类型。

删除快照

在以下情况下 Lambda 会删除快照:

  • 您删除函数或函数版本。

  • 您在 14 天内未调用该函数版本。14 天未被调用后,函数版本将转换为非活动状态。如果您在 14 天后调用函数版本,Lambda 会返回 SnapStartNotReadyException 响应并开始初始化新的快照。函数版本达到活动状态之后再调用该函数。

Lambda 根据《一般数据保护条例》(GDPR)删除与已删除的快照相关的所有资源。