

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon ECR でのライフサイクルポリシーの例
<a name="lifecycle_policy_examples"></a>

以下は、ライフサイクルポリシーの構文を示した例です。

ポリシープロパティの詳細については、「[Amazon ECR でのライフサイクルポリシーのプロパティ](lifecycle_policy_parameters.md)」を参照してください。を使用してライフサイクルポリシーを作成する手順については AWS CLI、「」を参照してください[ライフサイクルポリシーを作成するには (AWS CLI)](lp_creation.md#lp-creation-cli)。

## ライフサイクルポリシーのテンプレート
<a name="lifecycle_policy_syntax"></a>

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

```
{
        "rules": [
            {
                "rulePriority": integer,
                "description": "string",
                "selection": {
                    "tagStatus": "tagged"|"untagged"|"any",
                    "tagPatternList": list<string>,
                    "tagPrefixList": list<string>,
                    "storageClass": "standard"|"archive",
                    "countType": "imageCountMoreThan"|"sinceImagePushed"|"sinceImagePulled"|"sinceImageTransitioned",
                    "countUnit": "string",
                    "countNumber": integer
                },
                "action": {
                    "type": "expire"|"transition",
                    "targetStorageClass": "archive"
                }
            }
        ]
    }
```

## イメージの経過日数によるフィルタリング
<a name="lifecycle_policy_example_age"></a>

次の例は、`prod*` の `tagPatternList` が同様に `14` 日より古いものを使用することにより、`prod` で始まるタグでイメージを有効期限切れにするポリシーのライフサイクルポリシー構文を示しています。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Expire images older than 14 days",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["prod*"],
                "countType": "sinceImagePushed",
                "countUnit": "days",
                "countNumber": 14
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

## 最終プル時刻のフィルタリング
<a name="lifecycle_policy_example_last_pulled"></a>

次の例は、イメージを数`90`日でプルされていないアーカイブストレージに移行するポリシーのライフサイクルポリシー構文を示しています。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Archive images not pulled in 90 days",
            "selection": {
                "tagStatus": "any",
                "countType": "sinceImagePulled",
                "countUnit": "days",
                "countNumber": 90
            },
            "action": {
                "type": "transition",
                "targetStorageClass": "archive"
            }
        }
    ]
}
```

**重要**  
`sinceImagePulled` カウントタイプは `transition`アクションで使用する必要があります。`expire` アクションでは使用できません。プルアクティビティに基づいてイメージを削除するには、まず を使用してアーカイブストレージに移行してから`sinceImagePulled`、 `expire`アクション`sinceImageTransitioned`で を使用してイメージを削除します。イメージは、削除前に少なくとも 90 日間アーカイブストレージに保存する必要があります。

## アーカイブ移行時間のフィルタリング
<a name="lifecycle_policy_example_transitioned"></a>

次の例は、アーカイブストレージに `365`日以上保存されているアーカイブイメージの有効期限が切れるポリシーのライフサイクルポリシー構文を示しています。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Expire images archived for more than 365 days",
            "selection": {
                "tagStatus": "any",
                "storageClass": "archive",
                "countType": "sinceImageTransitioned",
                "countUnit": "days",
                "countNumber": 365
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

**重要**  
`sinceImageTransitioned` カウントタイプは、 `expire`アクションと`archive`ストレージクラスで使用する必要があります。イメージは、削除前に少なくとも 90 日間アーカイブストレージに保存する必要があります。

## イメージ数によるフィルタリング
<a name="lifecycle_policy_example_number"></a>

次の例で、タグ付けされていないイメージを 1 つだけ保持して残りはすべて期限切れにするポリシーのライフサイクルポリシーの構文を示します。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Keep only one untagged image, expire all others",
            "selection": {
                "tagStatus": "untagged",
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

## 複数のルールによるフィルタリング
<a name="lp_example_multiple"></a>

以下は、ライフサイクルポリシーで複数のルールを使用する例です。サンプルのリポジトリとライフサイクルポリシーが結果の説明とともに示されています。

### 例 A
<a name="lp_example_multiple_a"></a>

リポジトリのコンテンツ
+ Image A, Taglist: ["beta-1", "prod-1"], Pushed: 10 days ago
+ Image B, Taglist: ["beta-2", "prod-2"], Pushed: 9 days ago
+ Image C, Taglist: ["beta-3"], Pushed: 8 days ago

ライフサイクルポリシーのテキスト

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Rule 1",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["prod*"],
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        },
        {
            "rulePriority": 2,
            "description": "Rule 2",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["beta*"],
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

このライフサイクルポリシーのロジックは次のようになります。
+ ルール 1 は、`prod` というプレフィックスでタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。イメージ A が期限切れとしてマークされます。
+ ルール 2 は、`beta` というプレフィックスでタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。イメージ A とイメージ B の両方が期限切れとしてマークされます。ただし、イメージ A はルール 1 ですでに確認されていて、もしイメージ B が期限切れであれば、ルール 1 に違反してしまうので、スキップされます。
+ 結果: イメージ A は期限切れです。

### 例 B
<a name="lp_example_multiple_b"></a>

これは前の例と同じリポジトリですが、結果を説明するためにルールの優先順位が変更されています。

リポジトリのコンテンツ
+ Image A, Taglist: ["beta-1", "prod-1"], Pushed: 10 days ago
+ Image B, Taglist: ["beta-2", "prod-2"], Pushed: 9 days ago
+ Image C, Taglist: ["beta-3"], Pushed: 8 days ago

ライフサイクルポリシーのテキスト

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Rule 1",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["beta*"],
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        },
        {
            "rulePriority": 2,
            "description": "Rule 2",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["prod*"],
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

このライフサイクルポリシーのロジックは次のようになります。
+ ルール 1 は、`beta` というプレフィックスでタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。3 つのすべてのイメージが確認され、イメージ A とイメージ B が期限切れとしてマークされます。
+ ルール 2 は、`prod` というプレフィックスでタグ付けされたイメージを特定します。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。今回は、使用可能なイメージはすべてルール 1 で確認済みのため、確認できるイメージがありません。そのため、追加でイメージをマークすることはありません。
+ 結果: イメージ A と B は期限切れです。

## 単一のルールで複数のタグをフィルタリングする
<a name="lp_example_difftype"></a>

次の例で、1 つのルールでの複数のタグパターンのライフサイクルポリシーの構文を指定します。サンプルのリポジトリとライフサイクルポリシーが結果の説明とともに示されています。

### 例 A
<a name="lp_example_difftype_a"></a>

1 つのルールで複数のタグパターンが指定されたときは、イメージはすべてのリストされたタグパターンに一致する必要があります。

リポジトリのコンテンツ
+ Image A, Taglist: ["alpha-1"], Pushed: 12 days ago
+ Image B, Taglist: ["beta-1"], Pushed: 11 days ago
+ Image C, Taglist: ["alpha-2", "beta-2"], Pushed: 10 days ago
+ Image D, Taglist: ["alpha-3"], Pushed: 4 days ago
+ Image E, Taglist: ["beta-3"], Pushed: 3 days ago
+ Image F, Taglist: ["alpha-4", "beta-4"], Pushed: 2 days ago

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Rule 1",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["alpha*", "beta*"],
                "countType": "sinceImagePushed",
                "countNumber": 5,
                "countUnit": "days"
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

このライフサイクルポリシーのロジックは次のようになります。
+ ルール 1 は、`alpha` と `beta` というプレフィックスでタグ付けされたイメージを特定します。イメージ C と F が確認されます。5 日より古いイメージをマークするので、イメージ C がマークされます。
+ 結果: イメージ C は期限切れです。

### 例 B
<a name="lp_example_difftype_b"></a>

次の例では、タグは排他的ではないことを説明します。

リポジトリのコンテンツ
+ Image A, Taglist: ["alpha-1", "beta-1", "gamma-1"], Pushed: 10 days ago
+ Image B, Taglist: ["alpha-2", "beta-2"], Pushed: 9 days ago
+ Image C, Taglist: ["alpha-3", "beta-3", "gamma-2"], Pushed: 8 days ago

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Rule 1",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["alpha*", "beta*"],
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

このライフサイクルポリシーのロジックは次のようになります。
+ ルール 1 は、`alpha` と `beta` というプレフィックスでタグ付けされたイメージを特定します。すべてのイメージが確認されます。最も古いイメージから始めて、一致するイメージが 1 つか数個になるまでマークし続けます。イメージ A と B が期限切れとしてマークされます。
+ 結果: イメージ A と B は期限切れです。

## すべてのイメージでのフィルタリング
<a name="lp_example_allimages"></a>

次のライフサイクルポリシーの例では、異なるフィルタですべてのイメージを指定します。サンプルのリポジトリとライフサイクルポリシーが結果の説明とともに示されています。

### 例 A
<a name="lp_example_difftype_a"></a>

次に、すべてのルールを適用する一方、イメージを 1 つだけ保持して残りはすべて期限切れにするポリシーのライフサイクルポリシーの構文を示します。

リポジトリのコンテンツ
+ Image A, Taglist: ["alpha-1"], Pushed: 4 days ago
+ Image B, Taglist: ["beta-1"], Pushed: 3 days ago
+ Image C, Taglist: [], Pushed: 2 days ago
+ Image D, Taglist: ["alpha-2"], Pushed: 1 day ago

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Rule 1",
            "selection": {
                "tagStatus": "any",
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

このライフサイクルポリシーのロジックは次のようになります。
+ ルール 1 は、すべてのイメージを特定します。イメージ A、B、C、D が確認されます。最も新しいもの以外のすべてのイメージが期限切れとされます。イメージ A、B、C が期限切れとしてマークされます。
+ 結果: イメージ A、B、C は期限切れです。

### 例 B
<a name="lp_example_difftype_b"></a>

以下の例は、単一のポリシーのすべてのルールのタイプを組み合わせるライフサイクルポリシーを示しています。

リポジトリのコンテンツ
+ Image A, Taglist: ["alpha-", "beta-1", "-1"], Pushed: 4 days ago
+ Image B, Taglist: [], Pushed: 3 days ago
+ Image C, Taglist: ["alpha-2"], Pushed: 2 days ago
+ Image D, Taglist: ["git hash"], Pushed: 1 day ago
+ Image E, Taglist: [], Pushed: 1 day ago

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Rule 1",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["alpha*"],
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        },
        {
            "rulePriority": 2,
            "description": "Rule 2",
            "selection": {
                "tagStatus": "untagged",
                "countType": "sinceImagePushed",
                "countUnit": "days",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        },
        {
            "rulePriority": 3,
            "description": "Rule 3",
            "selection": {
                "tagStatus": "any",
                "countType": "imageCountMoreThan",
                "countNumber": 1
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```

このライフサイクルポリシーのロジックは次のようになります。
+ ルール 1 は、`alpha` というプレフィックスでタグ付けされたイメージを特定します。イメージ A と C を識別します。最も新しいイメージを保持し、残りは期限切れとしてマークされます。イメージ A が期限切れとしてマークされます。
+ ルール 2 は、タグ付けされていないイメージを特定します。イメージ B と E を識別します。有効期限が 1 日より古いすべてのイメージがマークされます。イメージ B が期限切れとしてマークされます。
+ ルール 3 は、すべてのイメージを特定します。イメージ A、B、C、D、E を識別します。最も新しいイメージを保持し、残りは期限切れとしてマークされます。ただし、優先度がより高いルールにより識別されるため、イメージ A、B、C、または E をマークすることはできません。イメージ D が期限切れとしてマークされます。
+ 結果: イメージ A、B、D は期限切れです。

## アーカイブの例
<a name="lp_example_archive"></a>

次の例は、イメージを削除する代わりにアーカイブするライフサイクルポリシーを示しています。

### 指定した日数より古いイメージのアーカイブ
<a name="lp_example_archive_age"></a>

次の例は、30 日以上経過した で始まるタグを持つイメージ`prod`をアーカイブするライフサイクルポリシーを示しています。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Archive production images older than 30 days",
            "selection": {
                "tagStatus": "tagged",
                "tagPatternList": ["prod*"],
                "countType": "sinceImagePushed",
                "countUnit": "days",
                "countNumber": 30
            },
            "action": {
                "type": "transition",
                "targetStorageClass": "archive"
            }
        }
    ]
}
```

### 指定された日数内にプルされないイメージのアーカイブ
<a name="lp_example_archive_pull"></a>

次の例は、90 日以内にプルされていないイメージをアーカイブするライフサイクルポリシーを示しています。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Archive images not pulled in 90 days",
            "selection": {
                "tagStatus": "any",
                "countType": "sinceImagePulled",
                "countUnit": "days",
                "countNumber": 90
            },
            "action": {
                "type": "transition",
                "targetStorageClass": "archive"
            }
        }
    ]
}
```

### アーカイブルールと有効期限ルールの組み合わせ
<a name="lp_example_archive_delete"></a>

次の例は、30 日以上経過したイメージをアーカイブし、365 日以上アーカイブされたイメージを完全に期限切れにするライフサイクルポリシーを示しています。

**注記**  
アーカイブされたイメージの最小ストレージ期間は 90 日間です。アーカイブに 90 日未満のイメージを削除するライフサイクルポリシーを設定することはできません。アーカイブ期間が 90 日未満のイメージを削除する必要がある場合は、 **batch-delete-image** API を使用する必要がありますが、90 日間の最小ストレージ期間に対して課金されます。

```
{
    "rules": [
        {
            "rulePriority": 1,
            "description": "Archive images older than 30 days",
            "selection": {
                "tagStatus": "any",
                "countType": "sinceImagePushed",
                "countUnit": "days",
                "countNumber": 30
            },
            "action": {
                "type": "transition",
                "targetStorageClass": "archive"
            }
        },
        {
            "rulePriority": 2,
            "description": "Expire images archived for more than 365 days",
            "selection": {
                "tagStatus": "any",
                "storageClass": "archive",
                "countType": "sinceImageTransitioned",
                "countUnit": "days",
                "countNumber": 365
            },
            "action": {
                "type": "expire"
            }
        }
    ]
}
```