docker
ECR
AWS-ECR

ECR ライフサイクルポリシーを利用したImageの自動削除

More than 1 year has passed since last update.


はじめに

ECRで運用をしていくと溜まってしまうimageですがこれらを世代管理していこうと思います。

また、参考までにECRの費用は '0.10 USD/GB/月' です。

費用を少しでも抑えたいので古いImageはやはり消しておきたいですね!

そして今回使用するツールは ECR の ライフサイクルポリシー

image.png

ポリシーは機能は多く複雑なポリシーの作成が可能です。

しかし、それらはAmazon ECR ライフサイクルポリシーをよく読めば作成可能ですが今回、よく使うことが多いであろう一部ポリシー設定例を紹介させていただきます。


削除ポリシーの世代管理概要

タグの有無
世代管理方法


日数


イメージ数


日数


イメージ数


よく使いそうなサンプル


productionタグをつけたimageを10世代だけ残す設定

image.png


productionタグをつけたimageで10日以上経過したものを削除する設定

image.png


latest運用していてタグがないものを指定する場合



10世代だけ残す設定

image.png


10日以上経過したものを削除する設定

image.png


タグ(Tag prefixes)を指定する場合の注意点


tagPrefixList

タイプ: list[string]

必須: tagStatus が [tagged] に設定されている場合のみ、必須

このパラメータは、"tagStatus": "tagged" を指定した場合のみ使用されます。ライフサイクルポリシーでアクションを実行するための、カンマ区切りのイメージタグプレフィックスのリストを指定する必要があります。たとえば、イメージに prod、prod1、prod2 というようにタグが付いている場合、すべてを指定するためにタグプレフィックス prod を使用します。複数のタグを指定する場合、指定されたすべてのタグが付いているイメージのみが選択されます。


ライフサイクルポリシーのパラメータより

実際に以下のように設定して試してみた。

ECRリポジトリ登録Image

api:staging.v1.0.1

api:staging.v1.0.2
api:staging.v1.0.3

こういった場合、ポリシーで指定するタグ名を以下のように指定できます。

staging

Dry Runしてみると・・・

image.png

うまくヒットしたようです!