AWS Lambda 创建别名
AWS Lambda Create alias
根据 AWS 文档,我可以创建一个新的 lambda 函数别名,例如:
aws lambda create-alias \
--region us-west-2 \
--function-name helloworld \
--description "sample alias" \
--function-version "$LATEST" \
--name DEV \
--profile adminuser
据我了解,此命令主要是将代码部署到最新的 lambda 别名。所以我相信它会在我部署后立即激活。但我会在让它上线之前对其进行测试。我的问题是,将它置于中间阶段以便它可以等到我的 Jenkins 测试完成然后激活它的最简单方法是什么?我应该创建另一个功能版本,如 $PRE_LATEST 左右吗?
您列出的命令将创建一个名为 DEV
的别名,它指向 $LATEST
Lambda 代码。您可以将 $LATEST
视为一个特殊的别名,它始终指向最近上传的函数代码。这意味着如果您为 Lambda 上传新的函数代码,DEV
现在将指向那个位置,而不是您 运行 create-alias
命令时的位置。这通常不是我们想要的。
如果您想为特定版本的 Lambda 创建别名,您需要先发布一个版本:
$ aws lambda publish-version --function-name helloworld
此命令将从其当前 $LATEST
状态创建 helloworld
Lambda 函数的编号版本。该命令的输出将是一些 JSON,其中包括一个版本号字符串,例如:"Version": "2",
.
然后您可以使用创建指向此特定版本的别名:
$ aws lambda create-alias --function-name helloworld --name DEV --function-version 2
以后上传新的函数代码时,别名和版本都不会改变。事实上,Lambda 的版本 2
永远不会改变。别名 DEV
可以稍后更新以指向您已发布的不同版本:
$ aws lambda update-alias --function-name helloworld --name DEV --function-version 3
对于您的用例,如果您想将功能代码上传到 Lambda 并在上线之前对其进行测试,我建议您创建一个 LIVE
别名供您的生产服务使用。您的流程将类似于:
- 上传新的功能代码。这会更新
$LATEST
.
- 发布版本。这会将
$LATEST
复制到数字 N
。
- 更新
DEV
别名以指向版本 N
。
- 测试并批准更改。
- 更新
LIVE
别名以指向版本 N
。
希望对您有所帮助!
为了补充上述答案,您可能会将 zip 文件与所有依赖项一起上传到 lambda,然后发布新版本,然后使用现有别名映射该版本。
编写了一个快速 shell 脚本来执行此操作
# Remove zip file if already exit
rm index.zip
# Creating zip file
zip -r index.zip *
# Update lambda function, assuming the name of the current directory is same as the lambda function
lambdaName=${PWD##*/}
aws lambda update-function-code --function-name $lambdaName --zip-file fileb://index.zip
# Publish version
aws lambda publish-version --function-name $lambdaName
# Get latest version
version=$(aws lambda publish-version --function-name $lambdaName --description "updated via cli" --query Version | bc)
# Map alias to latest version this can be LIVE or TEST as per the above answer
aws lambda update-alias --function-name $lambdaName \--function-version $version --name TEST|LIVE
回答问题-
是否可以从控制台更新别名? 只能找到 "Create new Alias" ,并且它会在相同的别名上抛出错误。 – Vineeth 2018 年 2 月 16 日在 9:15
是的,可以从控制台更改 lambda 别名指向的版本,但它被糟糕的 Lambda 隐藏得很好 UI...
点击“别名”下拉菜单,然后select您要更改的别名(例如 Prod)。
底部(隐藏!!!)标题为别名的一半页面将更新,并为您提供一个下拉列表,您可以在其中更改别名描述以及 selected 别名指向的版本.
只有当您更改这些字段之一时,才会启用“保存”按钮。
根据 AWS 文档,我可以创建一个新的 lambda 函数别名,例如:
aws lambda create-alias \
--region us-west-2 \
--function-name helloworld \
--description "sample alias" \
--function-version "$LATEST" \
--name DEV \
--profile adminuser
据我了解,此命令主要是将代码部署到最新的 lambda 别名。所以我相信它会在我部署后立即激活。但我会在让它上线之前对其进行测试。我的问题是,将它置于中间阶段以便它可以等到我的 Jenkins 测试完成然后激活它的最简单方法是什么?我应该创建另一个功能版本,如 $PRE_LATEST 左右吗?
您列出的命令将创建一个名为 DEV
的别名,它指向 $LATEST
Lambda 代码。您可以将 $LATEST
视为一个特殊的别名,它始终指向最近上传的函数代码。这意味着如果您为 Lambda 上传新的函数代码,DEV
现在将指向那个位置,而不是您 运行 create-alias
命令时的位置。这通常不是我们想要的。
如果您想为特定版本的 Lambda 创建别名,您需要先发布一个版本:
$ aws lambda publish-version --function-name helloworld
此命令将从其当前 $LATEST
状态创建 helloworld
Lambda 函数的编号版本。该命令的输出将是一些 JSON,其中包括一个版本号字符串,例如:"Version": "2",
.
然后您可以使用创建指向此特定版本的别名:
$ aws lambda create-alias --function-name helloworld --name DEV --function-version 2
以后上传新的函数代码时,别名和版本都不会改变。事实上,Lambda 的版本 2
永远不会改变。别名 DEV
可以稍后更新以指向您已发布的不同版本:
$ aws lambda update-alias --function-name helloworld --name DEV --function-version 3
对于您的用例,如果您想将功能代码上传到 Lambda 并在上线之前对其进行测试,我建议您创建一个 LIVE
别名供您的生产服务使用。您的流程将类似于:
- 上传新的功能代码。这会更新
$LATEST
. - 发布版本。这会将
$LATEST
复制到数字N
。 - 更新
DEV
别名以指向版本N
。 - 测试并批准更改。
- 更新
LIVE
别名以指向版本N
。
希望对您有所帮助!
为了补充上述答案,您可能会将 zip 文件与所有依赖项一起上传到 lambda,然后发布新版本,然后使用现有别名映射该版本。 编写了一个快速 shell 脚本来执行此操作
# Remove zip file if already exit
rm index.zip
# Creating zip file
zip -r index.zip *
# Update lambda function, assuming the name of the current directory is same as the lambda function
lambdaName=${PWD##*/}
aws lambda update-function-code --function-name $lambdaName --zip-file fileb://index.zip
# Publish version
aws lambda publish-version --function-name $lambdaName
# Get latest version
version=$(aws lambda publish-version --function-name $lambdaName --description "updated via cli" --query Version | bc)
# Map alias to latest version this can be LIVE or TEST as per the above answer
aws lambda update-alias --function-name $lambdaName \--function-version $version --name TEST|LIVE
回答问题- 是否可以从控制台更新别名? 只能找到 "Create new Alias" ,并且它会在相同的别名上抛出错误。 – Vineeth 2018 年 2 月 16 日在 9:15
是的,可以从控制台更改 lambda 别名指向的版本,但它被糟糕的 Lambda 隐藏得很好 UI...
点击“别名”下拉菜单,然后select您要更改的别名(例如 Prod)。
底部(隐藏!!!)标题为别名的一半页面将更新,并为您提供一个下拉列表,您可以在其中更改别名描述以及 selected 别名指向的版本.
只有当您更改这些字段之一时,才会启用“保存”按钮。