ライフサイクルポリシー
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 つ以上作成します。
-
テストルールを保存し、プレビューを実行します。
-
ライフサイクルポリシーエバリュエーターは、すべてのルールを評価し、各ルールが影響するイメージにマークを付けます。
-
次に、ライフサイクルポリシーエバリュエーターは、ルールの優先度に基づいてルールを適用し、リポジトリ内で有効期限切れに設定されるイメージを表示します。
-
テストの結果を確認し、有効期限切れとマークされたイメージが意図したとおりのものであることを確認します。
-
テストルールをリポジトリのライフサイクルポリシーとして適用します。
-
ライフサイクルポリシーを作成すると、影響を受けるイメージが 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
パラメータは、tagStatus
が tagged
の場合のみ使用されます。countUnit
パラメータは、countType
が sinceImagePushed
の場合のみ使用されます。
ライフサイクルポリシーのパラメータ
ライフサイクルポリシーは、次の部分に分けられます。
ルールの優先順位
rulePriority
-
タイプ: 整数
必須: はい
ルールを適用する順序を低いものから高いものの順に設定します。優先順位が
1
のライフサイクルポリシールールが最初に適用され、次に優先順位2
のルールという風に優先順位に従って適用されます。ライフサイクルポリシーにルールを追加するときは、それぞれにrulePriority
の一意の値を付ける必要があります。ポリシー内のルール間で値が連続している必要はありません。any
のtagStatus
を持つルールは、rulePriority
の最大値を持ち、最後に評価される必要があります。
説明
description
-
型: 文字列
必須: いいえ
(オプション) ライフサイクルポリシー内のルールの目的について説明します。
タグステータス
tagStatus
-
型: 文字列
必須: はい
追加するライフサイクルポリシーのルールがイメージのタグを指定するかどうかを決定します。使用できるオプションは、
tagged
、untagged
、またはany
です。any
を指定する場合は、すべてのイメージに対してルールが評価されます。tagged
を指定する場合は、tagPrefixList
値も指定する必要があります。untagged
を指定する場合は、tagPrefixList
を省略する必要があります。
タグプレフィックスリスト
tagPrefixList
-
タイプ: list[string]
必須:
tagStatus
が [tagged] に設定されている場合のみ、必須"tagStatus": "tagged"
を指定した場合にのみ使用されます。ライフサイクルポリシーでアクションを実行するための、カンマ区切りのイメージタグプレフィックスのリストを指定する必要があります。たとえば、イメージにprod
、prod1
、prod2
というようにタグが付いている場合、すべてを指定するためにタグプレフィックスprod
を使用します。複数のタグを指定する場合、指定されたすべてのタグが付いているイメージのみが選択されます。
カウントタイプ
countType
-
型: 文字列
必須: はい
イメージに適用するカウントタイプを指定します。
countType
がimageCountMoreThan
に設定してある場合は、countNumber
も指定して、リポジトリに存在するイメージ数の制限を設定するルールを作成します。countType
がsinceImagePushed
に設定してある場合は、countUnit
およびcountNumber
も指定して、リポジトリに存在するイメージの時間制限を指定します。
カウント単位
countUnit
-
型: 文字列
必須:
countType
がsinceImagePushed
に設定されている場合のみ、必須日数を表す
countNumber
に加えて、カウント単位のdays
も時間単位として指定します。これを指定するのは
countType
がsinceImagePushed
である場合に限ります。countType
が他の値である場合にカウント単位を指定すると、エラーが発生します。
カウント数
countNumber
-
タイプ: 整数
必須: はい
カウント数を指定します。許容値は正の整数です (
0
は許容値ではありません)。使用している
countType
がimageCountMoreThan
である場合、この値はリポジトリに維持するイメージの最大数です。使用しているcountType
がsinceImagePushed
である場合、この値はイメージの最大期限です。
Action
type
-
型: 文字列
必須: はい
アクションタイプを指定します。サポートされる値は
expire
です。