0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECRライフサイクルルールで「意図せず削除」を防ぐための注意点まとめ(ワイルドカード・日数・アーカイブ)

Posted at

はじめに

Amazon ECRのライフサイクルルールを設定する際「どの項目をどういった値にするとどんな判定がされるのか」「and? or?」などで混乱することがあります。
テストルールを作成してプレビューすることもできますが、そのためにはある程度散乱したイメージファイルが溜まっていないと期待に見合った境界値設定ができているのか確認できません。
ここではライフサイクルルールを追加の画面における各種項目値についての注意点をまとめました。

設定単位

  • リポジトリ単位で異なるルールリストを作成できます
  • 逆に言えばリポジトリ単位で作成する必要があります
    • 作成したルールは JSON 形式で確認、コピペ可能です

ルールの優先度

スクリーンショット 2026-01-05 101735.png

  • 必ずしも連番である必要はありません

ルールの説明 - オプション

スクリーンショット 2026-01-05 102622.png

  • 未入力も可

イメージタグのステータス

タグ付き(ワイルドカードマッチング)

ワイルドカードを使ったタグ条件を指定できます

スクリーンショット 2026-01-05 103638.png

  • ワイルドカード * は0文字以上の文字に一致します
    • 例)
      • prod* とした場合の適用例: prod prod1 repo-production など
  • ? (任意の1文字)は使えません
  • 複数の条件を組み合わせることも可能です
    • 上記例では ver*.*.0 *-develop の2つのタグがイメージを条件としています

or ではなく and 条件となります
「両方のタグが付いている単一のイメージ」が対象になります。「どっちかのタグがあれば対象(or)」ではないため、orにしたい場合はルール自体を2つに分ける必要があります。

タグ付き(プレフィックスマッチング)

先頭文字列を使ったタグ条件を指定できます

スクリーンショット 2026-01-05 105230.png

  • こちらも複数の条件を組み合わせることも可能です

or ではなく and 条件となる点はワイルドカードマッチングと同じです

1つのイメージファイルに単一のタグしか付けていない運用の場合は
プレフィックスマッチングで2つ以上のフィルターを指定することはないかと思います

タグなし

現時点でタグがついていないことを条件として指定できます

スクリーンショット 2026-01-05 110306.png

すべて

全てです。タグが付いていようがいまいが対象とします

スクリーンショット 2026-01-05 110525.png

一致条件

イメージが作成されてから経過した日数

スクリーンショット 2026-01-05 111022.png

最後に記録されたプル時刻から経過した日数

スクリーンショット 2026-01-05 111322.png

こちらの条件を使った場合、ルールアクションとして「失効」させることはできません

一度もプルされていないイメージ(「最後にプルされた時刻」が「-」)でも対象とされました。
その場合は「プッシュされた日時」を基準値として利用しているようです。

イメージがアーカイブされてから経過した日数

スクリーンショット 2026-01-05 114213.png

こちらの条件を使った場合、ルールアクションとして「アーカイブ」させることはできません。そりゃそう。

90 日以上の数値でなければ登録できません

アクションまでの日数

JSON を直接編集するなどすれば 90 日未満の日数でも保存可能かもしれません。(試してませんが)
但し アーカイブしてから90日以内に削除しても、90日分フルで料金を請求されます。

これはAWSのストレージサービス(S3 Glacierなど)でよく見られる仕様で、アーカイブストレージの単価を安く設定している代わりにすぐに消されると採算が取れないため、このようなルールが設けられています。

具体例でシミュレーション

ケースA:アーカイブして100日で削除
  • 100日間分のストレージ料金が請求されます
    • 実日数分なので損はありません
ケースB:アーカイブして30日で削除
  • 30日間分の料金だけでなく、残りの60日間分も「早期削除料金」として請求されます
    • 結果として 90日間ずっと置いておいたのと同じ金額を支払うことになります

イメージ数

スクリーンショット 2026-01-05 115226.png

タグステータスで絞り込んだリストを「プッシュされた日時」降順に並び替えた結果、指定値を超えたファイルが対象となります

ルールアクション

スクリーンショット 2026-01-05 115829.png

が失効

イメージを削除します

をアーカイブ

イメージをアーカイブストレージクラスに移動します

アーカイブストレージとは?

ECRにはこれまで1種類の保存場所(標準)しかありませんでしたが、現在は2つの「階層(クラス)」を使い分けることができます。

ストレージクラス 特徴 コスト 用途
標準 (Standard) すぐにプル(取得)できる 高め 開発中、本番稼働中のイメージ
アーカイブ (Archive) プルする前に「復元」が必要 約1/10と格安 監査用、バックアップ用、古い年月タグ

ライフサイクルルールで action に「アーカイブ(Archive)」を指定すると、イメージは以下のような状態になります。

  1. 直接プルできなくなる
    • docker pull しようとしてもエラーになります
  2. 復元(Restore)が必要
    • 再び使うには、マネジメントコンソール等から「復元」リクエストを出し、数時間待つ必要があります
  3. ストレージ料金が激減する
    • 保管料が大幅に安くなります
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?