ライフサイクルポリシー - Amazon ECR

ライフサイクルポリシー

Amazon ECR ライフサイクルポリシーを使用すると、プライベートリポジトリ内のイメージのライフサイクル管理をより詳細に制御できます。ライフサイクルポリシーは 1 つまたは複数のルールで、各ルールでは Amazon ECR へのアクションが定義されています。時間やカウント数に基づく有効期限切れのイメージなど、未使用のイメージ自動的にクリーンアップできます。ライフサイクルポリシーの作成後、影響を受けるイメージは 24 時間以内に有効期限切れになります。Amazon ECR がライフサイクルポリシーに基づいてアクションを実行すると、これはイベントとして AWS CloudTrail にキャプチャされます。詳細については、「AWS CloudTrail で Amazon ECR アクションをログに記録する」を参照してください。

ライフサイクルポリシーの機能

ライフサイクルポリシーは、リポジトリ内のどのイメージに有効期限切れにするかを決定する 1 つ以上のルールで構成されています。ライフサイクルポリシーの使用を検討する場合、リポジトリに適用する前に、ライフサイクルポリシーのプレビューでライフサイクルポリシーが有効期限切れになったイメージを確認することが重要です。ライフサイクルポリシーをリポジトリに適用すると、影響を受けるイメージが 24 時間以内に有効期限切れになることが予想されます。Amazon ECR がライフサイクルポリシーに基づいてアクションを実行すると、これはイベントとして AWS CloudTrail にキャプチャされます。詳細については、「AWS CloudTrail で Amazon ECR アクションをログに記録する」を参照してください。

次の図表は、ライフサイクルポリシーのワークフローを示します。


                ライフサイクルポリシーを評価して適用するプロセスを表す図表。
  1. テストルールを 1 つ以上作成します。

  2. テストルールを保存し、プレビューを実行します。

  3. ライフサイクルポリシーエバリュエーターは、すべてのルールを評価し、各ルールが影響するイメージにマークを付けます。

  4. 次に、ライフサイクルポリシーエバリュエーターは、ルールの優先度に基づいてルールを適用し、リポジトリ内で有効期限切れに設定されるイメージを表示します。

  5. テストの結果を確認し、有効期限切れとマークされたイメージが意図したとおりのものであることを確認します。

  6. テストルールをリポジトリのライフサイクルポリシーとして適用します。

  7. ライフサイクルポリシーを作成すると、影響を受けるイメージが 24 時間以内に有効期限切れになります。

ライフサイクルポリシーの評価ルール

ライフサイクルポリシーエバリュエーターは、ライフサイクルポリシーのプレーンテキスト JSON を解析して、すべてのルールを評価し、ルールの優先順位に基づいてリポジトリ内のイメージに適用します。次に、ライフサイクルポリシーエバリュエーターのロジックについて詳しく説明します。例については、「ライフサイクルポリシーの例」を参照してください。

  • 優先順位に関係なく、すべてのルールが同時に評価されます。すべてのルールが評価された後、優先度に基づいてルールが適用されます。

  • イメージは 1 または ゼロのルールで正確に期限切れとなります。

  • ルールのタグ付け要件に一致するイメージは、優先度がより低いルールによって期限切れにはなりません。

  • ルールが、より優先度の高いルールでマークされたイメージをマークすることはありませんが、期限切れになっていないかのように識別されることがあります。

  • 一連のルールには、一意の一連のタグプレフィックスを含める必要があります。

  • タグが付いていないイメージを選択できるのは 1 つのルールのみです。

  • 期限切れは常に pushed_at_time の順に並べられ、より古いイメージが新しいものよりも先に期限切れとなります。

  • tagPrefixList を使用すると、tagPrefixList 値のすべてのタグが、イメージのタグのいずれかに一致した場合、そのイメージがマークされます。

  • countType = imageCountMoreThan では、イメージは期間の新しいものから始めて最も古いものへと pushed_at_time に基づいて順に並べられた後、指定したカウントより大きいイメージはすべて期限切れとなります。

  • countType = sinceImagePushed では、countNumber に基づき、pushed_at_time が指定された日数より古いすべてのイメージは期限切れとなります。

ライフサイクルポリシーのテンプレート

ライフサイクルポリシーのコンテンツは、リポジトリに関連付けられる前に評価されます。以下に示しているのは、ライフサイクルポリシーの JSON 構文テンプレートです。ライフサイクルポリシーの例については、「ライフサイクルポリシーの例」を参照してください。

{ "rules": [ { "rulePriority": integer, "description": "string", "selection": { "tagStatus": "tagged"|"untagged"|"any", "tagPrefixList": list<string>, "countType": "imageCountMoreThan"|"sinceImagePushed", "countUnit": "string", "countNumber": integer }, "action": { "type": "expire" } } ] }
注記

tagPrefixList パラメータは、tagStatustagged の場合のみ使用されます。countUnit パラメータは、countTypesinceImagePushed の場合のみ使用されます。

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

ライフサイクルポリシーは、次の部分に分けられます。

ルールの優先順位

rulePriority

タイプ: 整数

必須: はい

ルールを適用する順序を低いものから高いものの順に設定します。優先順位が 1 のライフサイクルポリシールールが最初に適用され、次に優先順位 2 のルールという風に優先順位に従って適用されます。ライフサイクルポリシーにルールを追加するときは、それぞれに rulePriority の一意の値を付ける必要があります。ポリシー内のルール間で値が連続している必要はありません。anytagStatus を持つルールは、rulePriority の最大値を持ち、最後に評価される必要があります。

説明

description

型: 文字列

必須: いいえ

(オプション) ライフサイクルポリシー内のルールの目的について説明します。

タグステータス

tagStatus

型: 文字列

必須: はい

追加するライフサイクルポリシーのルールがイメージのタグを指定するかどうかを決定します。使用できるオプションは、taggeduntagged、または any です。any を指定する場合は、すべてのイメージに対してルールが評価されます。tagged を指定する場合は、tagPrefixList 値も指定する必要があります。untagged を指定する場合は、tagPrefixList を省略する必要があります。

タグプレフィックスリスト

tagPrefixList

タイプ: list[string]

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

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

カウントタイプ

countType

型: 文字列

必須: はい

イメージに適用するカウントタイプを指定します。

countTypeimageCountMoreThan に設定してある場合は、countNumber も指定して、リポジトリに存在するイメージ数の制限を設定するルールを作成します。countTypesinceImagePushed に設定してある場合は、countUnit および countNumber も指定して、リポジトリに存在するイメージの時間制限を指定します。

カウント単位

countUnit

型: 文字列

必須: countTypesinceImagePushed に設定されている場合のみ、必須

日数を表す countNumber に加えて、カウント単位の days も時間単位として指定します。

これを指定するのは countTypesinceImagePushed である場合に限ります。countType が他の値である場合にカウント単位を指定すると、エラーが発生します。

カウント数

countNumber

タイプ: 整数

必須: はい

カウント数を指定します。許容値は正の整数です (0 は許容値ではありません)。

使用している countTypeimageCountMoreThan である場合、この値はリポジトリに維持するイメージの最大数です。使用している countTypesinceImagePushed である場合、この値はイメージの最大期限です。

Action

type

型: 文字列

必須: はい

アクションタイプを指定します。サポートされる値は expire です。