Amazon ECRでイメージを保護する

概要

Amazon ECRでイメージを保護したいが保護のアクションがないので対応策

結論

保護したいイメージの削除期間やイメージの個数を大きな数にする

下のようなJSONにすると

  • vから始まるタグ(v1.1.0など)は1年間削除されない
  • sha-から始めるタグは1日で削除される
  • v1.1.0とsha-xxxxxxxがついていた場合は優先順で365日削除されない

という挙動になる

{
  "rules": [
    {
      "action": {
        "type": "expire"
      },
      "selection": {
        "countType": "sinceImagePushed",
        "countUnit": "days",
        "countNumber": 365,
        "tagStatus": "tagged",
        "tagPrefixList": [
          "v"
        ]
      },
      "description": "keep released images",
      "rulePriority": 1
    },
    {
      "action": {
        "type": "expire"
      },
      "selection": {
        "countType": "sinceImagePushed",
        "countUnit": "days",
        "countNumber": 1,
        "tagStatus": "tagged",
        "tagPrefixList": [
          "sha-"
        ]
      },
      "description": "remove development images",
      "rulePriority": 2
    }
  ]
}

参考

GCPとAzureにはあった。

https://cloud.google.com/artifact-registry/docs/repositories/cleanup-policy#create

https://learn.microsoft.com/en-ca/azure/container-registry/container-registry-image-lock#protect-an-image-from-deletion