이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용한 Amazon ECR 예제 AWS CLI
다음 코드 예제에서는 Amazon 에서 를 사용하여 작업을 수행하고 일반적인 시나리오 AWS Command Line Interface 를 구현하는 방법을 보여줍니다ECR.
작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.
각 예제에는 컨텍스트에서 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있는 전체 소스 코드에 대한 링크가 포함되어 있습니다.
주제
작업
다음 코드 예시에서는 batch-check-layer-availability
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
계층의 가용성을 확인하려면
다음
batch-check-layer-availability
예제에서는cluster-autoscaler
리포지토리에 다이제스트가 있는 계층의 가용성sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed
을 확인합니다.aws ecr batch-check-layer-availability \ --repository-name
cluster-autoscaler
\ --layer-digestssha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed
출력:
{ "layers": [ { "layerDigest": "sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed", "layerAvailability": "AVAILABLE", "layerSize": 2777, "mediaType": "application/vnd.docker.container.image.v1+json" } ], "failures": [] }
-
자세한 API 내용은 명령 참조BatchCheckLayerAvailability
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 batch-delete-image
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
예제 1: 이미지를 삭제하려면
다음
batch-delete-image
예제에서는 계정의 기본 레지스트리precise
에서 지정된 리포지토리에 태그가 있는 이미지를 삭제합니다.aws ecr batch-delete-image \ --repository-name
ubuntu
\ --image-idsimageTag=precise
출력:
{ "failures": [], "imageIds": [ { "imageTag": "precise", "imageDigest": "sha256:19665f1e6d1e504117a1743c0a3d3753086354a38375961f2e665416ef4b1b2f" } ] }
예제 2: 여러 이미지를 삭제하려면
다음
batch-delete-image
예제에서는 지정된 리포지토리team1
에서prod
및 로 태그가 지정된 모든 이미지를 삭제합니다.aws ecr batch-delete-image \ --repository-name
MyRepository
\ --image-idsimageTag=prod
imageTag=team1
출력:
{ "imageIds": [ { "imageDigest": "sha256:123456789012", "imageTag": "prod" }, { "imageDigest": "sha256:567890121234", "imageTag": "team1" } ], "failures": [] }
자세한 내용은 Amazon ECR 사용 설명서의 이미지 삭제를 참조하세요.
-
자세한 API 내용은 명령 참조BatchDeleteImage
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 batch-get-image
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
예제 1: 이미지 가져오기
다음
batch-get-image
예제에서는 계정의 기본 레지스트리cluster-autoscaler
에서 라는 리포지토리v1.13.6
에 태그가 있는 이미지를 가져옵니다.aws ecr batch-get-image \ --repository-name
cluster-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
예제에서는 지정된 리포지토리team1
에prod
및 로 태그가 지정된 모든 이미지의 세부 정보를 표시합니다.aws ecr batch-get-image \ --repository-name
MyRepository
\ --image-idsimageTag=prod
imageTag=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 내용은 명령 참조BatchGetImage
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 complete-layer-upload
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
이미지 계층 업로드를 완료하려면
다음
complete-layer-upload
예제에서는layer-test
리포지토리에 이미지 계층 업로드를 완료합니다.aws ecr complete-layer-upload \ --repository-name
layer-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 내용은 명령 참조CompleteLayerUpload
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 create-repository
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
예제 1: 리포지토리 생성
다음
create-repository
예제에서는 계정의 기본 레지스트리에서 지정된 네임스페이스 내에 리포지토리를 생성합니다.aws ecr create-repository \ --repository-name
project-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 ECR 사용 설명서의 리포지토리 생성을 참조하세요.
예제 2: 이미지 태그 변경 불가능으로 구성된 리포지토리 생성
다음
create-repository
예제에서는 계정의 기본 레지스트리에서 태그 불변성을 위해 구성된 리포지토리를 생성합니다.aws ecr create-repository \ --repository-name
project-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-name
project-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 내용은 명령 참조CreateRepository
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 delete-lifecycle-policy
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 수명 주기 정책을 삭제하려면
다음
delete-lifecycle-policy
예제에서는hello-world
리포지토리의 수명 주기 정책을 삭제합니다.aws ecr delete-lifecycle-policy \ --repository-name
hello-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 내용은 명령 참조DeleteLifecyclePolicy
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 delete-repository-policy
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리에 대한 리포지토리 정책을 삭제하려면
다음
delete-repository-policy
예제에서는 리포지토리에 대한 리포지cluster-autoscaler
토리 정책을 삭제합니다.aws ecr delete-repository-policy \ --repository-name
cluster-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 내용은 명령 참조DeleteRepositoryPolicy
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 delete-repository
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리를 삭제하려면
다음
delete-repository
예제 명령 힘은 계정의 기본 레지스트리에서 지정된 리포지토리를 삭제합니다. 리포지토리에 이미지가 포함된 경우--force
플래그가 필요합니다.aws ecr delete-repository \ --repository-name
ubuntu
\ --force출력:
{ "repository": { "registryId": "123456789012", "repositoryName": "ubuntu", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/ubuntu" } }
자세한 내용은 Amazon ECR 사용 설명서의 리포지토리 삭제를 참조하세요.
-
자세한 API 내용은 명령 참조DeleteRepository
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 describe-image-scan-findings
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
이미지의 스캔 결과를 설명하려면
다음
describe-image-scan-findings
예제에서는 계정의 기본 레지스트리에 지정된 리포지토리에서 이미지 다이제스트를 사용하여 이미지에 대한 이미지 스캔 결과를 반환합니다.aws ecr describe-image-scan-findings \ --repository-name
sample-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 내용은 명령 참조DescribeImageScanFindings
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 describe-images
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 이미지를 설명하려면
아래
describe-images
예제에서는 태그가 인cluster-autoscaler
리포지토리의 이미지에 대한 세부 정보를 표시합니다v1.13.6
.aws ecr describe-images \ --repository-name
cluster-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 내용은 명령 참조DescribeImages
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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 내용은 명령 참조DescribeRepositories
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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 내용은 명령 참조GetAuthorizationToken
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 get-download-url-for-layer
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
URL 계층 다운로드
다음
get-download-url-for-layer
예제에서는cluster-autoscaler
리포지토리에 다이제스트가 있는 계층URL의 다운로드sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed
를 보여줍니다.aws ecr get-download-url-for-layer \ --repository-name
cluster-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 내용은 명령 참조GetDownloadUrlForLayer
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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 내용은 명령 참조GetLifecyclePolicyPreview
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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 내용은 명령 참조GetLifecyclePolicy
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 get-login-password
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
레지스트리에 인증할 암호를 검색하려면
다음은 IAM 보안 주체가 액세스할 수 있는 Amazon ECR 레지스트리에 인증하는 데 선택한 컨테이너 클라이언트와 함께 사용할 수 있는 암호를
get-login-password
표시합니다.aws ecr get-login-password
출력:
<password>
Docker 와 함께 사용하려면
get-login-password
명령의 출력을docker login
명령에 CLI파이프합니다. 암호를 검색할 때 Amazon ECR 레지스트리가 존재하는 리전과 동일한 리전을 지정해야 합니다.aws ecr get-login-password \ --region
<region>
\|
docker
login
\ --usernameAWS
\ --password-stdin<aws_account_id>.dkr.ecr.<region>.amazonaws.com
자세한 내용은 Amazon ECR 사용 설명서의 레지스트리 인증을 참조하세요.
-
자세한 API 내용은 명령 참조GetLoginPassword
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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-ids
012345678910
023456789012
출력:
docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>
-
자세한 API 내용은 명령 참조GetLogin
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 get-repository-policy
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리에 대한 리포지토리 정책을 검색하려면
다음
get-repository-policy
예제에서는 리포지토리의 리cluster-autoscaler
포지토리 정책에 대한 세부 정보를 보여줍니다.aws ecr get-repository-policy \ --repository-name
cluster-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 내용은 명령 참조GetRepositoryPolicy
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 initiate-layer-upload
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
이미지 계층 업로드를 시작하려면
다음
initiate-layer-upload
예제에서는layer-test
리포지토리에 이미지 계층 업로드를 시작합니다.aws ecr initiate-layer-upload \ --repository-name
layer-test
출력:
{ "partSize": 10485760, "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9" }
-
자세한 API 내용은 명령 참조InitiateLayerUpload
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 list-images
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 이미지를 나열하는 방법
다음
list-images
예시에서는cluster-autoscaler
리포지토리의 이미지 목록을 표시합니다.aws ecr list-images \ --repository-name
cluster-autoscaler
출력:
{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }
-
자세한 API 내용은 명령 참조ListImages
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 list-tags-for-resource
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 태그를 나열하려면
다음
list-tags-for-resource
예제에서는hello-world
리포지토리와 연결된 태그 목록을 표시합니다.aws ecr list-tags-for-resource \ --resource-arn
arn:aws:ecr:us-west-2:012345678910:repository/hello-world
출력:
{ "tags": [ { "Key": "Stage", "Value": "Integ" } ] }
-
자세한 API 내용은 명령 참조ListTagsForResource
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 put-image-scanning-configuration
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 이미지 스캔 구성을 업데이트하려면
다음
put-image-scanning-configuration
예제에서는 지정된 리포지토리에 대한 이미지 스캔 구성을 업데이트합니다.aws ecr put-image-scanning-configuration \ --repository-name
sample-repo
\ --image-scanning-configurationscanOnPush=true
출력:
{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageScanningConfiguration": { "scanOnPush": true } }
자세한 내용은 Amazon ECR 사용 설명서의 이미지 스캔을 참조하세요.
-
자세한 API 내용은 명령 참조PutImageScanningConfiguration
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 put-image-tag-mutability
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 이미지 태그 변경 가능성 설정을 업데이트하려면
다음
put-image-tag-mutability
예제에서는 태그 불변성을 위해 지정된 리포지토리를 구성합니다. 이렇게 하면 리포지토리 내의 모든 이미지 태그를 덮어쓰지 못합니다.aws ecr put-image-tag-mutability \ --repository-name
hello-repository
\ --image-tag-mutabilityIMMUTABLE
출력:
{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageTagMutability": "IMMUTABLE" }
자세한 내용은 Amazon ECR 사용 설명서의 이미지 태그 이동성을 참조하세요.
-
자세한 API 내용은 명령 참조PutImageTagMutability
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 put-image
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
매니페스트를 사용하여 이미지에 다시 태그를 지정하려면
다음
put-image
예제에서는 기존 이미지 매니페스트를 사용하여hello-world
리포지토리에 새 태그를 생성합니다.aws ecr put-image \ --repository-name
hello-world
\ --image-tag2019.08
\ --image-manifestfile://hello-world.manifest.json
hello-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 내용은 명령 참조PutImage
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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 내용은 명령 참조PutLifecyclePolicy
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 set-repository-policy
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리에 대한 리포지토리 정책을 설정하려면
다음
set-repository-policy
예제에서는 파일에 포함된 리포지토리 정책을cluster-autoscaler
리포지토리에 연결합니다.aws ecr set-repository-policy \ --repository-name
cluster-autoscaler
\ --policy-textfile://my-policy.json
my-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 내용은 명령 참조SetRepositoryPolicy
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 start-image-scan
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
이미지 취약성 스캔을 시작하려면
다음
start-image-scan
예제에서는 지정된 리포지토리의 이미지 다이제스트에 의해 지정된 및 에 대한 이미지 스캔을 시작합니다.aws ecr start-image-scan \ --repository-name
sample-repo
\ --image-idimageDigest=sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6
출력:
{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageId": { "imageDigest": "sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6" }, "imageScanStatus": { "status": "IN_PROGRESS" } }
자세한 내용은 Amazon ECR 사용 설명서의 이미지 스캔을 참조하세요.
-
자세한 API 내용은 명령 참조StartImageScan
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 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 내용은 명령 참조StartLifecyclePolicyPreview
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 tag-resource
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리에 태그를 지정하려면
다음
tag-resource
예제에서는hello-world
리포지토리Integ
에 키Stage
와 값이 있는 태그를 설정합니다.aws ecr tag-resource \ --resource-arn
arn:aws:ecr:us-west-2:012345678910:repository/hello-world
\ --tagsKey=Stage,Value=Integ
이 명령은 출력을 생성하지 않습니다.
-
자세한 API 내용은 명령 참조TagResource
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 untag-resource
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
리포지토리의 태그를 해제하려면
다음
untag-resource
예제에서는hello-world
리포지토리Stage
에서 키가 있는 태그를 제거합니다.aws ecr untag-resource \ --resource-arn
arn:aws:ecr:us-west-2:012345678910:repository/hello-world
\ --tag-keysStage
이 명령은 출력을 생성하지 않습니다.
-
자세한 API 내용은 명령 참조UntagResource
의 섹션을 참조하세요. AWS CLI
-
다음 코드 예시에서는 upload-layer-part
을 사용하는 방법을 보여 줍니다.
- AWS CLI
-
계층 부분을 업로드하려면
다음은 이미지 계층 부분을
layer-test
리포지토리에upload-layer-part
업로드합니다.aws ecr upload-layer-part \ --repository-name
layer-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 내용은 명령 참조UploadLayerPart
의 섹션을 참조하세요. AWS CLI
-