web-dev-qa-db-ja.com

AWS CLI:ECRリスト画像、最新を取得

AWS CLIを使用し、必要に応じてjqを使用して、特定のリポジトリ内の最新の画像のタグを取得しようとしています。

レポをfooと呼び、最新のイメージにbarのタグが付けられているとしましょう。 barを返すためにどのクエリを使用しますか?

私は限りを得ました

aws ecr list-images --repository-name foo

list-images documentation は、クエリ可能なフィールドとして日付を参照しないことに気付きました。上記を端末に貼り付けると、タグとダイジェストのみのキーペアが表示され、日付は表示されません。

「最新」の画像を取得する方法はまだありますか?常に、返される出力の最初または最後になると思いますか?

9
Alex

describe-images 代わりに。

aws ecr describe-images --repository-name foo 

imagePushedAtを返します。これは、フィルターに使用できるタイムスタンププロパティです。

テストするアカウントの例はありませんが、次のようなものが機能するはずです

aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[*]'

Sortメソッドを使用する別の方法が必要な場合は、以下を確認できます この投稿

21

フレデリックの答えに追加するには、最新のものが必要な場合は、[-1]を使用できます。

aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]'

画像に単一のタグを使用していると仮定します...そうでない場合は、imageTags[*]そして、必要なタグを取得するためにもう少し作業を行います。

5
Brett Green

上記の回答に必要な特殊文字のマイナー追加なしで最新の画像のみを取得するには。

aws ecr describe-images --repository-name foo --query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]' --output text
1
Vinay Gowda

結果をソートする必要なく、次のように、image-idsでimageTag = latestを指定して結果をフィルタリングできます。

aws ecr describe-images --repository-name foo --image-ids imageTag=latest --output text

これは、latestのタグが付けられた最新の画像を含む1つの結果のみを返します。

0
mjlescano