选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

激活和管理 Lambda SnapStart

聚焦模式
激活和管理 Lambda SnapStart - AWS Lambda

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

激活 SnapStart(控制台)

为函数激活 SnapStart
  1. 打开 Lamba 控制台的函数页面

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

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

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

  5. Edit basic settings(编辑基本设置)页面上,为 SnapStart 选择 Published versions(已发布版本)。

  6. 选择保存

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

  8. 调用函数版本

激活 SnapStart(AWS 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

    如果其响应显示 OptimizationStatusOnState(状态)为 Active,则表示 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,则 AWS CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 AWS Command Line Interface 用户指南中的 AWS 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

    如果其响应显示 OptimizationStatusOnState(状态)为 Active,则表示 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,则 AWS CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 AWS Command Line Interface 用户指南中的 AWS CLI 支持的全局命令行选项

激活 SnapStart(API)

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

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

  3. 通过使用 GetFunctionConfiguration 操作确认已为该函数版本激活 SnapStart。指定版本号以确认已为该版本激活 SnapStart。如果其响应显示 OptimizationStatusOnState(状态)为 Active,则表示 SnapStart 已激活,并且已为指定函数版本生成快照。

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

Lambda SnapStart 和函数状态

使用 SnapStart 时可能会出现以下函数状态。

待处理

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

活动

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

非活动

当 Lambda 定期重新生成函数快照以应用软件更新时,就会出现 Inactive 状态。在这种情况下,如果您的函数无法初始化,则该函数可能进入 Inactive 状态。

对于使用 Java 运行时的函数,Lambda 会在 14 天未调用后删除快照。如果您在 14 天后调用函数版本,Lambda 会返回 SnapStartNotReadyException 响应并开始初始化新的快照。函数版本达到 Active 状态之后再调用该函数。

失败

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

更新快照

Lambda 为每个已发布的函数版本创建快照。若要更新快照,请发布新的函数版本。

将 SnapStart 与 AWS SDK 结合使用

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

注意

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

将 SnapStart 与 AWS CloudFormation、AWS SAM 和 AWS CDK 结合使用

  • AWS CloudFormation:在您的模板中声明 SnapStart 实体。

  • AWS Serverless Application Model (AWS SAM):在您的模板中声明 SnapStart 属性。

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

删除快照

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

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

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

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

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。