0

基になるイメージ自体を削除せずに、ECR イメージタグを削除できるようにしたいと考えています。ユース ケースは、イメージをプッシュするためだけに使用された一時的なタグであり、マニフェスト リストの一部として参照され、後で削除する必要があります。

画像からタグを削除することがわかりましたが、この場合は役に立ちません。このbatch-delete-image操作では、タグを削除するだけ (画像に複数のタグがある場合) や、タグが 1 つしかない場合に画像自体を削除しようとすることがあります。

そのイメージがマニフェスト リストの一部として参照されている場合、操作は失敗します。

$ aws ecr-public batch-delete-image --region=$REGION --repository-name $REPO --image-ids imageTag=TEMP 
2{
3    "imageIds": [],
4    "failures": [
5        {
6            "imageId": {
7                "imageTag": "TEMP"
8            },
9            "failureCode": "ImageReferencedByManifestList",
10            "failureReason": "Requested image referenced by manifest list: [sha256:f0446c2685b48eedefa1a90085c513ddae548226b087fa3a7ced8f94cf4aff70]"
11        }
12    ]
13}
4

1 に答える 1

0

Amazon サポートに問い合わせたところ、この制限の唯一の回避策は、ランダムな画像を一時タグにプッシュし (私は busybox を使用しました)、次のようにbatch-delete-image操作を使用してタグを削除することであると言われました。

$ docker pull busybox
$ docker tag busybox public.ecr.aws/$REPO:TEMP
$ docker push public.ecr.aws/$REPO:TEMP
$ aws ecr-public batch-delete-image --region=$REGION --repository-name $REPO --image-ids imageTag=TEMP

この状況は、ECR の設計上の欠陥を明らかにしていると思わずにはいられません。なぜなら、マニフェスト リストの参照だけで、イメージをレジストリ内で存続させることができるからです。ECR は、タグをイメージへのスタンドアロン ポインターとしてではなく、イメージのプロパティとして扱うようです。

編集:これについて問題を提出しました: https://github.com/aws/containers-roadmap/issues/1567

于 2021-11-22T11:45:23.813 に答える