はじめに
ECRで運用をしていくと溜まってしまうimageですがこれらを世代管理していこうと思います。
また、参考までにECRの費用は '0.10 USD/GB/月' です。
費用を少しでも抑えたいので古いImageはやはり消しておきたいですね!
そして今回使用するツールは ECR の ライフサイクルポリシー
ポリシーは機能は多く複雑なポリシーの作成が可能です。
しかし、それらは[Amazon ECR ライフサイクルポリシー](Amazon 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
うまくヒットしたようです!