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


はじめに

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

また、参考までにECRの費用は '0.10 USD/GB/月' です。
費用を少しでも抑えたいので古いImageはやはり消しておきたいですね!

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

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

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

タグの有無 世代管理方法
日数
イメージ数
日数
イメージ数

よく使いそうなサンプル

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

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

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


10世代だけ残す設定

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

タグ(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してみると・・・

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