Amazon Web Services ブログ

Amazon ECRのライフサイクルポリシーでコンテナイメージのクリーンアップ

本日よりAmazon EC2 Container Registry (Amazon ECR)で利用可能になったライフサイクルポリシーを使うことで、古い又は使われていないイメージを自動的に削除することで、コンテナイメージのレポジトリをきれいに保つことができるようになりました。

Amazon ECRはフルマネージドのDockerコンテナレジストリで、同時に何百ものプルを捌くための典型的なスケールの問題を心配することなく、Dockerコンテナイメージを保存し管理しデプロイすることができます。スケールの意味する所として、Amazon ECRを活発に利用している開発チームはしばしばたくさんのコンテナイメージのバージョンによってレポジトリが埋め尽くされていることを発見することがあります。これは問題になっているコードの変更を探すことを困難にし、不必要なストレージ料金も引き起こします。以前は、レポジトリをクリーンアップするには、手動で古いイメージを削除するのに時間を費やしたり、スクリプトを書いて実行する必要がありました。

今日からライフサイクルポリシーを使うことで、古いコンテナイメージを自動的に削除するためのいくつかのルールを定義することが可能になりました。ルールが実行された時に影響を受けるコンテナイメージを実際にプレビューで確認することも可能です。これによって、レポジトリはより組織化され問題になっているコードのリビジョンを簡単に見つけられ、そしてストレージコストも抑えられます。

それでは、ライフサイクルポリシーがどのように動くかを見てみましょう。

基本的なルール

コンテナを使ってコードをデプロイすることの最も大きい利点の1つは、素早く簡単に過去のバージョンにロールバックできるということです。これにより、リスクを抑えてデプロイすることが可能になります。なぜならば、もし何かおかしかったら、過去のコンテナのバージョンに戻して、失敗したデプロイ以前の状態でアプリケーションを動作させることが簡単にできるからです。多くの人は、数個前のバージョンにロールバックするということはおそらくしないでしょう。もしこういった状況であれば、1つのシンプルなライフサイクルルールとしては、最新の30イメージを保持するというものが考えられます。

最新の30イメージ

ECRレジストリの中から、Dry-Run Lifecycle Rules, Addを選択します。

  • Image Statusには、Untaggedを選択します。
  • Match criteriaでは、Count TypeImage Count More Thanを入力します。
  • Count Numberには30を入力します。
  • Rule actionにはexpireを選択します。

Saveを選択します。どのイメージがクリーンアップされるかを見るには、Save and dry-run rulesを選択します。

もちろん、数による保持ではなく、コンプライアンスの理由で期限によっていくつかのイメージを保持したいチームも存在します。そういった場合には、90日以前のイメージをクリーンアップするという選択もできます。

最新90日分

先程作成したルールを選択し、Editを選びます。パラメータを変更して、タグがついていないイメージを90日だけ保持する様に変更します:

  • Match criteriaでは、Count TypeSince Image Pushedを入力します。
  • Count Numberには90を入力します。
  • Count Unitにはdaysを選択します。

タグ

もちろん90日というのは任意の時間に設定できますが、ある特定の種類のイメージだけもっと長い期間保持するようなポリシーが必要なこともあります。そういった場合で、でも大掃除は続けたいというときには、タグがつけられたイメージだけ削除するというのを検討することも可能です。

こちらのルールのリストは、タグが無いもの、development、staging、そしてproductionなイメージへのルールの例をまとめてみたものです:

  • タグのないイメージは90日以前を削除
  • developmentタグのついたイメージは90日以前を削除
  • stagingタグのついたイメージは180日以前を削除
  • productionタグのついたイメージは1年以前を削除

ご覧頂いた通り、新しいAmazon ECRのライフサイクルポリシーは強力で、必要なイメージだけを保持するのが簡単になり、もう必要のないイメージをクリーンアップしてくれます。この機能は本日よりAmazon ECRが利用可能な全てのリージョンで、追加コスト無しに利用可能です。より詳しい情報は、AWSの技術ドキュメントの中のAmazon ECR Lifecycle Policiesをご覧ください。

— Brent
@brentContained

原文: Clean up Your Container Images with Amazon ECR Lifecycle Policies (翻訳: SA岩永)