

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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>

다음 예제는 `14`일보다 오래된 `prod*`의 `tagPatternList`을(를) 사용하여 `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>

다음 예는 태그 없는 이미지 한 개만 유지하고 나머지는 모두 만료시키는 정책에 대한 수명 주기 정책 구문입니다.

```
{
    "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>

리포지토리 컨텐츠:
+ 이미지 A, Taglist: ["beta-1", "prod-1"], 푸시: 10일 전
+ 이미지 B, Taglist: ["beta-2", "prod-2"], 푸시: 9일 전
+ 이미지 C, Taglist: ["beta-3"], 푸시: 8일 전

수명 주기 정책 텍스트:

```
{
    "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`로 시작하는 태그 달린 이미지를 식별합니다. 가장 오래된 것부터 시작해서 일치하는 이미지가 한 개 이하일 때까지 이미지를 표시합니다. 이미지 A를 만료로 표시합니다.
+ 규칙 2는 `beta`로 시작하는 태그 달린 이미지를 식별합니다. 가장 오래된 것부터 시작해서 일치하는 이미지가 한 개 이하일 때까지 이미지를 표시합니다. 이미지 A와 이미지 B를 모두 만료로 표시합니다. 단, 이미지 A를 이미 규칙 1에서 확인했는데 이미지 B가 만료되면 규칙 1의 위반이 되므로 건너뜁니다.
+ 결과: 이미지 A가 만료되었습니다.

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

이것은 이전의 예와 동일한 리포지토리이지만, 결과를 설명하기 위해 규칙 우선 순위를 변경했습니다.

리포지토리 컨텐츠:
+ 이미지 A, Taglist: ["beta-1", "prod-1"], 푸시: 10일 전
+ 이미지 B, Taglist: ["beta-2", "prod-2"], 푸시: 9일 전
+ 이미지 C, Taglist: ["beta-3"], 푸시: 8일 전

수명 주기 정책 텍스트:

```
{
    "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`로 시작하는 태그 달린 이미지를 식별합니다. 가장 오래된 것부터 시작해서 일치하는 이미지가 한 개 이하일 때까지 이미지를 표시합니다. 세 이미지를 모두 확인하며 이미지 A와 이미지 B를 만료로 표시합니다.
+ 규칙 2는 `prod`로 시작하는 태그 달린 이미지를 식별합니다. 가장 오래된 것부터 시작해서 일치하는 이미지가 한 개 이하일 때까지 이미지를 표시합니다. 가용 이미지는 이미 규칙 1에서 확인했기 때문에 확인할 이미지가 없으며, 따라서 추가 이미지를 표시하지 않습니다.
+ 결과: 이미지 A와 이미지 B가 만료되었습니다.

## 단일 규칙에서 복수의 태그로 필터링
<a name="lp_example_difftype"></a>

다음 예는 단일 규칙에서 복수의 태그 패턴에 대한 수명 주기 정책 구문을 지정합니다. 예로써 리포지토리와 수명 주기 정책이 결과의 설명과 함께 나타나 있습니다.

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

단일 규칙에 복수의 태그 패턴을 지정할 때 이미지는 목록에 있는 태그 패턴과 모두 일치해야 합니다.

리포지토리 컨텐츠:
+ 이미지 A, Taglist: ["alpha-1"], 푸시: 12일 전
+ 이미지 B, Taglist: ["beta-1"], 푸시: 11일 전
+ 이미지 C, Taglist: ["alpha-2", "beta-2"], 푸시: 10일 전
+ 이미지 D, Taglist: ["alpha-3"], 푸시: 4일 전
+ 이미지 E, Taglist: ["beta-3"], 푸시: 3일 전
+ 이미지 F, Taglist: ["alpha-4", "beta-4"], 푸시: 2일 전

```
{
    "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>

다음 예는 함께 사용할 수 없는 태그를 보여 줍니다.

리포지토리 컨텐츠:
+ 이미지 A, Taglist: ["alpha-1", "beta-1", "gamma-1"], 푸시: 10일 전
+ 이미지 B, Taglist: ["alpha-2", "beta-2"], 푸시: 9일 전
+ 이미지 C, Taglist: ["alpha-3", "beta-3", "gamma-2"], 푸시: 8일 전

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

이 수명 주기 정책의 논리는 다음과 같습니다.
+ 규칙 1은 `alpha` 및 `beta`(으)로 시작하는 태그 달린 이미지를 식별합니다. 이것은 모든 이미지를 확인합니다. 가장 오래된 것부터 시작해서 일치하는 이미지가 한 개 이하일 때까지 이미지를 표시합니다. 이미지 A와 B를 만료로 표시합니다.
+ 결과: 이미지 A와 이미지 B가 만료되었습니다.

## 모든 이미지 필터링
<a name="lp_example_allimages"></a>

다음 수명 주기 정책의 예는 여러 필터를 가진 모든 이미지를 지정합니다. 예로써 리포지토리와 수명 주기 정책이 결과의 설명과 함께 나타나 있습니다.

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

다음은 모든 규칙에 적용되지만 이미지 한 개만 유지하고 나머지는 모두 만료시키는 정책에 대한 수명 주기 정책 구문을 보여 줍니다.

리포지토리 컨텐츠:
+ 이미지 A, Taglist: ["alpha-1"], 푸시: 4일 전
+ 이미지 B, Taglist: ["beta-1"], 푸시: 3일 전
+ 이미지 C, Taglist: [], 푸시: 2일 전
+ 이미지 D, Taglist: ["alpha-2"], 푸시: 1일 전

```
{
    "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>

다음 예는 모든 규칙 유형을 하나의 단일 정책에 통합하는 수명 주기 정책을 보여 줍니다.

리포지토리 컨텐츠:
+ 이미지 A, Taglist: ["alpha-", "beta-1", "-1"], 푸시: 4일 전
+ Image B, Taglist: [], Pushed: 3일 전
+ 이미지 C, Taglist: ["alpha-2"], 푸시: 2일 전
+ Image D, Taglist: ["git hash"], Pushed: 1일 전
+ 이미지 E, Taglist: [], 푸시: 1일 전

```
{
    "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"
            }
        }
    ]
}
```