【问题标题】:AWS Lambda Create aliasAWS Lambda 创建别名
【发布时间】:2019-07-28 14:19:56
【问题描述】:

根据 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 这样的函数版本吗?

【问题讨论】:

  • “据我了解,此命令基本上将代码部署到最新的 lambda 别名。” 这会将 DEV 别名设置为指向 $LATEST 引用的相同版本命令发出的时间。

标签: jenkins aws-lambda alias


【解决方案1】:

您列出的命令将创建一个名为 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 别名。您的流程将类似于:

  1. 上传新的功能代码。这更新了$LATEST
  2. 发布版本。这会将$LATEST 复制到号码N
  3. 更新 DEV 别名以指向版本 N
  4. 测试并批准更改。
  5. 更新 LIVE 别名以指向版本 N

希望这会有所帮助!

【讨论】:

  • 是的,这很有帮助,抱歉回答晚了。我在感恩节假期,互联网访问受限。
  • 是否可以从控制台更新别名?只能找到“创建新别名”,如果别名相同的话会报错。
  • @Vineeth 我最近没有检查确认,但是从历史上看,我从来没有找到一种方法来更新 Web 控制台中的现有别名。我一直要么删除/重新创建,要么改用 CLI。
【解决方案2】:

只是为了添加到上面的答案,您可能会将 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

【讨论】:

    【解决方案3】:

    回答这个问题 - 是否可以从控制台更新别名? 只能找到“创建新别名”,别名相同会报错。 – Vineeth 2018 年 2 月 16 日在 9:15

    是的,可以从控制台更改 lambda Alias 指向的版本,但它被糟糕的 Lambda UI 很好地隐藏了......

    单击别名下拉菜单,然后选择要更改的别名(例如 Prod)。

    标题为别名的页面底部(隐藏!!!)将更新,并提供一个下拉列表,您可以在其中更改别名描述以及所选别名指向的版本。

    仅当您更改其中一个字段时,才会启用“保存”按钮。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2018-09-19
      • 2022-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 2021-12-30
      • 2018-02-16
      • 2019-02-28
      相关资源
      最近更新 更多