Nig*_*out 6 command-line-interface amazon-web-services
如何获取 Lambda 函数的最新发布版本?除了$LATEST,我怎样才能得到结果为“5”
$ aws lambda list-versions-by-function --function-name My_Lambda_Function --query 'Versions[*][Version, FunctionArn]' --output json
[
[
"$LATEST",
"arn:aws:lambda:us-east-2:123456789000:function:My_Lambda_Function:$LATEST"
],
[
"1",
"arn:aws:lambda:us-east-2:123456789000:function:My_Lambda_Function:1"
],
[
"2",
"arn:aws:lambda:us-east-2:123456789000:function:My_Lambda_Function:2"
],
[
"3",
"arn:aws:lambda:us-east-2:123456789000:function:My_Lambda_Function:3"
],
[
"4",
"arn:aws:lambda:us-east-2:123456789000:function:My_Lambda_Function:4"
],
[
"5",
"arn:aws:lambda:us-east-2:123456789000:function:My_Lambda_Function:5"
]
]
Run Code Online (Sandbox Code Playgroud)
Ian*_*Ian 10
我发现GitHub 上的这个帖子很有见地,您可以通过$LATEST几种方式获得最大的非项目,但只有其中一种是正确的:
错误的方式,此命令仅就版本而言是正确的,9因为它将对版本进行字符串比较并确定"9"大于"10":
aws lambda list-versions-by-function --function-name my_lambda \
--query "max_by(Versions, &Version)"
Run Code Online (Sandbox Code Playgroud)
错误的方式,此命令仅就版本50(或任何页面大小)而言才是正确的,因为它只会过滤第一页中返回的结果。
aws lambda list-versions-by-function --function-name my_lambda \
--query "Versions[-1]"
Run Code Online (Sandbox Code Playgroud)
错误的方式,这个命令会在过滤之前考虑所有的结果,但仍然假设它们的顺序是正确的
aws lambda list-versions-by-function --function-name my_lambda \
--no-paginate \
--query "Versions[-1]"
Run Code Online (Sandbox Code Playgroud)
错误的方式,这个命令看起来适合排序,但to_number("$LATEST")返回时会卡住null。
aws lambda list-versions-by-function --function-name my_lambda \
--no-paginate \
--query "max_by(Versions, &to_number(Version))"
Run Code Online (Sandbox Code Playgroud)
错误的方式,这个命令看起来适合排序,但(在我的机器上)不接受文字0.
aws lambda list-versions-by-function --function-name my_lambda \
--no-paginate \
--query "max_by(Versions, &to_number(Version) || '0')"
Run Code Online (Sandbox Code Playgroud)
正确的方法是,此命令将在考虑所有结果之前获取所有结果,并通过两次转换为数字来解决数字文字的问题。
aws lambda list-versions-by-function --function-name my_lambda \
--no-paginate \
--query "max_by(Versions, &to_number(to_number(Version) || '0'))"
Run Code Online (Sandbox Code Playgroud)
您可以使用获取所有版本list-versions-by-function,然后使用jq提取倒数第二个版本
aws lambda list-versions-by-function --function-name LogsToElasticsearch_goabode --max-items 5 \
--query 'Versions[*].[Version,FunctionName]' | jq '.[-1]'
Run Code Online (Sandbox Code Playgroud)
或者获取所有名称
aws lambda list-versions-by-function --function-name my_lambda \
--max-items 5 --query 'Versions[*].[Version,FunctionName]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2495 次 |
| 最近记录: |