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リポジトリはタグをミュータブル(可変)に設定する。