AWS SDK 또는 CLI로 PutLifeCyclePolicy 사용하기
AWS SDK 또는 CLI로 PutLifeCyclePolicy 사용하기
다음 코드 예제는 AWS SDK와 CLI에서 PutLifeCyclePolicy를 사용하는 방법을 보여줍니다.
출처: 문서
본문
CLI
AWS CLI
수명 주기 정책 만들기
다음 put-lifecycle-policy 예제는 계정의 기본 레지스트리에 있는 지정된 리포지토리의 수명 주기 정책을 생성합니다.
aws ecr put-lifecycle-policy \
--repository-name "project-a/amazon-ecs-sample" \
--lifecycle-policy-text "file://policy.json"
policy.json 내용:
{
"rules": [
{
"rulePriority": 1,
"description": "Expire images older than 14 days",
"selection": {
"tagStatus": "untagged",
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 14
},
"action": {
"type": "expire"
}
}
]
}
출력:
{
"registryId": "<aws_account_id>",
"repositoryName": "project-a/amazon-ecs-sample",
"lifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Expire images older than 14 days\",\"selection\":{\"tagStatus\":\"untagged\",\"countType\":\"sinceImagePushed\",\"countUnit\":\"days\",\"countNumber\":14},\"action\":{\"type\":\"expire\"}}]}"
}
자세한 내용은 Amazon ECR 사용자 가이드의 Lifecycle Policies를 참조하세요.
API 세부 정보는 AWS CLI Command Reference의 PutLifeCyclePolicy를 참조하세요.
Python
SDK for Python (Boto3)
참고: GitHub에 더 많은 내용이 있습니다. 전체 예제를 찾아 설정하고 실행하는 방법은 AWS Code Examples Repository에서 확인하세요.
class ECRWrapper:
def __init__(self, ecr_client: client):
self.ecr_client = ecr_client
@classmethod
def from_client(cls) -> "ECRWrapper":
"""
Creates a ECRWrapper instance with a default Amazon ECR client.
:return: An instance of ECRWrapper initialized with the default Amazon ECR client.
"""
ecr_client = boto3.client("ecr")
return cls(ecr_client)
def put_lifecycle_policy(self, repository_name: str, lifecycle_policy_text: str):
"""
Puts a lifecycle policy for an ECR repository.
:param repository_name: The name of the repository to put the lifecycle policy for.
:param lifecycle_policy_text: The lifecycle policy text to put.
"""
try:
self.ecr_client.put_lifecycle_policy(
repositoryName=repository_name,
lifecyclePolicyText=lifecycle_policy_text,
)
print(f"Put lifecycle policy for repository {repository_name}.")
except ClientError as err:
logger.error(
"Couldn't put lifecycle policy for repository %s. Here's why %s",
repository_name,
err.response["Error"]["Message"],
)
raise
만료 날짜 정책을 설정하는 예제:
def put_expiration_policy(self):
"""
Puts an expiration policy on the ECR repository.
"""
policy_json = {
"rules": [
{
"rulePriority": 1,
"description": "Expire images older than 14 days",
"selection": {
"tagStatus": "any",
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 14,
},
"action": {"type": "expire"},
}
]
}
self.ecr_wrapper.put_lifecycle_policy(
self.repository_name, json.dumps(policy_json)
)
API 세부 정보는 AWS SDK for Python (Boto3) API Reference의 PutLifeCyclePolicy를 참조하세요.
SAP ABAP
SDK for SAP ABAP
참고: GitHub에 더 많은 내용이 있습니다. 전체 예제를 찾아 설정하고 실행하는 방법은 AWS Code Examples Repository에서 확인하세요.
TRY.
" iv_repository_name = 'my-repository'
" iv_lifecycle_policy_text = '{"rules":[{"rulePriority":1,"description":"Expire images older than 14 days",...}]}'
lo_ecr->putlifecyclepolicy(
iv_repositoryname = iv_repository_name
iv_lifecyclepolicytext = iv_lifecycle_policy_text ).
MESSAGE |Lifecycle policy set for repository { iv_repository_name }.| TYPE 'I'.
CATCH /aws1/cx_ecrrepositorynotfndex.
MESSAGE 'Repository not found.' TYPE 'I'.
CATCH /aws1/cx_ecrvalidationex.
MESSAGE 'Invalid lifecycle policy format.' TYPE 'I'.
ENDTRY.
API 세부 정보는 AWS SDK for SAP ABAP API reference의 PutLifeCyclePolicy를 참조하세요.
AWS SDK 개발자 가이드와 코드 예제의 전체 목록은 AWS SDK로 Amazon ECR 사용하기를 참조하세요. 이 주제에는 시작하기 정보와 이전 SDK 버전에 대한 세부 정보도 포함되어 있습니다.