AWS Doc SDK ExamplesWord
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용한 Amazon ECR 예제 AWS CLI
다음 코드 예제에서는 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-name
cluster-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-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 세부 정보는 AWS CLI 명령 참조의 BatchDeleteImage
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 BatchGetImage
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 CompleteLayerUpload
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 CreateRepository
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 DeleteLifecyclePolicy
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 DeleteRepositoryPolicy
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 DeleteRepository
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 DescribeImageScanFindings
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 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
리포지토리에 다이제스트가 있는 계층URL의 다운로드 Wordsha256: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 세부 정보는 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
-
레지스트리에 인증할 암호를 검색하려면
다음은 IAM 보안 주체가 액세스할 수 있는 Amazon ECR 레지스트리에 인증하는 데 선택한 컨테이너 클라이언트와 함께 사용할 수 있는 암호를
get-login-password
표시합니다.aws ecr get-login-password
출력:
<password>
Docker CLI와 함께 사용하려면
get-login-password
명령의 출력을docker login
명령에 파이프로 연결합니다. 암호를 검색할 때 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 세부 정보는 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-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 세부 정보는 AWS CLI 명령 참조의 GetLogin
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 GetRepositoryPolicy
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 InitiateLayerUpload
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 ListImages
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 ListTagsForResource
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 PutImageScanningConfiguration
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 PutImageTagMutability
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 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-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 세부 정보는 AWS CLI 명령 참조의 SetRepositoryPolicy
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 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
예제에서는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 세부 정보는 AWS CLI 명령 참조의 TagResource
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 UntagResource
를 참조하세요.
-
다음 코드 예시에서는 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 세부 정보는 AWS CLI 명령 참조의 UploadLayerPart
를 참조하세요.
-