AWS CLI를 사용한 Amazon ECR 예제
다음 코드 예제에서는 Amazon ECR에서 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.
작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 관련 시나리오의 컨텍스트에 따라 표시되며, 개별 서비스 함수를 직접적으로 호출하는 방법을 보여줍니다.
각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.
주제
작업
다음 코드 예제에서는 batch-check-layer-availability의 사용 방법을 보여줍니다.
- AWS CLI
-
계층의 가용성을 확인하려면
다음
batch-check-layer-availability예제에서는cluster-autoscaler리포지토리에 다이제스트sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed가 있는 계층의 가용성을 확인합니다.aws ecr batch-check-layer-availability \ --repository-namecluster-autoscaler\ --layer-digestssha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed출력:
{ "layers": [ { "layerDigest": "sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed", "layerAvailability": "AVAILABLE", "layerSize": 2777, "mediaType": "application/vnd.docker.container.image.v1+json" } ], "failures": [] }-
API 세부 정보는 AWS CLI 명령 참조의 BatchCheckLayerAvailability
를 참조하세요.
-
다음 코드 예제에서는 batch-delete-image의 사용 방법을 보여줍니다.
- AWS CLI
-
예제 1: 항목을 삭제하려면
다음
batch-delete-image예제에서는 계정의 기본 레지스트리에서 지정된 리포지토리에 태그precise가 있는 이미지를 삭제합니다.aws ecr batch-delete-image \ --repository-nameubuntu\ --image-idsimageTag=precise출력:
{ "failures": [], "imageIds": [ { "imageTag": "precise", "imageDigest": "sha256:19665f1e6d1e504117a1743c0a3d3753086354a38375961f2e665416ef4b1b2f" } ] }예제 2: 여러 이미지를 삭제하려면
다음
batch-delete-image예제에서는 지정된 리포지토리에서prod및team1로 태그가 지정된 모든 이미지를 삭제합니다.aws ecr batch-delete-image \ --repository-nameMyRepository\ --image-idsimageTag=prodimageTag=team1출력:
{ "imageIds": [ { "imageDigest": "sha256:123456789012", "imageTag": "prod" }, { "imageDigest": "sha256:567890121234", "imageTag": "team1" } ], "failures": [] }자세한 내용은 Amazon ECR 사용 설명서의 이미지 삭제를 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 BatchDeleteImage
를 참조하세요.
-
다음 코드 예제에서는 batch-get-image의 사용 방법을 보여줍니다.
- AWS CLI
-
예제 1: 이미지를 가져오려면
다음
batch-get-image예제에서는 계정의 기본 레지스트리에서cluster-autoscaler라는 리포지토리에 태그v1.13.6가 있는 이미지를 가져옵니다.aws ecr batch-get-image \ --repository-namecluster-autoscaler\ --image-idsimageTag=v1.13.6출력:
{ "images": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageId": { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" }, "imageManifest": "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n \"size\": 2777,\n \"digest\": \"sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed\"\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 17743696,\n \"digest\": \"sha256:39fafc05754f195f134ca11ecdb1c9a691ab0848c697fffeb5a85f900caaf6e1\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 2565026,\n \"digest\": \"sha256:8c8a779d3a537b767ae1091fe6e00c2590afd16767aa6096d1b318d75494819f\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 28005981,\n \"digest\": \"sha256:c44ba47496991c9982ee493b47fd25c252caabf2b4ae7dd679c9a27b6a3c8fb7\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 775,\n \"digest\": \"sha256:e2c388b44226544363ca007be7b896bcce1baebea04da23cbd165eac30be650f\"\n }\n ]\n}" } ], "failures": [] }예제 2: 여러 이미지를 가져오려면
다음
batch-get-image예제에서는 지정된 리포지토리에prod및team1로 태그가 지정된 모든 이미지의 세부 정보를 표시합니다.aws ecr batch-get-image \ --repository-nameMyRepository\ --image-idsimageTag=prodimageTag=team1출력:
{ "images": [ { "registryId": "123456789012", "repositoryName": "MyRepository", "imageId": { "imageDigest": "sha256:123456789012", "imageTag": "prod" }, "imageManifest": "manifestExample1" }, { "registryId": "567890121234", "repositoryName": "MyRepository", "imageId": { "imageDigest": "sha256:123456789012", "imageTag": "team1" }, "imageManifest": "manifestExample2" } ], "failures": [] }자세한 내용은 Amazon ECR 사용 설명서의 이미지를 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 BatchGetImage
를 참조하세요.
-
다음 코드 예제에서는 complete-layer-upload의 사용 방법을 보여줍니다.
- AWS CLI
-
이미지 계층 업로드를 완료하려면
다음
complete-layer-upload예제에서는layer-test리포지토리에 이미지 계층 업로드를 완료합니다.aws ecr complete-layer-upload \ --repository-namelayer-test\ --upload-id6cb64b8a-9378-0e33-2ab1-b780fab8a9e9\ --layer-digests6cb64b8a-9378-0e33-2ab1-b780fab8a9e9:48074e6d3a68b39aad8ccc002cdad912d4148c0f92b3729323e출력:
{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "layerDigest": "sha256:9a77f85878aa1906f2020a0ecdf7a7e962d57e882250acd773383224b3fe9a02", "repositoryName": "layer-test", "registryId": "130757420319" }-
API 세부 정보는 AWS CLI 명령 참조의 CompleteLayerUpload
를 참조하세요.
-
다음 코드 예제에서는 create-repository의 사용 방법을 보여줍니다.
- AWS CLI
-
예제 1: 리포지토리 생성
다음
create-repository예제에서는 계정의 기본 레지스트리에서 지정된 네임스페이스 내에 리포지토리를 생성합니다.aws ecr create-repository \ --repository-nameproject-a/sample-repo출력:
{ "repository": { "registryId": "123456789012", "repositoryName": "project-a/sample-repo", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/project-a/sample-repo" } }자세한 내용은 Amazon VPC 사용 설명서의 리포지토리 생성을 참조하세요.
예제 2: 이미지 태그 변경 불가능으로 구성된 리포지토리를 생성하려면
다음
create-repository예제에서는 계정의 기본 레지스트리에서 태그 불변성을 위해 구성된 리포지토리를 생성합니다.aws ecr create-repository \ --repository-nameproject-a/sample-repo\ --image-tag-mutabilityIMMUTABLE출력:
{ "repository": { "registryId": "123456789012", "repositoryName": "project-a/sample-repo", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/project-a/sample-repo", "imageTagMutability": "IMMUTABLE" } }자세한 내용은 Amazon ECR 사용 설명서의 이미지 태그 변경 가능성을 참조하세요.
예제 3: 스캔 구성으로 구성된 리포지토리 생성
다음
create-repository예제에서는 계정의 기본 레지스트리에서 이미지 푸시에 대한 취약성 스캔을 수행하도록 구성된 리포지토리를 생성합니다.aws ecr create-repository \ --repository-nameproject-a/sample-repo\ --image-scanning-configurationscanOnPush=true출력:
{ "repository": { "registryId": "123456789012", "repositoryName": "project-a/sample-repo", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/project-a/sample-repo", "imageScanningConfiguration": { "scanOnPush": true } } }자세한 내용은 Amazon ECR 사용 설명서의 이미지 스캔을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 CreateRepository
를 참조하세요.
-
다음 코드 예제에서는 delete-lifecycle-policy의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리의 수명 주기 정책을 삭제하려면
다음
delete-lifecycle-policy예제에서는hello-world리포지토리의 수명 주기 정책을 삭제합니다.aws ecr delete-lifecycle-policy \ --repository-namehello-world출력:
{ "registryId": "012345678910", "repositoryName": "hello-world", "lifecyclePolicyText": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Remove untagged images.\",\"selection\":{\"tagStatus\":\"untagged\",\"countType\":\"sinceImagePushed\",\"countUnit\":\"days\",\"countNumber\":10},\"action\":{\"type\":\"expire\"}}]}", "lastEvaluatedAt": 0.0 }-
API 세부 정보는 AWS CLI 명령 참조의 DeleteLifecyclePolicy
를 참조하세요.
-
다음 코드 예제에서는 delete-repository-policy의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리에 대한 리포지토리 정책을 삭제하려면
다음
delete-repository-policy예제에서는cluster-autoscaler리포지토리에 대한 리포지토리 정책을 삭제합니다.aws ecr delete-repository-policy \ --repository-namecluster-autoscaler출력:
{ "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"allow public pull\",\n \"Effect\" : \"Allow\",\n \"Principal\" : \"*\",\n \"Action\" : [ \"ecr:BatchCheckLayerAvailability\", \"ecr:BatchGetImage\", \"ecr:GetDownloadUrlForLayer\" ]\n } ]\n}" }-
API 세부 정보는 AWS CLI 명령 참조의 DeleteRepositoryPolicy
를 참조하세요.
-
다음 코드 예제에서는 delete-repository의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리 삭제
다음
delete-repository예제 명령 힘은 계정의 기본 레지스트리에서 지정된 리포지토리를 삭제합니다. 리포지토리에 이미지가 포함된 경우--force플래그가 필요합니다.aws ecr delete-repository \ --repository-nameubuntu\ --force출력:
{ "repository": { "registryId": "123456789012", "repositoryName": "ubuntu", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/ubuntu" } }자세한 내용은 Amazon ECR 사용 설명서의 리포지토리 삭제를 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 DeleteRepository
를 참조하세요.
-
다음 코드 예제에서는 describe-image-scan-findings의 사용 방법을 보여줍니다.
- AWS CLI
-
이미지의 스캔 결과를 설명하려면
다음
describe-image-scan-findings예제에서는 계정의 기본 레지스트리에 지정된 리포지토리에서 이미지 다이제스트를 사용하여 이미지에 대한 이미지 스캔 결과를 반환합니다.aws ecr describe-image-scan-findings \ --repository-namesample-repo\ --image-idimageDigest=sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6출력:
{ "imageScanFindings": { "findings": [ { "name": "CVE-2019-5188", "description": "A code execution vulnerability exists in the directory rehashing functionality of E2fsprogs e2fsck 1.45.4. A specially crafted ext4 directory can cause an out-of-bounds write on the stack, resulting in code execution. An attacker can corrupt a partition to trigger this vulnerability.", "uri": "http://people.ubuntu.com/~ubuntu-security/cve/CVE-2019-5188", "severity": "MEDIUM", "attributes": [ { "key": "package_version", "value": "1.44.1-1ubuntu1.1" }, { "key": "package_name", "value": "e2fsprogs" }, { "key": "CVSS2_VECTOR", "value": "AV:L/AC:L/Au:N/C:P/I:P/A:P" }, { "key": "CVSS2_SCORE", "value": "4.6" } ] } ], "imageScanCompletedAt": 1579839105.0, "vulnerabilitySourceUpdatedAt": 1579811117.0, "findingSeverityCounts": { "MEDIUM": 1 } }, "registryId": "123456789012", "repositoryName": "sample-repo", "imageId": { "imageDigest": "sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6" }, "imageScanStatus": { "status": "COMPLETE", "description": "The scan was completed successfully." } }자세한 내용은 Amazon ECR 사용 설명서의 이미지 스캔을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 DescribeImageScanFindings
를 참조하세요.
-
다음 코드 예제에서는 describe-images의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리의 이미지를 설명하려면
다음
describe-images예제에서는 태그가v1.13.6인cluster-autoscaler리포지토리의 이미지에 대한 세부 정보를 표시합니다.aws ecr describe-images \ --repository-namecluster-autoscaler\ --image-idsimageTag=v1.13.6출력:
{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }-
API 세부 정보는 AWS CLI 명령 참조의 DescribeImages
를 참조하세요.
-
다음 코드 예제에서는 describe-repositories의 사용 방법을 보여줍니다.
- AWS CLI
-
레지스트리의 리포지토리를 설명하려면
이 예제에서는 계정의 기본 레지스트리에 있는 리포지토리를 설명합니다.
명령:
aws ecr describe-repositories출력:
{ "repositories": [ { "registryId": "012345678910", "repositoryName": "ubuntu", "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/ubuntu" }, { "registryId": "012345678910", "repositoryName": "test", "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/test" } ] }-
API 세부 정보는 AWS CLI 명령 참조의 DescribeRepositories
를 참조하세요.
-
다음 코드 예제에서는 get-authorization-token의 사용 방법을 보여줍니다.
- AWS CLI
-
기본 레지스트리에 대한 권한 부여 토큰을 가져오려면
다음
get-authorization-token예제 명령은 기본 레지스트리에 대한 권한 부여 토큰을 가져옵니다.aws ecr get-authorization-token출력:
{ "authorizationData": [ { "authorizationToken": "QVdTOkN...", "expiresAt": 1448875853.241, "proxyEndpoint": "https://123456789012.dkr.ecr.us-west-2.amazonaws.com" } ] }-
API 세부 정보는 AWS CLI 명령 참조의 GetAuthorizationToken
을 참조하세요.
-
다음 코드 예제에서는 get-download-url-for-layer의 사용 방법을 보여줍니다.
- AWS CLI
-
계층의 다운로드 URL을 가져오려면
다음
get-download-url-for-layer예제에서는cluster-autoscaler리포지토리에 다이제스트sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed가 있는 계층의 다운로드 URL을 표시합니다.aws ecr get-download-url-for-layer \ --repository-namecluster-autoscaler\ --layer-digestsha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed출력:
{ "downloadUrl": "https://prod-us-west-2-starport-layer-bucket.s3.us-west-2.amazonaws.com/e501-012345678910-9cb60dc0-7284-5643-3987-da6dac0465f0/04620aac-66a5-4167-8232-55ee7ef6d565?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190814T220617Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=AKIA32P3D2JDNMVAJLGF%2F20190814%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=9161345894947a1672467a0da7a1550f2f7157318312fe4941b59976239c3337", "layerDigest": "sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed" }-
API 세부 정보는 AWS CLI 명령 참조의 GetDownloadUrlForLayer
를 참조하세요.
-
다음 코드 예제에서는 get-lifecycle-policy-preview의 사용 방법을 보여줍니다.
- AWS CLI
-
수명 주기 정책 미리 보기에 대한 세부 정보를 검색하려면
다음
get-lifecycle-policy-preview예제에서는 계정의 기본 레지스트리에 지정된 리포지토리에 대한 수명 주기 정책 미리 보기 결과를 검색합니다.명령:
aws ecr get-lifecycle-policy-preview \ --repository-name"project-a/amazon-ecs-sample"출력:
{ "registryId": "012345678910", "repositoryName": "project-a/amazon-ecs-sample", "lifecyclePolicyText": "{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n", "status": "COMPLETE", "previewResults": [], "summary": { "expiringImageTotalCount": 0 } }자세한 내용은 Amazon ECR 사용 설명서의 수명 주기 정책을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 GetLifecyclePolicyPreview
를 참조하세요.
-
다음 코드 예제에서는 get-lifecycle-policy의 사용 방법을 보여줍니다.
- AWS CLI
-
수명 주기 정책을 검색하려면
다음
get-lifecycle-policy예제에서는 계정의 기본 레지스트리에 지정된 리포지토리의 수명 주기 정책에 대한 세부 정보를 표시합니다.aws ecr get-lifecycle-policy \ --repository-name"project-a/amazon-ecs-sample"출력:
{ "registryId": "123456789012", "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\"}}]}", "lastEvaluatedAt": 1504295007.0 }자세한 내용은 Amazon ECR 사용 설명서의 수명 주기 정책을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 GetLifecyclePolicy
를 참조하세요.
-
다음 코드 예제에서는 get-login-password의 사용 방법을 보여줍니다.
- AWS CLI
-
레지스트리에 인증할 암호를 검색하려면
다음
get-login-password에서는 IAM 보안 주체가 액세스할 수 있는 Amazon ECR 레지스트리에 인증하는 데 선택한 컨테이너 클라이언트와 함께 사용할 수 있는 암호를 표시합니다.aws ecr get-login-password출력:
<password>Docker CLI와 함께 사용하려면
get-login-password명령의 출력을docker login명령에 파이프로 연결합니다. 암호를 검색할 때 Amazon ECR 레지스트리가 있는 리전과 동일한 리전을 지정해야 합니다.aws ecr get-login-password \ --region<region>\|dockerlogin\ --usernameAWS\ --password-stdin<aws_account_id>.dkr.ecr.<region>.amazonaws.com자세한 내용은 Amazon RDS 사용 설명서의 레지스트리 인증을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 GetLoginPassword
를 참조하세요.
-
다음 코드 예제에서는 get-login의 사용 방법을 보여줍니다.
- AWS CLI
-
기본 레지스트리에 대한 Docker 로그인 명령을 검색하려면
이 예제에서는 기본 Amazon ECR 레지스트리에 로그인하는 데 사용할 수 있는 명령을 인쇄합니다.
명령:
aws ecr get-login출력:
docker login -u AWS -p <password> -e none https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com다른 계정의 레지스트리에 로그인하려면
이 예제에서는 다른 계정과 연결된 Amazon ECR 레지스트리에 로그인하는 데 사용할 수 있는 명령을 하나 이상 인쇄합니다.
명령:
aws ecr get-login --registry-ids012345678910023456789012출력:
docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>-
API 세부 정보는 AWS CLI 명령 참조의 GetLogin
을 참조하세요.
-
다음 코드 예제에서는 get-repository-policy의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리에 대한 리포지토리 정책을 검색하려면
다음
get-repository-policy예제에서는cluster-autoscaler리포지토리의 리포지토리 정책에 대한 세부 정보를 보여줍니다.aws ecr get-repository-policy \ --repository-namecluster-autoscaler출력:
{ "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"allow public pull\",\n \"Effect\" : \"Allow\",\n \"Principal\" : \"*\",\n \"Action\" : [ \"ecr:BatchCheckLayerAvailability\", \"ecr:BatchGetImage\", \"ecr:GetDownloadUrlForLayer\" ]\n } ]\n}" }-
API 세부 정보는 AWS CLI 명령 참조의 GetRepositoryPolicy
를 참조하세요.
-
다음 코드 예제에서는 initiate-layer-upload의 사용 방법을 보여줍니다.
- AWS CLI
-
이미지 계층 업로드를 시작하려면
다음
initiate-layer-upload예제에서는layer-test리포지토리에 이미지 계층 업로드를 시작합니다.aws ecr initiate-layer-upload \ --repository-namelayer-test출력:
{ "partSize": 10485760, "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9" }-
API 세부 정보는 AWS CLI 명령 참조의 InitiateLayerUpload
를 참조하세요.
-
다음 코드 예제에서는 list-images의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리의 이미지를 나열하려면
다음
list-images예제에서는cluster-autoscaler리포지토리의 이미지 목록을 표시합니다.aws ecr list-images \ --repository-namecluster-autoscaler출력:
{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }-
API 세부 정보는 AWS CLI 명령 참조의 ListImages
를 참조하세요.
-
다음 코드 예제에서는 list-tags-for-resource의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리 태그를 나열하려면
다음
list-tags-for-resource예제에서는hello-world리포지토리와 연결된 태그 목록을 표시합니다.aws ecr list-tags-for-resource \ --resource-arnarn:aws:ecr:us-west-2:012345678910:repository/hello-world출력:
{ "tags": [ { "Key": "Stage", "Value": "Integ" } ] }-
API 세부 정보는 AWS CLI 명령 참조의 ListTagsForResource
섹션을 참조하세요.
-
다음 코드 예제에서는 put-image-scanning-configuration의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리의 이미지 검사 구성을 업데이트하려면
다음
put-image-scanning-configuration예제에서는 지정된 리포지토리에 대한 이미지 스캔 구성을 업데이트합니다.aws ecr put-image-scanning-configuration \ --repository-namesample-repo\ --image-scanning-configurationscanOnPush=true출력:
{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageScanningConfiguration": { "scanOnPush": true } }자세한 내용은 Amazon ECR 사용 설명서의 이미지 스캔을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 PutImageScanningConfiguration
을 참조하세요.
-
다음 코드 예제에서는 put-image-tag-mutability의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리에 대한 이미지 태그 변경 가능성 설정을 업데이트하려면
다음
put-image-tag-mutability예제에서는 태그 불변성을 위해 지정된 리포지토리를 구성합니다. 이렇게 하면 리포지토리 내의 모든 이미지 태그를 덮어쓰지 않습니다.aws ecr put-image-tag-mutability \ --repository-namehello-repository\ --image-tag-mutabilityIMMUTABLE출력:
{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageTagMutability": "IMMUTABLE" }자세한 내용은 Amazon ECR 사용 설명서의 이미지 태그 변경 가능성을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 PutImageTagMutability
를 참조하세요.
-
다음 코드 예제에서는 put-image의 사용 방법을 보여줍니다.
- AWS CLI
-
매니페스트를 사용하여 이미지에 다시 태그를 지정하려면
다음
put-image예제에서는 기존 이미지 매니페스트를 사용하여hello-world리포지토리에 새 태그를 생성합니다.aws ecr put-image \ --repository-namehello-world\ --image-tag2019.08\ --image-manifestfile://hello-world.manifest.jsonhello-world.manifest.json의 콘텐츠:{ "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 5695, "digest": "sha256:cea5fe7701b7db3dd1c372f3cea6f43cdda444fcc488f530829145e426d8b980" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 39096921, "digest": "sha256:d8868e50ac4c7104d2200d42f432b661b2da8c1e417ccfae217e6a1e04bb9295" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 57938, "digest": "sha256:83251ac64627fc331584f6c498b3aba5badc01574e2c70b2499af3af16630eed" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 423, "digest": "sha256:589bba2f1b36ae56f0152c246e2541c5aa604b058febfcf2be32e9a304fec610" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 680, "digest": "sha256:d62ecaceda3964b735cdd2af613d6bb136a52c1da0838b2ff4b4dab4212bcb1c" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 162, "digest": "sha256:6d93b41cfc6bf0d2522b7cf61588de4cd045065b36c52bd3aec2ba0622b2b22b" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 28268840, "digest": "sha256:6986b4d4c07932c680b3587f2eac8b0e013568c003cc23b04044628a5c5e599f" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 35369152, "digest": "sha256:8c5ec60f10102dc8da0649d866c7c2f706e459d0bdc25c83ad2de86f4996c276" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 155, "digest": "sha256:cde50b1c594539c5f67cbede9aef95c9ae321ccfb857f7b251b45b84198adc85" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 28737, "digest": "sha256:2e102807ab72a73fc9abf53e8c50e421bdc337a0a8afcb242176edeec65977e4" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 190, "digest": "sha256:fc379bbd5ed37808772bef016553a297356c59b8f134659e6ee4ecb563c2f5a7" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 28748, "digest": "sha256:021db240dfccf5a1aff19507d17c0177e5888e518acf295b52204b1825e8b7ee" } ] }출력:
{ "image": { "registryId": "130757420319", "repositoryName": "hello-world", "imageId": { "imageDigest": "sha256:8ece96b74f87652876199d83bd107d0435a196133af383ac54cb82b6cc5283ae", "imageTag": "2019.08" }, "imageManifest": "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n \"size\": 5695,\n \"digest\": \"sha256:cea5fe7701b7db3dd1c372f3cea6f43cdda444fcc488f530829145e426d8b980\"\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 39096921,\n \"digest\": \"sha256:d8868e50ac4c7104d2200d42f432b661b2da8c1e417ccfae217e6a1e04bb9295\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 57938,\n \"digest\": \"sha256:83251ac64627fc331584f6c498b3aba5badc01574e2c70b2499af3af16630eed\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 423,\n \"digest\": \"sha256:589bba2f1b36ae56f0152c246e2541c5aa604b058febfcf2be32e9a304fec610\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 680,\n \"digest\": \"sha256:d62ecaceda3964b735cdd2af613d6bb136a52c1da0838b2ff4b4dab4212bcb1c\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 162,\n \"digest\": \"sha256:6d93b41cfc6bf0d2522b7cf61588de4cd045065b36c52bd3aec2ba0622b2b22b\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 28268840,\n \"digest\": \"sha256:6986b4d4c07932c680b3587f2eac8b0e013568c003cc23b04044628a5c5e599f\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 35369152,\n \"digest\": \"sha256:8c5ec60f10102dc8da0649d866c7c2f706e459d0bdc25c83ad2de86f4996c276\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 155,\n \"digest\": \"sha256:cde50b1c594539c5f67cbede9aef95c9ae321ccfb857f7b251b45b84198adc85\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 28737,\n \"digest\": \"sha256:2e102807ab72a73fc9abf53e8c50e421bdc337a0a8afcb242176edeec65977e4\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 190,\n \"digest\": \"sha256:fc379bbd5ed37808772bef016553a297356c59b8f134659e6ee4ecb563c2f5a7\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 28748,\n \"digest\": \"sha256:021db240dfccf5a1aff19507d17c0177e5888e518acf295b52204b1825e8b7ee\"\n }\n ]\n}\n" } }-
API 세부 정보는 AWS CLI 명령 참조의 PutImage
를 참조하세요.
-
다음 코드 예제에서는 put-lifecycle-policy의 사용 방법을 보여줍니다.
- 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 사용 설명서의 수명 주기 정책을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 PutLifeCyclePolicy
를 참조하세요.
-
다음 코드 예제에서는 set-repository-policy의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리에 대한 리포지토리 정책을 설정하려면
다음
set-repository-policy예제에서는 파일에 포함된 리포지토리 정책을cluster-autoscaler리포지토리에 연결합니다.aws ecr set-repository-policy \ --repository-namecluster-autoscaler\ --policy-textfile://my-policy.jsonmy-policy.json의 콘텐츠:{ "Version" : "2008-10-17", "Statement" : [ { "Sid" : "allow public pull", "Effect" : "Allow", "Principal" : "*", "Action" : [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }출력:
{ "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"allow public pull\",\n \"Effect\" : \"Allow\",\n \"Principal\" : \"*\",\n \"Action\" : [ \"ecr:BatchCheckLayerAvailability\", \"ecr:BatchGetImage\", \"ecr:GetDownloadUrlForLayer\" ]\n } ]\n}" }-
API 세부 정보는 AWS CLI 명령 참조의 SetRepositoryPolicy
를 참조하세요.
-
다음 코드 예제에서는 start-image-scan의 사용 방법을 보여줍니다.
- AWS CLI
-
이미지 취약성 스캔을 시작하려면
다음
start-image-scan예제에서는 지정된 리포지토리의 이미지 다이제스트에 의해 지정되고 이를 위한 이미지 스캔을 시작합니다.aws ecr start-image-scan \ --repository-namesample-repo\ --image-idimageDigest=sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6출력:
{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageId": { "imageDigest": "sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6" }, "imageScanStatus": { "status": "IN_PROGRESS" } }자세한 내용은 Amazon ECR 사용 설명서의 이미지 스캔을 참조하세요.
-
API 세부 정보는 AWS CLI 명령 참조의 StartImageScan
를 참조하세요.
-
다음 코드 예제에서는 start-lifecycle-policy-preview의 사용 방법을 보여줍니다.
- AWS CLI
-
수명 주기 정책 미리 보기를 생성하려면
다음
start-lifecycle-policy-preview예제에서는 지정된 리포지토리에 대해 JSON 파일로 정의된 수명 주기 정책 미리 보기를 생성합니다.aws ecr start-lifecycle-policy-preview \ --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": "012345678910", "repositoryName": "project-a/amazon-ecs-sample", "lifecyclePolicyText": "{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n", "status": "IN_PROGRESS" }-
API 세부 정보는 AWS CLI 명령 참조의 StartLifecyclePolicyPreview
를 참조하세요.
-
다음 코드 예제에서는 tag-resource의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리에 태그를 추가하려면
다음
tag-resource예제에서는 보고서에Stage키 및 값Integ로 태그를 추가합니다.aws ecr tag-resource \ --resource-arnarn:aws:ecr:us-west-2:012345678910:repository/hello-world\ --tagsKey=Stage,Value=Integ이 명령은 출력을 생성하지 않습니다.
-
API 세부 정보는 AWS CLI 명령 참조의 TagResource
를 참조하세요.
-
다음 코드 예제에서는 untag-resource의 사용 방법을 보여줍니다.
- AWS CLI
-
리포지토리의 태그를 해제하려면
다음
untag-resource예제에서는hello-world리포지토리에서 키Stage가 있는 태그를 제거합니다.aws ecr untag-resource \ --resource-arnarn:aws:ecr:us-west-2:012345678910:repository/hello-world\ --tag-keysStage이 명령은 출력을 생성하지 않습니다.
-
API 세부 정보는 AWS CLI 명령 참조의 UntagResource
를 참조하세요.
-
다음 코드 예제에서는 upload-layer-part의 사용 방법을 보여줍니다.
- AWS CLI
-
계층 부분을 업로드하려면
다음
upload-layer-part에서는 이미지 계층 부분을layer-test리포지토리에 업로드합니다.aws ecr upload-layer-part \ --repository-namelayer-test\ --upload-id6cb64b8a-9378-0e33-2ab1-b780fab8a9e9\ --part-first-byte0\ --part-last-byte8323314\ --layer-part-blobfile:///var/lib/docker/image/overlay2/layerdb/sha256/ff986b10a018b48074e6d3a68b39aad8ccc002cdad912d4148c0f92b3729323e/layer.b64출력:
{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }-
API 세부 정보는 AWS CLI 명령 참조의 UploadLayerPart
를 참조하세요.
-