如何使用aws cli获取最新版本的s3对象?

时间:2018-06-13 21:34:02

标签: amazon-web-services amazon-s3 aws-cli

使用AWS CLI,如何输出S3对象的最新VersionId字符串?

3 个答案:

答案 0 :(得分:2)

简化@ rynop的命令:

aws s3api list-object-versions --bucket us-east-1--aws-blueprint.mydomain.com --prefix my/object/key.ext --query 'Versions[?IsLatest].[VersionId]' --output text

答案 1 :(得分:1)

还有一个获取最新S3对象versionId的选项。

要获取它,您只需使用aws s3api put-object-tagging命令将标签设置为该对象。该操作的输出仅是最新的对象versionId。默认情况下,它以JSON形式返回,但是使用--output text选项,您将仅以返回的字符串形式获得它。

示例:

 $ VERSION_ID=$(aws s3api put-object-tagging --bucket bucket-name --key code.zip --tagging 'TagSet=[{Key=Lambda,Value=golang}]' --output text)
 $ echo $VERSION_ID
 6ubT3rNptpcZNGxEA6Cj2kAastuCyNL1

我相信这是实现它的最好方法。 listObjectVersions的风险在于您可能有超过分页限制,然后您将不得不从“ NextToken”值中再次调用它。但是使用put-object-tagging是此用例的可靠解决方案。另外,您还可以获得存储在对象上的更多详细信息。

在我的项目中,我保留有关负责lambda的团队,ZIP的代码运行时和项目存储库名称的详细信息。因此有人发现存储桶中的ZIP很容易获得此类详细信息。

答案 2 :(得分:0)

aws s3api list-object-versions --bucket aws-blueprint.mybucket.com --prefix nested-stacks/apig/single-lambda-proxy-with-CORS.yaml | jq -r '.Versions[] | select(.IsLatest == true) | .VersionId'

输出如下: o65j.nFiJ00D25lNPyzsbJ7rWktOoKmS