ECR のタグ削除
aws ecr batch-delete-image コマンドで --image-ids imageTag=[タグ名] を指定すると、タグのみを削除する。イメージ本体(マニフェスト)は、削除したタグが最後のタグでない限り残る。最後のタグを削除した場合はマニフェストも削除される。
$ aws ecr batch-delete-image \
--repository-name [リポジトリ名] \
--image-ids imageTag=latest
イメージ本体ごと削除したい場合は imageDigest を指定する。
$ aws ecr batch-delete-image \
--repository-name [リポジトリ名] \
--image-ids imageDigest=sha256:[ダイジェスト値]
pull through cache の更新間隔
ECR pull through cacheはキャッシュされたイメージをアップストリームのレジストリと 24時間に1回 同期する。latest のような可変タグを使っている場合、アップストリームで更新されても24時間以内は古いイメージがキャッシュされたままになる。
タグを削除してキャッシュを強制更新する
24時間を待たずにキャッシュを更新するには、キャッシュされたタグを削除する。次回 docker pull 時にECRがアップストリームから最新イメージを取得する。
# キャッシュされたタグを削除する
$ aws ecr batch-delete-image \
--repository-name [リポジトリ名] \
--image-ids imageTag=latest
タグ削除後に docker pull を実行すると、ECRがアップストリームから最新イメージをフェッチしてリポジトリに保存する。
$ docker pull [account-id].dkr.ecr.[region].amazonaws.com/[リポジトリ名]:latest
なお、pull through cacheリポジトリでイメージタグの不変性(image tag immutability)を有効にすると、ECRがタグを上書きできなくなるためキャッシュが更新されなくなる。pull through cacheリポジトリはタグをミュータブル(可変)に設定する。
\手を動かしながらTerraformを学びたい人にオススメ!/
