本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Lambda 部署操作参考
您可以使用 Amazon Lambda 部署操作来管理无服务器部署的应用程序代码部署。您可以部署函数并使用部署策略进行流量部署,如下所示:
-
用于流量转移的 Canary 和线性部署
-
一次性部署
注意
只有 V2 类型的管道支持此操作。
操作类型
-
类别:
Deploy
-
拥有者:
AWS
-
提供方:
Lambda
-
版本:
1
配置参数
- FunctionName
-
必需:是
您在 Lambda 中创建的函数的名称,例如。
MyLambdaFunction
您必须已经创建了一个版本。
- FunctionAlias
-
必需:否
您在 Lambda 中创建的函数的别名是要部署到的函数,例如。
live
操作执行开始时,别名必须存在且后面有一个版本。(这将是回滚目标版本。)如果未提供,则该操作会将源对象部署到
$LATEST
并创建新版本。在此用例中,部署策略和目标版本选项不可用。 - PublishedTargetVersion
-
必需:否
要部署到的所需的 Lambda 函数版本。 FunctionAlias它可以是管道变量或操作级别变量,例如
#{variables.lambdaTargetVersion}
。版本必须在动作执行开始时发布。如果未提供任何输入工件,则为必填项。
- DeployStrategy
-
必填项:否(默认为
AllAtOnce
)确定 Lambda 部署操作用于将流量从原始版本的 Lambda 函数转移到新版本所采用的速率。FunctionAlias可用的部署策略是金丝雀或线性的。可接受的格式:
-
AllAtOnce
-所有流量一次性转移到更新后的 Lambda 函数。
如果未指定,则默认为
AllAtOnce
) -
Canary10Percent5Minutes
-在第一个增量中移动 10% 的流量。其余 90% 部署在五分钟后进行转移。百分比和分钟数的值都可以更改。
-
Linear10PercentEvery1Minute
-每分钟移动 10% 的流量,直到所有流量都转移完毕。百分比和分钟数的值都可以更改。
以下注意事项适用于此字段:
-
最长总等待时间为 2 天。
-
仅在提供时FunctionAlias可用。
-
- 警报
-
必需:否
为 Lambda 部署配置的警报名称的逗号分隔列表。最多可添加 10 个警报。当监控的警报进入警报状态时,操作失败。
下图显示了该操作的 “编辑” 页面示例。

输入构件
-
构件数:
1
-
描述:为支持部署期间的脚本操作而提供的文件(如果有)。
输出构件
-
构件数:
0
-
描述:输出构件不适用于此操作类型。
输出变量
配置后,此操作会生成变量,该变量可由管道中下游操作的操作配置引用。此操作生成的变量可视为输出变量,即使操作没有命名空间也是如此。您可以使用命名空间配置操作,以使这些变量可用于下游操作的配置。
有关更多信息,请参阅 变量参考。
- FunctionVersion
-
已部署的新 Lambda 函数版本。
Lambda 部署操作的服务角色策略权限
CodePipeline 运行操作时, CodePipeline 服务角色需要以下权限,这些权限已适当缩小范围,便于具有最低权限的访问权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementForLambda", "Effect": "Allow", "Action": [ "lambda:GetAlias", "lambda:GetFunctionConfiguration", "lambda:GetProvisionedConcurrencyConfig", "lambda:PublishVersion", "lambda:UpdateAlias", "lambda:UpdateFunctionCode" ], "Resource": [ "arn:aws:lambda:aws:{{customerAccountId}}:function:{{FunctionName}}", "arn:aws:lambda:aws:{{customerAccountId}}:function:{{FunctionName}}:*" ] }, { "Sid": "StatementForCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarms" ], "Resource": [ "arn:aws:cloudwatch:aws:{{customerAccountId}}:alarm:{{AlarmNames}}" ] }, { "Sid": "StatementForLogs1", "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:aws:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}", "arn:aws:logs:aws:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForLogs2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:aws:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:log-stream:*" ] } ] }
操作声明
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
教程:使用 Lambda 函数部署 CodePipeline— 本教程将引导您创建示例 Lambda 函数,您将在其中创建别名和版本,将压缩后的 Lambda 函数添加到源位置,然后在管道中运行 Lambda 操作。