AWS CLIを使用し、必要に応じてjqを使用して、特定のリポジトリ内の最新の画像のタグを取得しようとしています。
レポをfoo
と呼び、最新のイメージにbar
のタグが付けられているとしましょう。 bar
を返すためにどのクエリを使用しますか?
私は限りを得ました
aws ecr list-images --repository-name foo
list-images documentation は、クエリ可能なフィールドとして日付を参照しないことに気付きました。上記を端末に貼り付けると、タグとダイジェストのみのキーペアが表示され、日付は表示されません。
「最新」の画像を取得する方法はまだありますか?常に、返される出力の最初または最後になると思いますか?
describe-images
代わりに。
aws ecr describe-images --repository-name foo
imagePushedAt
を返します。これは、フィルターに使用できるタイムスタンププロパティです。
テストするアカウントの例はありませんが、次のようなものが機能するはずです
aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[*]'
Sortメソッドを使用する別の方法が必要な場合は、以下を確認できます この投稿
フレデリックの答えに追加するには、最新のものが必要な場合は、[-1]を使用できます。
aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]'
画像に単一のタグを使用していると仮定します...そうでない場合は、imageTags[*]
そして、必要なタグを取得するためにもう少し作業を行います。
上記の回答に必要な特殊文字のマイナー追加なしで最新の画像のみを取得するには。
aws ecr describe-images --repository-name foo --query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]' --output text
結果をソートする必要なく、次のように、image-idsでimageTag = latestを指定して結果をフィルタリングできます。
aws ecr describe-images --repository-name foo --image-ids imageTag=latest --output text
これは、latest
のタグが付けられた最新の画像を含む1つの結果のみを返します。