激活和管理 Lambda SnapStart
要使用 SnapStart,请在新的或现有的 Lambda 函数 SnapStart 上激活。然后,发布并调用一个函数版本。
主题
激活 SnapStart (控制台)
激活某 SnapStart 项功能
激活 SnapStart (Amazon CLI)
SnapStart 为现有功能激活
-
通过运行带--snap-start选项的update-function-configuration
命令来更新函数配置。 aws lambda update-function-configuration \ --function-name my-function \ --snap-start ApplyOn=PublishedVersions
-
使用 publish-version
发布函数版本。 aws lambda publish-version \ --function-name my-function
-
运行get-function-configuration
命令并指定版本号,确认函数版本已激活。 SnapStart 以下示例指定版本 1。 aws lambda get-function-configuration \ --function-name my-function:
1
如果响应显示OptimizationStatus为,状态为
On
Active
, SnapStart 则表示已激活,并且有指定函数版本的快照可用。"SnapStart": { "ApplyOn": "PublishedVersions",
"OptimizationStatus": "On"
},"State": "Active"
, -
通过运行 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 时激活
-
通过运行带有 --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 -
使用 publish-version
命令创建版本。 aws lambda publish-version \ --function-name my-function
-
运行get-function-configuration
命令并指定版本号,确认函数版本已激活。 SnapStart 以下示例指定版本 1。 aws lambda get-function-configuration \ --function-name my-function:
1
如果响应显示OptimizationStatus为,状态为
On
Active
, SnapStart 则表示已激活,并且有指定函数版本的快照可用。"SnapStart": { "ApplyOn": "PublishedVersions",
"OptimizationStatus": "On"
},"State": "Active"
, -
通过运行 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
-
请执行以下操作之一:
-
使用带SnapStart参数的 CreateFunctionAPI 操作来创建 SnapStart 激活的新函数。
-
使用带SnapStart参数的UpdateFunctionConfiguration操作激活 SnapStart 现有函数。
-
-
发布包含PublishVersion操作的函数版本。Lambda 会初始化您的代码,创建初始化执行环境的快照,然后缓存快照以实现低延迟访问。
-
使用 SnapStart GetFunctionConfiguration操作确认函数版本已激活。指定版本号以确认该版本 SnapStart 已激活该版本。如果响应显示OptimizationStatus为,状态为
On
Active
, SnapStart 则表示已激活,并且有指定函数版本的快照可用。"SnapStart": { "ApplyOn": "PublishedVersions",
"OptimizationStatus": "On"
},"State": "Active"
, -
使用 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_ID
、AWS_SECRET_ACCESS_KEY
和 AWS_SESSION_TOKEN
)。
注意
激活后 SnapStart ,Java 运行时会自动使用容器凭证(AWS_CONTAINER_CREDENTIALS_FULL_URI
和AWS_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 会删除快照:
Lambda 根据《一般数据保护条例》(GDPR)删除与已删除的快照相关的所有资源。