AWS CLI를 사용한 Amazon ECR Public 예제 - AWS Command Line Interface

이 문서는 AWS CLI의 버전 1에만 해당합니다. AWS CLI의 버전 2와 관련된 문서는 버전 2 사용 설명서를 참조하세요.

AWS CLI를 사용한 Amazon ECR Public 예제

다음 코드 예제에서는 Amazon ECR Public에서 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여 줍니다.

작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 관련 시나리오의 컨텍스트에 따라 표시되며, 개별 서비스 함수를 직접적으로 호출하는 방법을 보여줍니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

주제

작업

다음 코드 예시에서는 batch-delete-image을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 이미지 다이제스트 ID를 사용하여 이미지를 삭제하려면 이미지와 모든 태그가 퍼블릭 레지스트리의 리포지토리 내에서 삭제됩니다.

다음 batch-delete-image 예제에서는 이미지 다이제스트를 지정하여 이미지를 삭제합니다.

aws ecr-public batch-delete-image \ --repository-name project-a/nginx-web-app \ --image-ids imageDigest=sha256:b1f9deb5fe3711a3278379ebbcaefbc5d70a2263135db86bd27a0dae150546c2

출력:

{ "imageIds": [ { "imageDigest": "sha256:b1f9deb5fe3711a3278379ebbcaefbc5d70a2263135db86bd27a0dae150546c2", "imageTag": "latest" } ], "failures": [] }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에서 이미지 삭제를 참조하세요.

예제 2: 리포지토리에서 삭제하려는 이미지와 연결된 태그를 지정하여 이미지 삭제.

다음 batch-delete-image 예제에서는 퍼블릭 레지스트리에 project-a/nginx-web-app 이름이 지정된 이미지 리포지토리와 연결된 태그를 지정하여 이미지를 삭제합니다. 태그가 하나뿐이고 이 명령을 실행하면 이미지가 제거됩니다. 그렇지 않으면 동일한 이미지에 대해 여러 태그가 있는 경우 하나를 지정하면 태그만 리포지토리에서 제거되고 이미지는 제거되지 않습니다.

aws ecr-public batch-delete-image \ --repository-name project-a/nginx-web-app \ --image-ids imageTag=_temp

출력:

{ "imageIds": [ { "imageDigest": "sha256:f7a86a0760e2f8d7eff07e515fc87bf4bac45c35376c06f9a280f15ecad6d7e0", "imageTag": "_temp" } ], "failures": [] }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에서 이미지 삭제를 참조하세요.

예제 3: 여러 이미지를 삭제하려면 퍼블릭 레지스트리의 리포지토리에 대한 요청에서 여러 이미지 태그 또는 이미지 다이제스트를 지정할 수 있습니다.

다음 batch-delete-image 예제에서는 요청에 여러 이미지 태그 또는 이미지 다이제스트를 지정하여 project-a/nginx-web-app이라는 리포지토리에서 여러 이미지를 삭제합니다.

aws ecr-public batch-delete-image \ --repository-name project-a/nginx-web-app \ --image-ids imageTag=temp2.0 imageDigest=sha256:47ba980bc055353d9c0af89b1894f68faa43ca93856917b8406316be86f01278

출력:

{ "imageIds": [ { "imageDigest": "sha256:47ba980bc055353d9c0af89b1894f68faa43ca93856917b8406316be86f01278" }, { "imageDigest": "sha256:f7a86a0760e2f8d7eff07e515fc87bf4bac45c35376c06f9a280f15ecad6d7e0", "imageTag": "temp2.0" } ], "failures": [] }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에서 이미지 삭제를 참조하세요.

예제 4: 레지스트리 ID 및 이미지 다이제스트 ID를 사용하여 교차 AWS 계정의 이미지를 삭제하려면 이미지와 모든 태그가 퍼블릭 레지스트리의 리포지토리 내에서 삭제됩니다.

다음 batch-delete-image 예제에서는 교차 AWS 계정에서 이미지 다이제스트를 지정하여 이미지를 삭제합니다.

aws ecr-public batch-delete-image \ --registry-id 123456789098 \ --repository-name project-a/nginx-web-app \ --image-ids imageDigest=sha256:b1f9deb5fe3711a3278379ebbcaefbc5d70a2263135db86bd27a0dae150546c2 \ --region us-east-1

출력:

{ "imageIds": [ { "imageDigest": "sha256:b1f9deb5fe3711a3278379ebbcaefbc5d70a2263135db86bd27a0dae150546c2", "imageTag": "temp2.0" } ], "failures": [] }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에서 이미지 삭제를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조BatchDeleteImage를 참조하세요.

다음 코드 예시에서는 create-repository을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 퍼블릭 레지스트리에서 리포지토리를 생성하는 방법

다음 create-repository 예제에서는 퍼블릭 레지스트리에 project-a/nginx-web-app이라는 리포지토리를 생성합니다.

aws ecr-public create-repository \ --repository-name project-a/nginx-web-app

출력:

{ "repository": { "repositoryArn": "arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app", "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "repositoryUri": "public.ecr.aws/public-registry-custom-alias/project-a/nginx-web-app", "createdAt": "2024-07-01T21:08:55.131000+00:00" }, "catalogData": {} }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리 생성을 참조하세요.

예제 2: 리포지토리의 이미지가 호환되는 리포지토리의 내용, 시스템 및 운영 아키텍처에 대한 간단한 설명과 함께 퍼블릭 레지스트리에 리포지토리를 만드는 방법

다음 create-repository 예제에서는 리포지토리의 내용, 리포지토리의 이미지가 호환되는 시스템 및 운영 아키텍처에 대한 간략한 설명과 함께 퍼블릭 레지스트리에 project-a/nginx-web-app이라는 리포지토리를 생성합니다.

aws ecr-public create-repository \ --repository-name project-a/nginx-web-app \ --catalog-data 'description=My project-a ECR Public Repository,architectures=ARM,ARM 64,x86,x86-64,operatingSystems=Linux'

출력:

{ "repository": { "repositoryArn": "arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app", "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "repositoryUri": "public.ecr.aws/public-registry-custom-alias/project-a/nginx-web-app", "createdAt": "2024-07-01T21:23:20.455000+00:00" }, "catalogData": { "description": "My project-a ECR Public Repository", "architectures": [ "ARM", "ARM 64", "x86", "x86-64" ], "operatingSystems": [ "Linux" ] } }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리 생성을 참조하세요.

예제 3: 퍼블릭 레지스트리에 리포지토리를 만드는 방법과 logoImageBlob, aboutText, usageText 및 태그 정보

다음 create-repository 예제에서는 logoImageBlob, aboutText, usageText 및 태그 정보와 함께 퍼블릭 레지스트리에 project-a/nginx-web-app이라는 이름의 리포지토리를 생성합니다.

aws ecr-public create-repository \ --cli-input-json file://myfile.json

myfile.json의 콘텐츠:

{ "repositoryName": "project-a/nginx-web-app", "catalogData": { "description": "My project-a ECR Public Repository", "architectures": [ "ARM", "ARM 64", "x86", "x86-64" ], "operatingSystems": [ "Linux" ], "logoImageBlob": "iVBORw0KGgoA<<truncated-for-better-reading>>ErkJggg==", "aboutText": "## Quick reference\n\nMaintained by: [the Amazon Linux Team](https://github.com/aws/amazon-linux-docker-images)\n\nWhere to get help: [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](https://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker)\n\n## Supported tags and respective `dockerfile` links\n\n* [`2.0.20200722.0`, `2`, `latest`](https://github.com/amazonlinux/container-images/blob/03d54f8c4d522bf712cffd6c8f9aafba0a875e78/Dockerfile)\n* [`2.0.20200722.0-with-sources`, `2-with-sources`, `with-sources`](https://github.com/amazonlinux/container-images/blob/1e7349845e029a2e6afe6dc473ef17d052e3546f/Dockerfile)\n* [`2018.03.0.20200602.1`, `2018.03`, `1`](https://github.com/amazonlinux/container-images/blob/f10932e08c75457eeb372bf1cc47ea2a4b8e98c8/Dockerfile)\n* [`2018.03.0.20200602.1-with-sources`, `2018.03-with-sources`, `1-with-sources`](https://github.com/amazonlinux/container-images/blob/8c9ee491689d901aa72719be0ec12087a5fa8faf/Dockerfile)\n\n## What is Amazon Linux?\n\nAmazon Linux is provided by Amazon Web Services (AWS). It is designed to provide a stable, secure, and high-performance execution environment for applications running on Amazon EC2. The full distribution includes packages that enable easy integration with AWS, including launch configuration tools and many popular AWS libraries and tools. AWS provides ongoing security and maintenance updates to all instances running Amazon Linux.\n\nThe Amazon Linux container image contains a minimal set of packages. To install additional packages, [use `yum`](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-software.html).\n\nAWS provides two versions of Amazon Linux: [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) and [Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/).\n\nFor information on security updates for Amazon Linux, please refer to [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) and [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/). Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities.\n\n## Where can I run Amazon Linux container images?\n\nYou can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in Amazon EC2 instances, and Amazon ECS clusters.\n\n## License\n\nAmazon Linux is available under the [GNU General Public License, version 2.0](https://github.com/aws/amazon-linux-docker-images/blob/master/LICENSE). Individual software packages are available under their own licenses; run `rpm -qi [package name]` or check `/usr/share/doc/[package name]-*` and `/usr/share/licenses/[package name]-*` for details.\n\nAs with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).\n\nSome additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `amazonlinux/` directory](https://github.com/docker-library/repo-info/tree/master/repos/amazonlinux).\n\n## Security\n\nFor information on security updates for Amazon Linux, please refer to [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) and [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/). Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities.", "usageText": "## Supported architectures\n\namd64, arm64v8\n\n## Where can I run Amazon Linux container images?\n\nYou can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in Amazon EC2 instances, and ECS clusters.\n\n## How do I install a software package from Extras repository in Amazon Linux 2?\n\nAvailable packages can be listed with the `amazon-linux-extras` command. Packages can be installed with the `amazon-linux-extras install <package>` command. Example: `amazon-linux-extras install rust1`\n\n## Will updates be available for Amazon Linux containers?\n\nSimilar to the Amazon Linux images for Amazon EC2 and on-premises use, Amazon Linux container images will get ongoing updates from Amazon in the form of security updates, bug fix updates, and other enhancements. Security bulletins for Amazon Linux are available at https://alas.aws.amazon.com/\n\n## Will AWS Support the current version of Amazon Linux going forward?\n\nYes; in order to avoid any disruption to your existing applications and to facilitate migration to Amazon Linux 2, AWS will provide regular security updates for Amazon Linux 2018.03 AMI and container image for 2 years after the final LTS build is announced. You can also use all your existing support channels such as AWS Support and Amazon Linux Discussion Forum to continue to submit support requests." }, "tags": [ { "Key": "Name", "Value": "project-a/nginx-web-app" }, { "Key": "Environment", "Value": "Prod" } ] }

출력:

{ "repository": { "repositoryArn": "arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app", "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "repositoryUri": "public.ecr.aws/public-registry-custom-alias/project-a/nginx-web-app", "createdAt": "2024-07-01T21:53:05.749000+00:00" }, "catalogData": { "description": "My project-a ECR Public Repository", "architectures": [ "ARM", "ARM 64", "x86", "x86-64" ], "operatingSystems": [ "Linux" ], "logoUrl": "https://d3g9o9u8re44ak.cloudfront.net/logo/23861450-4b9b-403c-9a4c-7aa0ef140bb8/2f9bf5a7-a32f-45b4-b5cd-c5770a35e6d7.png", "aboutText": "## Quick reference\n\nMaintained by: [the Amazon Linux Team](https://github.com/aws/amazon-linux-docker-images)\n\nWhere to get help: [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](https://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker)\n\n## Supported tags and respective `dockerfile` links\n\n* [`2.0.20200722.0`, `2`, `latest`](https://github.com/amazonlinux/container-images/blob/03d54f8c4d522bf712cffd6c8f9aafba0a875e78/Dockerfile)\n* [`2.0.20200722.0-with-sources`, `2-with-sources`, `with-sources`](https://github.com/amazonlinux/container-images/blob/1e7349845e029a2e6afe6dc473ef17d052e3546f/Dockerfile)\n* [`2018.03.0.20200602.1`, `2018.03`, `1`](https://github.com/amazonlinux/container-images/blob/f10932e08c75457eeb372bf1cc47ea2a4b8e98c8/Dockerfile)\n* [`2018.03.0.20200602.1-with-sources`, `2018.03-with-sources`, `1-with-sources`](https://github.com/amazonlinux/container-images/blob/8c9ee491689d901aa72719be0ec12087a5fa8faf/Dockerfile)\n\n## What is Amazon Linux?\n\nAmazon Linux is provided by Amazon Web Services (AWS). It is designed to provide a stable, secure, and high-performance execution environment for applications running on Amazon EC2. The full distribution includes packages that enable easy integration with AWS, including launch configuration tools and many popular AWS libraries and tools. AWS provides ongoing security and maintenance updates to all instances running Amazon Linux.\n\nThe Amazon Linux container image contains a minimal set of packages. To install additional packages, [use `yum`](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-software.html).\n\nAWS provides two versions of Amazon Linux: [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) and [Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/).\n\nFor information on security updates for Amazon Linux, please refer to [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) and [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/). Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities.\n\n## Where can I run Amazon Linux container images?\n\nYou can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in Amazon EC2 instances, and Amazon ECS clusters.\n\n## License\n\nAmazon Linux is available under the [GNU General Public License, version 2.0](https://github.com/aws/amazon-linux-docker-images/blob/master/LICENSE). Individual software packages are available under their own licenses; run `rpm -qi [package name]` or check `/usr/share/doc/[package name]-*` and `/usr/share/licenses/[package name]-*` for details.\n\nAs with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).\n\nSome additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `amazonlinux/` directory](https://github.com/docker-library/repo-info/tree/master/repos/amazonlinux).\n\n## Security\n\nFor information on security updates for Amazon Linux, please refer to [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) and [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/). Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities.", "usageText": "## Supported architectures\n\namd64, arm64v8\n\n## Where can I run Amazon Linux container images?\n\nYou can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in Amazon EC2 instances, and ECS clusters.\n\n## How do I install a software package from Extras repository in Amazon Linux 2?\n\nAvailable packages can be listed with the `amazon-linux-extras` command. Packages can be installed with the `amazon-linux-extras install <package>` command. Example: `amazon-linux-extras install rust1`\n\n## Will updates be available for Amazon Linux containers?\n\nSimilar to the Amazon Linux images for Amazon EC2 and on-premises use, Amazon Linux container images will get ongoing updates from Amazon in the form of security updates, bug fix updates, and other enhancements. Security bulletins for Amazon Linux are available at https://alas.aws.amazon.com/\n\n## Will AWS Support the current version of Amazon Linux going forward?\n\nYes; in order to avoid any disruption to your existing applications and to facilitate migration to Amazon Linux 2, AWS will provide regular security updates for Amazon Linux 2018.03 AMI and container image for 2 years after the final LTS build is announced. You can also use all your existing support channels such as AWS Support and Amazon Linux Discussion Forum to continue to submit support requests." } }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리 생성Amazon ECR Public 사용 설명서리포지토리 카탈로그 데이터를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateRepository를 참조하세요.

다음 코드 예시에서는 delete-repository-policy을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 레지스트리에서 리포지토리 정책을 삭제하려면

다음 delete-repository-policy 예제에서는 AWS 계정의 ECR Public 리포지토리에 대한 리포지토리 정책을 삭제합니다.

aws ecr-public delete-repository-policy \ --repository-name project-a/nginx-web-app \ --region us-east-1

출력:

{ "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"AllowPush\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : [ \"arn:aws:iam:"123456789012":user/eksuser1\", \"arn:aws:iam:"123456789012":user/admin\" ]\n },\n \"Action\" : [ \"ecr-public:BatchCheckLayerAvailability\", \"ecr-public:PutImage\", \"ecr-public:InitiateLayerUpload\", \"ecr-public:UploadLayerPart\", \"ecr-public:CompleteLayerUpload\" ]\n } ]\n}" }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리 정책 명령문 삭제를 참조하세요.

다음 코드 예시에서는 delete-repository을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 레지스트리에서 리포지토리를 삭제하는 방법

다음 delete-repository 예제에서는 퍼블릭 레지스트리에서 이름이 project-a/nginx-web-app인 리포지토리를 삭제합니다.

aws ecr-public delete-repository \ --repository-name project-a/nginx-web-app

출력:

{ "repository": { "repositoryArn": "arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app", "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "repositoryUri": "public.ecr.aws/public-registry-custom-alias/project-a/nginx-web-app", "createdAt": "2024-07-01T22:14:50.103000+00:00" } }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리 삭제를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조의 DeleteRepository를 참조하세요.

다음 코드 예시에서는 describe-image-tags을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 퍼블릭 리포지토리의 이미지 태그 세부 정보 설명

다음 describe-image-tags 예제에서는 project-a/nginx-web-app 샘플 리포지토리의 이미지 태그를 설명합니다.

aws ecr-public describe-image-tags \ --repository-name project-a/nginx-web-app \ --region us-east-1

출력:

{ "imageTagDetails": [ { "imageTag": "latest", "createdAt": "2024-07-10T22:29:00-05:00", "imageDetail": { "imageDigest": "sha256:b1f9deb5fe3711a3278379ebbcaefbc5d70a2263135db86bd27a0dae150546c2", "imageSizeInBytes": 121956548, "imagePushedAt": "2024-07-10T22:29:00-05:00", "imageManifestMediaType": "application/vnd.docker.distribution.manifest.v2+json", "artifactMediaType": "application/vnd.docker.container.image.v1+json" } } ] }
  • API 세부 정보는 AWS CLI 명령 참조DescribeImageTags를 참조하세요.

다음 코드 예시에서는 describe-images을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 퍼블릭 레지스트리 리포지토리의 이미지 설명

다음 describe-images 예제에서는 퍼블릭 레지스트리에서 project-a/nginx-web-app이라는 리포지토리의 imagesDetails를 설명합니다.

aws ecr-public describe-images \ --repository-name project-a/nginx-web-app \ --region us-east-1

출력:

{ "imageDetails": [ { "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "imageDigest": "sha256:0d8c93e72e82fa070d49565c00af32abbe8ddfd7f75e39f4306771ae0628c7e8", "imageTags": [ "temp1.0" ], "imageSizeInBytes": 123184716, "imagePushedAt": "2024-07-23T11:32:49-05:00", "imageManifestMediaType": "application/vnd.docker.distribution.manifest.v2+json", "artifactMediaType": "application/vnd.docker.container.image.v1+json" }, { "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "imageDigest": "sha256:b1f9deb5fe3711a3278379ebbcaefbc5d70a2263135db86bd27a0dae150546c2", "imageTags": [ "temp2.0" ], "imageSizeInBytes": 121956548, "imagePushedAt": "2024-07-23T11:39:38-05:00", "imageManifestMediaType": "application/vnd.docker.distribution.manifest.v2+json", "artifactMediaType": "application/vnd.docker.container.image.v1+json" }, { "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "imageDigest": "sha256:f7a86a0760e2f8d7eff07e515fc87bf4bac45c35376c06f9a280f15ecad6d7e0", "imageTags": [ "temp3.0", "latest" ], "imageSizeInBytes": 232108879, "imagePushedAt": "2024-07-22T00:54:34-05:00", "imageManifestMediaType": "application/vnd.docker.distribution.manifest.v2+json", "artifactMediaType": "application/vnd.docker.container.image.v1+json" } ] }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리의 이미지 설명을 참조하세요.

예제 2: imageTags & imagePushedAt를 정렬하여 리포지토리의 이미지 설명

다음 describe-images 예제에서는 퍼블릭 레지스트리의 project-a/nginx-web-app이라는 리포지토리 내의 이미지를 설명합니다.

aws ecr-public describe-images \ --repository-name project-a/nginx-web-app \ --query 'sort_by(imageDetails,& imagePushedAt)[*].imageTags[*]' \ --output text

출력:

temp3.0 latest temp1.0 temp2.0

예제 3: 리포지토리에서 푸시된 마지막 이미지 태그 2개를 생성하기 위해 리포지토리의 이미지를 설명

다음 describe-images 예제에서는 퍼블릭 레지스트리의 project-a/nginx-web-app이라는 리포지토리에서 이미지 태그 세부 정보를 가져오고 결과를 쿼리하여 처음 두 레코드만 표시합니다.

aws ecr-public describe-images \ --repository-name project-a/nginx-web-app \ --query 'sort_by(imageDetails,& imagePushedAt)[*].imageTags[*] | [0:2]' \ --output text

출력:

temp3.0 latest temp1.0
  • API 세부 정보는 AWS CLI 명령 참조DescribeImages를 참조하세요.

다음 코드 예시에서는 describe-registries을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 레지스트리의 모든 레지스트리를 설명하려면

다음 describe-registries 예제에서는 계정의 모든 레지스트리를 설명합니다.

aws ecr-public describe-registries

출력:

{ "registries": [ { "registryId": "123456789012", "registryArn": "arn:aws:ecr-public::123456789012:registry/123456789012", "registryUri": "public.ecr.aws/publicregistrycustomalias", "verified": false, "aliases": [ { "name": "publicregistrycustomalias", "status": "ACTIVE", "primaryRegistryAlias": true, "defaultRegistryAlias": true } ] } ] }

다음 코드 예시에서는 describe-repository을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 퍼블릭 레지스트리의 리포지토리 설명

다음 describe-repositories 예제에서는 퍼블릭 레지스트리의 project-a/nginx-web-app이라는 리포지토리를 설명합니다.

aws ecr-public describe-repositories \ --repository-name project-a/nginx-web-app

출력:

{ "repositories": [ { "repositoryArn": "arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app", "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "repositoryUri": "public.ecr.aws/public-registry-custom-alias/project-a/nginx-web-app", "createdAt": "2024-07-07T00:07:56.526000-05:00" } ] }

예제 2: 테이블의 퍼블릭 레지스트리에 있는 모든 리포지토리 설명

다음 describe-repositories 예제에서는 퍼블릭 레지스트리의 모든 리포지토리를 설명한 다음 리포지토리 이름을 테이블 형식으로 출력합니다.

aws ecr-public describe-repositories \ --region us-east-1 \ --output table \ --query "repositories[*].repositoryName"

출력:

----------------------------- | DescribeRepositories | +---------------------------+ | project-a/nginx-web-app | | nginx | | myfirstrepo1 | | helm-test-chart | | test-ecr-public | | nginx-web-app | | sample-repo | +---------------------------+
  • API 세부 정보는 AWS CLI 명령 참조의 DescribeRepository 섹션을 참조하세요.

다음 코드 예시에서는 get-authorization-token을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: IAM 보안 주체가 액세스할 수 있는 Amazon ECR 퍼블릭 레지스트리에 대한 권한 부여 토큰 검색

다음 get-authorization-token 예제에서는 AWS CLI를 사용하여 권한 부여 토큰을 가져와 환경 변수로 설정합니다.

aws ecr-public get-authorization-token \ --region us-east-1

출력:

{ "authorizationData": { "authorizationToken": "QVdTOmV5SndZWGxzYjJKJFHDSFKJHERWUY65IOU36TRYEGFNSDLRIUOTUYTHJKLDFGOcmFUQk9OSFV2UVV4a0x6Sm1ZV0Z6TDFndlZtUjJSVmgxVEVObU9IZEdTWEZxU210c1JUQm5RWGxOUVV4NlNFUnROWG92ZWtGbWJFUjRkbWMyV0U5amFpczRNWGxTVkM5Tk5qWkVUM2RDYm05TVJqSkxjV3BsUVZvMmFYSm5iV1ZvVFdGSVRqVlFMMHN4VnpsTGVXbDFRWGRoTmpsbWFuQllhbVl6TkdGaGMwUjJha2xsYUhscWRscHZTRUpFVkVnNVQwNUdOVFpPY2xZclVFNVFVWGRSVFZvd04xUkhjVGxZZFVkQ1ZFZHBPRUptUzBVclYxQldMMjVMVkRsd2VFVlNSa1EzTWpWSlIxRkVWakJGZFZOVWEzaFBSVk5FWWpSc1lWZHZWMHBSYmxaMlJYWmhZekpaWVVOeFppdFlUa2xKU1RCdFUwdElVbXRJYlhGRk1WaFhNVTVRTkdwc1FYRlVNVWxZZUhkV05Xa3ZXWGd3ZUVZMWIyeE5VRU5QZEdSaWRHOU9lakZOZVdwTVZEUkNRVzlvYzNKSlpsRXhhR2cwWjJwRVJFVjNWalEzYjNCUmRIcEZUR1pYU1Rsc1kxSlNNbU5hUW5wRE1tOUpRMHR5Y1hkeGNXNDVMMmx4Um5GUlVGQnhjMVpQZG5WYUswOW9SQ3RPY0hwSlRsUk5lVXQyY0c1b1FsQjVZVEprVmtSdmJsQklOM05RU3pkNmQydERhMkZ5VmxSRmFVUndWVlE1ZGtsVWFXUkJWMFZEWVhoSFdXTk5VMXBTYTFreVRHZEVlVVZ0ZFRWRk4xTTVjRXBDUjBRMlYyTkdPVWhGWkVweVVGcEVaRFJxZUVablkwNXFaamh5YkVKWmJGSTNOVzFXSzFjdllXSTVTMWx2YUZacksxSnJWSFJ0Wml0T1NFSnpWVFZvV204eVFYbzFWRU5SYjNaR01Va3hPR3h2TWxkNVJsSmpUbTVSTjNjemJsUkdVRlZKVDBjeE9VeHlXVEpGVFRSS2NWbFdkVEJrV0VreFVsSktXbkpCVGtsMFdVZEJOMjltWjFFNGVHRktNbGRuWlVoUlNXNXdZV3A0VjI5M2FYZGljbE5tZGpkQ1ZYTmhOVFUyTDBzeVpteDBka0pUTVdkNGJ6TkxkSEJDYml0cE0waGhTbVpEZEZkQ00yOU1TM1pXTDNSVFlWaFpWelZXVWxjNFRXNXdhR3BhUmpoU1FuWnFkRlJMVW5abGRYRlNjVVJKZDBaSFpXUTRabEZUTUdOTVQwcFFkVXAyYjA5Tk9UaFlZMjEwVnpFMlpXdE9hMnBWV0hST1owUkpVV3R1VFU1dGJXWjNNVGc0VTAxUlNHZE9TbXRMY2tWYWJVeFljVVk0ZWpsTFdWWlRNbEZMVDJkMk1FaFBTMDl5YzJSM1NqTlplRGhUWVVOQlJGWnRlbkU1WTBKVFdqTktSR05WTkd0RGNEVjZNalJHVXpkVk9HTnVSa2xLUVd4SVJDODJXbGcyYldGemJVczJPRVp6TDBoNFMwWkRUMmdyYldGa1QwWjVhMlZQTm5SQ1l6QkpNbFpyVUhSaGVIbFVOR296VjFGVlQyMHpNeTlPWVVoSk1FdDBWalZFU2pneU5rcHNLemQxZDNwcVp6RlNja3AwVm10VU0yRnRWWGMzZDJnMFduSnFjVXczWTBjclNXeHFUVlUyVkZwWGNWY3ZSV0V6WW1oT2JIRklZVlJHU1RrMGEyOVJiMHBPVUhORk9FdERjbFJZY0daS2VVdHRZa2x5YjFORE4zSkJaWEJPZUU5eGR6WnhZMlY1WXprM1JtSkZhVFZFYkVFck5EUk9ZMWRyVEVNd1dqa2lMQ0prWVhSaGEyVjVJam9pWlhsS1VWSkdaMmxQYVVwV1ZXeENhVk5YVm14WFdFWk5VMjFrV21SRE9YaGFhWFF4VkhwS1MyTkljSHBVUms0MFlWaHNTbUpIYUhsWFZHdDZZVWhqZDFKRmFETldNbFYyWTJ0cmVVMUlTbHBWUjJONFRURlJNMDlHYUd4U01uaHVWRVJzUWxaV1pGZFJibkJLV1RCYU5HTXpUakpXTUhoWFRrWndhRTVyTVVwVFZFSkdWV3RzTUZaVVpEQlRSVGxyVkVkb2FGUlVVWHBaTVhCSFQxWmFOVlJxU20xaVZXUnVTM3BaTlZaV2NIcFdWMlJGVkcwMVRHSXdSakpXUnpoNlVsUm5kbUpzUmpGT2FUazFWVzFTY0dWR1FtOVdiVEZoVmpKc1NWRllhRmRTUkZwc1V6SkdSbUpWYkhCVlNFbDJWVzB4Ym1OVk1IWmFhelZ3WkZoa1FtVnFUa3BpTTJoTVRWVk9jMVo2V2t4aWJFWnJWRVUxVW1ONlp6QldWVFZPWW14c01sZFlZekprUjFwVFkxaE9kRnBXWkhaVFZWcGhWa2MxU2xWRlVtdFRiWE16WWpOVmVrNXFSa2RVTTJSd1QwaGtXbVJIVVhsbGJYQkRaRlp2ZGxvd1ZqWmlNbEl4Vkc1T2FtSldjRU5VU0ZVd1kwZDRjbU14WkhaVVYwNTRaRzV2TWxSVlVsQmpiSEJPVkc1VmVsZEZPVzVYYkVwWlUyNWtVbGRZWkZWaVdFWlNUVzF3VFZSSVFraE9XRnBwWVZoak0xUnJXak5OYm04eFpEQk9XbEZzYkhSTmEyaHpaRmRTUTJORVFUQlpWMk01VUZOSmMwbHJiRUpTUTBrMlNXNUZlbHA2U1RGVVZXeFVZekIwYVU5RWFEVmtiRVpzVVZWc2QxbHJWbmxOYW13MVZWaG9UazVzVWpWbFJHaDZZMjFHVkZVeFFubFZXRTVLVGpCMGFXSlZNWGhpUjBwTVlUSTVNRTVVYXpCTE0wVnlWakF4VG1WSE5VcGtSa0pRVld4V1UwOVdVWGhqTVc4eVZraFdlVnA2VGsxV01tUnhVV3Q0ZEdGcVRsUk5hMnN5V2tSV2FtUkdVakZqVm5CUFVrUlNjR0pHUm1GbGFscDRXV2x6Y2xFd1VYcGhSRnBZVmtaU2FVNXVSVFZYYlVaVFpXdHdkVmRZVGpaVGEyaDBWMnhDVlU0elZrWlRSRUpIVlVWa2MwNVlhRFZsUkVwelQwWkNSbE5WY0ZGWFNFWXhaVmMxVEZsVE9VeFdhMGt4V1ROS1Rrd3pXazFpYkhCdFVrUldWRlJHVlhaTmJVazBZbFZzUkV3d2N6UldSV2MxVDBWa05tSXpiM2hXVms1V1ZtMDFiRkZUT1hoUFJVcHpUMGRzU2xaSVJrTkxNVTVFWWtaa05WWnViRmRYVjJRd1RXcG5kMVJWUmpCa1JYQkdZVlYwZFZNeU1VVlpWVTVQV25wa1ExZHFVbE5sUjBaRVlWVTFXbVZwY3pSTE1HTTFVbFZGTlZwRll6UlRSMVoxVFcxb05XTnJkRUpWZWxsM1RETmplbUV4WkdGU1JsWm9ZVVpzZEdWR2JFTlVNblJYVkRCNE5HUXlkRXhaTWxKTlYxZDBWRTB5YUZwaFJsazFVMGR3Y0ZGVk9YaGxhekV6VVZRd09VbHVNRDBpTENKMlpYSnphVzl1SWpvaU15SXNJblI1Y0dVaU9pSkVRVlJCWDB0RldTSXNJbVY0Y0dseVlYUnBiMjRpT2pFM01qRTVOVGMzTmpKOQ==", "expiresAt": "2024-07-25T21:37:26.301000-04:00" } }

자세한 내용은 Amazon ECR Public 사용 설명서Amazon ECR 퍼블릭 레지스트리를 참조하세요.

예제 2: IAM 위탁자가 액세스할 수 있는 Amazon ECR 퍼블릭 레지스트리에 대한 권한 부여 토큰 검색

다음 get-authorization-token 예제에서는 AWS CLI를 사용하여 권한 부여 토큰을 가져와 환경 변수로 설정합니다.

aws ecr-public get-authorization-token \ --region us-east-1 \ --output=text \ --query 'authorizationData.authorizationToken'

출력:

QVdTOmV5SndZWGxzYjJKJFHDSFKJHERWUY65IOU36TRYEGFNSDLRIUOTUYTHJKLDFGOcmFUQk9OSFV2UVV4a0x6Sm1ZV0Z6TDFndlZtUjJSVmgxVEVObU9IZEdTWEZxU210c1JUQm5RWGxOUVV4NlNFUnROWG92ZWtGbWJFUjRkbWMyV0U5amFpczRNWGxTVkM5Tk5qWkVUM2RDYm05TVJqSkxjV3BsUVZvMmFYSm5iV1ZvVFdGSVRqVlFMMHN4VnpsTGVXbDFRWGRoTmpsbWFuQllhbVl6TkdGaGMwUjJha2xsYUhscWRscHZTRUpFVkVnNVQwNUdOVFpPY2xZclVFNVFVWGRSVFZvd04xUkhjVGxZZFVkQ1ZFZHBPRUptUzBVclYxQldMMjVMVkRsd2VFVlNSa1EzTWpWSlIxRkVWakJGZFZOVWEzaFBSVk5FWWpSc1lWZHZWMHBSYmxaMlJYWmhZekpaWVVOeFppdFlUa2xKU1RCdFUwdElVbXRJYlhGRk1WaFhNVTVRTkdwc1FYRlVNVWxZZUhkV05Xa3ZXWGd3ZUVZMWIyeE5VRU5QZEdSaWRHOU9lakZOZVdwTVZEUkNRVzlvYzNKSlpsRXhhR2cwWjJwRVJFVjNWalEzYjNCUmRIcEZUR1pYU1Rsc1kxSlNNbU5hUW5wRE1tOUpRMHR5Y1hkeGNXNDVMMmx4Um5GUlVGQnhjMVpQZG5WYUswOW9SQ3RPY0hwSlRsUk5lVXQyY0c1b1FsQjVZVEprVmtSdmJsQklOM05RU3pkNmQydERhMkZ5VmxSRmFVUndWVlE1ZGtsVWFXUkJWMFZEWVhoSFdXTk5VMXBTYTFreVRHZEVlVVZ0ZFRWRk4xTTVjRXBDUjBRMlYyTkdPVWhGWkVweVVGcEVaRFJxZUVablkwNXFaamh5YkVKWmJGSTNOVzFXSzFjdllXSTVTMWx2YUZacksxSnJWSFJ0Wml0T1NFSnpWVFZvV204eVFYbzFWRU5SYjNaR01Va3hPR3h2TWxkNVJsSmpUbTVSTjNjemJsUkdVRlZKVDBjeE9VeHlXVEpGVFRSS2NWbFdkVEJrV0VreFVsSktXbkpCVGtsMFdVZEJOMjltWjFFNGVHRktNbGRuWlVoUlNXNXdZV3A0VjI5M2FYZGljbE5tZGpkQ1ZYTmhOVFUyTDBzeVpteDBka0pUTVdkNGJ6TkxkSEJDYml0cE0waGhTbVpEZEZkQ00yOU1TM1pXTDNSVFlWaFpWelZXVWxjNFRXNXdhR3BhUmpoU1FuWnFkRlJMVW5abGRYRlNjVVJKZDBaSFpXUTRabEZUTUdOTVQwcFFkVXAyYjA5Tk9UaFlZMjEwVnpFMlpXdE9hMnBWV0hST1owUkpVV3R1VFU1dGJXWjNNVGc0VTAxUlNHZE9TbXRMY2tWYWJVeFljVVk0ZWpsTFdWWlRNbEZMVDJkMk1FaFBTMDl5YzJSM1NqTlplRGhUWVVOQlJGWnRlbkU1WTBKVFdqTktSR05WTkd0RGNEVjZNalJHVXpkVk9HTnVSa2xLUVd4SVJDODJXbGcyYldGemJVczJPRVp6TDBoNFMwWkRUMmdyYldGa1QwWjVhMlZQTm5SQ1l6QkpNbFpyVUhSaGVIbFVOR296VjFGVlQyMHpNeTlPWVVoSk1FdDBWalZFU2pneU5rcHNLemQxZDNwcVp6RlNja3AwVm10VU0yRnRWWGMzZDJnMFduSnFjVXczWTBjclNXeHFUVlUyVkZwWGNWY3ZSV0V6WW1oT2JIRklZVlJHU1RrMGEyOVJiMHBPVUhORk9FdERjbFJZY0daS2VVdHRZa2x5YjFORE4zSkJaWEJPZUU5eGR6WnhZMlY1WXprM1JtSkZhVFZFYkVFck5EUk9ZMWRyVEVNd1dqa2lMQ0prWVhSaGEyVjVJam9pWlhsS1VWSkdaMmxQYVVwV1ZXeENhVk5YVm14WFdFWk5VMjFrV21SRE9YaGFhWFF4VkhwS1MyTkljSHBVUms0MFlWaHNTbUpIYUhsWFZHdDZZVWhqZDFKRmFETldNbFYyWTJ0cmVVMUlTbHBWUjJONFRURlJNMDlHYUd4U01uaHVWRVJzUWxaV1pGZFJibkJLV1RCYU5HTXpUakpXTUhoWFRrWndhRTVyTVVwVFZFSkdWV3RzTUZaVVpEQlRSVGxyVkVkb2FGUlVVWHBaTVhCSFQxWmFOVlJxU20xaVZXUnVTM3BaTlZaV2NIcFdWMlJGVkcwMVRHSXdSakpXUnpoNlVsUm5kbUpzUmpGT2FUazFWVzFTY0dWR1FtOVdiVEZoVmpKc1NWRllhRmRTUkZwc1V6SkdSbUpWYkhCVlNFbDJWVzB4Ym1OVk1IWmFhelZ3WkZoa1FtVnFUa3BpTTJoTVRWVk9jMVo2V2t4aWJFWnJWRVUxVW1ONlp6QldWVFZPWW14c01sZFlZekprUjFwVFkxaE9kRnBXWkhaVFZWcGhWa2MxU2xWRlVtdFRiWE16WWpOVmVrNXFSa2RVTTJSd1QwaGtXbVJIVVhsbGJYQkRaRlp2ZGxvd1ZqWmlNbEl4Vkc1T2FtSldjRU5VU0ZVd1kwZDRjbU14WkhaVVYwNTRaRzV2TWxSVlVsQmpiSEJPVkc1VmVsZEZPVzVYYkVwWlUyNWtVbGRZWkZWaVdFWlNUVzF3VFZSSVFraE9XRnBwWVZoak0xUnJXak5OYm04eFpEQk9XbEZzYkhSTmEyaHpaRmRTUTJORVFUQlpWMk01VUZOSmMwbHJiRUpTUTBrMlNXNUZlbHA2U1RGVVZXeFVZekIwYVU5RWFEVmtiRVpzVVZWc2QxbHJWbmxOYW13MVZWaG9UazVzVWpWbFJHaDZZMjFHVkZVeFFubFZXRTVLVGpCMGFXSlZNWGhpUjBwTVlUSTVNRTVVYXpCTE0wVnlWakF4VG1WSE5VcGtSa0pRVld4V1UwOVdVWGhqTVc4eVZraFdlVnA2VGsxV01tUnhVV3Q0ZEdGcVRsUk5hMnN5V2tSV2FtUkdVakZqVm5CUFVrUlNjR0pHUm1GbGFscDRXV2x6Y2xFd1VYcGhSRnBZVmtaU2FVNXVSVFZYYlVaVFpXdHdkVmRZVGpaVGEyaDBWMnhDVlU0elZrWlRSRUpIVlVWa2MwNVlhRFZsUkVwelQwWkNSbE5WY0ZGWFNFWXhaVmMxVEZsVE9VeFdhMGt4V1ROS1Rrd3pXazFpYkhCdFVrUldWRlJHVlhaTmJVazBZbFZzUkV3d2N6UldSV2MxVDBWa05tSXpiM2hXVms1V1ZtMDFiRkZUT1hoUFJVcHpUMGRzU2xaSVJrTkxNVTVFWWtaa05WWnViRmRYVjJRd1RXcG5kMVJWUmpCa1JYQkdZVlYwZFZNeU1VVlpWVTVQV25wa1ExZHFVbE5sUjBaRVlWVTFXbVZwY3pSTE1HTTFVbFZGTlZwRll6UlRSMVoxVFcxb05XTnJkRUpWZWxsM1RETmplbUV4WkdGU1JsWm9ZVVpzZEdWR2JFTlVNblJYVkRCNE5HUXlkRXhaTWxKTlYxZDBWRTB5YUZwaFJsazFVMGR3Y0ZGVk9YaGxhekV6VVZRd09VbHVNRDBpTENKMlpYSnphVzl1SWpvaU15SXNJblI1Y0dVaU9pSkVRVlJCWDB0RldTSXNJbVY0Y0dseVlYUnBiMjRpT2pFM01qRTVOVGMzTmpKOQ

자세한 내용은 Amazon ECR Public 사용 설명서Amazon ECR 퍼블릭 레지스트리를 참조하세요.

다음 코드 예시에서는 get-login-password을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: Amazon ECR 퍼블릭 레지스트리에 대한 Docker 인증

다음 get-login-password 예제에서는 Amazon ECR 퍼블릭 레지스트리에 인증하는 데 사용할 수 있는 GetAuthorizationToken API를 사용하여 인증 토큰을 검색하고 표시합니다.

aws ecr-public get-login-password \ --region us-east-1 | docker login \ --username AWS \ --password-stdin public.ecr.aws

이 명령은 터미널에 출력을 생성하지 않고 대신 출력을 Docker에 파이프합니다.

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 레지스트리에 인증 섹션을 참조하세요.

예제 2: 사용자 지정 AmazonECR 퍼블릭 레지스트리에 대한 Docker 인증

다음 get-login-password 예제에서는 사용자 지정 Amazon ECR 퍼블릭 레지스트리에 인증하는 데 사용할 수 있는 GetAuthorizationToken API를 사용하여 인증 토큰을 검색하고 표시합니다.

aws ecr-public get-login-password \ --region us-east-1 \ | docker login \ --username AWS \ --password-stdin public.ecr.aws/<your-public-registry-custom-alias>

이 명령은 터미널에 출력을 생성하지 않고 대신 출력을 Docker에 파이프합니다.

자세한 내용은 Amazon ECR Public 사용 설명서자체 Amazon ECR 퍼블릭에 인증을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조GetLoginPassword를 참조하세요.

다음 코드 예시에서는 get-registry-catalog-data을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 ECR 레지스트리의 카탈로그 메타데이터를 검색하려면

다음 get-registry-catalog-data 예제에서는 ECR 퍼블릭 레지스트리의 카탈로그 메타데이터를 검색합니다.

aws ecr-public get-registry-catalog-data \ --region us-east-1

출력:

{ "registryCatalogData": { "displayName": "YourCustomPublicRepositoryalias" } }

다음 코드 예시에서는 get-repository-catalog-data을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 레지스트리의 리포지토리에 대한 카탈로그 메타데이터를 검색하려면

다음 get-repository-catalog-data 예제에서는 퍼블릭 레지스트리의 project-a/nginx-web-app 리포지토리에 대한 카탈로그 메타데이터를 나열합니다.

aws ecr-public get-repository-catalog-data \ --repository-name project-a/nginx-web-app \ --region us-east-1

출력:

{ "catalogData": { "description": "My project-a ECR Public Repository", "architectures": [ "ARM", "ARM 64", "x86", "x86-64" ], "operatingSystems": [ "Linux" ], "logoUrl": "https://d3g9o9u8re44ak.cloudfront.net/logo/491d3846-8f33-4d8b-a10c-c2ce271e6c0d/4f09d87c-2569-4916-a932-5c296bf6f88a.png", "aboutText": "## Quick reference\n\nMaintained <truncated>", "usageText": "## Supported architectures\n\namd64, arm64v8\n\n## <truncated>" } }

자세한 내용은 Amazon ECR Public 사용 설명서리포지토리 카탈로그 데이터를 참조하세요.

다음 코드 예시에서는 get-repository-policy을 사용하는 방법을 보여 줍니다.

AWS CLI

리포지토리와 연결된 리포지토리 정책을 가져오려면

다음 get-repository-policy 예제에서는 리포지토리와 연결된 리포지토리 정책을 가져옵니다.

aws ecr-public get-repository-policy \ --repository-name project-a/nginx-web-app \ --region us-east-1

출력:

{ "registryId": "123456789012", "repositoryName": "project-a/nginx-web-app", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"AllowPush\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : [ \"arn:aws:iam::123456789012:user/eksuser1\", \"arn:aws:iam::123456789012:user/admin\" ]\n },\n \"Action\" : [ \"ecr-public:BatchCheckLayerAvailability\", \"ecr-public:PutImage\", \"ecr-public:InitiateLayerUpload\", \"ecr-public:UploadLayerPart\", \"ecr-public:CompleteLayerUpload\" ]\n } ]\n}" }

자세한 내용은 Amazon ECR Public 사용 설명서AWS SDK 또는 CLI에서 GetRepositoryPolicy 사용을 참조하세요.

다음 코드 예시에서는 list-tags-for-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 레지스트리에서 퍼블릭 리포지토리의 태그를 나열하려면

다음 list-tags-for-resource 예제에서는 퍼블릭 레지스트리에 project-a/nginx-web-app이라는 리소스의 태그를 나열합니다.

aws ecr-public list-tags-for-resource \ --resource-arn arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app \ --region us-east-1

출력:

{ "tags": [ { "Key": "Environment", "Value": "Prod" }, { "Key": "stack", "Value": "dev1" }, { "Key": "Name", "Value": "project-a/nginx-web-app" } ] }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리의 태그 나열을 참조하세요.

다음 코드 예시에서는 put-registry-catalog-data을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 ECR 레지스트리에 대한 카탈로그 메타데이터를 생성하거나 업데이트하려면

다음 put-registry-catalog-data에서는 ECR 퍼블릭 레지스트리에 대한 카탈로그 메타데이터를 생성하거나 업데이트합니다. 확인된 계정 배지가 있는 계정만 레지스트리 표시 이름을 가질 수 있습니다.

aws ecr-public put-registry-catalog-data \ --region us-east-1 \ --display-name <YourCustomPublicRepositoryalias>

출력:

{ "registryCatalogData": { "displayName": "YourCustomPublicRepositoryalias" } }

다음 코드 예시에서는 put-repository-catalog-data을 사용하는 방법을 보여 줍니다.

AWS CLI

퍼블릭 레지스트리의 리포지토리에 대한 카탈로그 데이터를 생성하거나 업데이트하려면

다음 put-repository-catalog-data 예제에서는 logoImageBlob, aboutText, usageText 및 태그 정보와 함께 퍼블릭 레지스트리에 project-a/nginx-web-app이라는 이름의 리포지토리의 카탈로그 데이터를 생성하거나 업데이트합니다.

aws ecr-public put-repository-catalog-data \ --repository-name project-a/nginx-web-app \ --cli-input-json file://repository-catalog-data.json \ --region us-east-1

repository-catalog-data.json의 콘텐츠:

{ "repositoryName": "project-a/nginx-web-app", "catalogData": { "description": "My project-a ECR Public Repository", "architectures": [ "ARM", "ARM 64", "x86", "x86-64" ], "operatingSystems": [ "Linux" ], "logoImageBlob": "iVBORw0KGgoA<<truncated-for-better-reading>>ErkJggg==", "aboutText": "## Quick reference.", "usageText": "## Supported architectures are as follows." } }

출력:

{ "catalogData": { "description": "My project-a ECR Public Repository", "architectures": [ "ARM", "ARM 64", "x86", "x86-64" ], "operatingSystems": [ "Linux" ], "logoUrl": "https://d3g9o9u8re44ak.cloudfront.net/logo/df86cf58-ee60-4061-b804-0be24d97ccb1/4a9ed9b2-69e4-4ede-b924-461462d20ef0.png", "aboutText": "## Quick reference.", "usageText": "## Supported architectures are as follows." } }

자세한 내용은 Amazon ECR Public 사용 설명서리포지토리 카탈로그 데이터를 참조하세요.

다음 코드 예시에서는 set-repository-policy을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 리포지토리에서 풀을 허용하도록 리포지토리 정책 설정

다음 set-repository-policy 예제에서는 ECR 퍼블릭 리포지토리 정책을 지정된 리포지토리에 적용하여 액세스 권한을 제어합니다.

aws ecr-public set-repository-policy \ --repository-name project-a/nginx-web-app \ --policy-text file://my-repository-policy.json

my-repository-policy.json의 콘텐츠:

{ "Version" : "2008-10-17", "Statement" : [ { "Sid" : "allow public pull", "Effect" : "Allow", "Principal" : "*", "Action" : [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

출력:

{ "registryId": "12345678901", "repositoryName": "project-a/nginx-web-app", "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}" }

자세한 내용은 Amazon ECR Public 사용 설명서리포지토리 정책 명령문 설정을 참조하세요.

예제 2: 계정 내 IAM 사용자가 이미지를 푸시할 수 있도록 리포지토리 정책 설정

다음 set-repository-policy 예제에서는 계정 내 IAM 사용자가 정책 텍스트로 file://my-repository-policy.json이라는 입력 파일을 사용하여 AWS 계정의 ECR 리포지토리로 이미지를 푸시할 수 있도록 허용합니다.

aws ecr-public set-repository-policy \ --repository-name project-a/nginx-web-app \ --policy-text file://my-repository-policy.json

my-repository-policy.json의 콘텐츠:

{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPush", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:user/push-pull-user-1", "arn:aws:iam::account-id:user/push-pull-user-2" ] }, "Action": [ "ecr-public:BatchCheckLayerAvailability", "ecr-public:PutImage", "ecr-public:InitiateLayerUpload", "ecr-public:UploadLayerPart", "ecr-public:CompleteLayerUpload" ] } ] }

출력:

{ "registryId": "12345678901", "repositoryName": "project-a/nginx-web-app", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"AllowPush\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : [ \"arn:aws:iam::12345678901:user/admin\", \"arn:aws:iam::12345678901:user/eksuser1\" ]\n },\n \"Action\" : [ \"ecr-public:BatchCheckLayerAvailability\", \"ecr-public:PutImage\", \"ecr-public:InitiateLayerUpload\", \"ecr-public:UploadLayerPart\", \"ecr-public:CompleteLayerUpload\" ]\n } ]\n}" }

자세한 내용은 Amazon ECR Public 사용 설명서리포지토리 정책 명령문 설정을 참조하세요.

예제 3: 다른 계정의 IAM 사용자가 이미지를 푸시할 수 있도록 리포지토리 정책 설정

다음 set-repository-policy 예제에서는 특정 계정이 AWS 계정에서 cli 입력 file://my-repository-policy.json을 사용하여 이미지를 푸시할 수 있도록 허용합니다.

aws ecr-public set-repository-policy \ --repository-name project-a/nginx-web-app \ --policy-text file://my-repository-policy.json

my-repository-policy.json의 콘텐츠:

{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowCrossAccountPush", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::other-or-same-account-id:role/RoleName" }, "Action": [ "ecr-public:BatchCheckLayerAvailability", "ecr-public:PutImage", "ecr-public:InitiateLayerUpload", "ecr-public:UploadLayerPart", "ecr-public:CompleteLayerUpload" ] } ] }

출력:

{ "registryId": "12345678901", "repositoryName": "project-a/nginx-web-app", "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"AllowCrossAccountPush\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"arn:aws:iam::12345678901:role/RoleName\"\n },\n \"Action\" : [ \"ecr-public:BatchCheckLayerAvailability\", \"ecr-public:PutImage\", \"ecr-public:InitiateLayerUpload\", \"ecr-public:UploadLayerPart\", \"ecr-public:CompleteLayerUpload\" ]\n } ]\n}" }

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리 정책 예제를 참조하세요.

다음 코드 예시에서는 tag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 퍼블릭 레지스트리의 기존 퍼블릭 리포지토리에 태그 지정

다음 tag-resource 예제는 퍼블릭 레지스트리에서 project-a/nginx-web-app이라는 리포지토리에 태그를 지정합니다.

aws ecr-public tag-resource \ --resource-arn arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app \ --tags Key=stack,Value=dev \ --region us-east-1

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에 태그 사용을 참조하세요.

예제 2: 퍼블릭 레지스트리에서 여러 태그로 기존 퍼블릭 리포지토리에 태그 지정.

다음 tag-resource 예제에서는 여러 태그로 기존 리포지토리에 태그를 지정합니다.

aws ecr-public tag-resource \ --resource-arn arn:aws:ecr-public::890517186334:repository/project-a/nginx-web-app \ --tags Key=key1,Value=value1 Key=key2,Value=value2 Key=key3,Value=value3 \ --region us-east-1

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에 태그 사용을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조TagResource를 참조하세요.

다음 코드 예시에서는 untag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 퍼블릭 레지스트리에서 기존 퍼블릭 리포지토리의 태그 해제

다음 untag-resource 예제는 퍼블릭 레지스트리에서 project-a/nginx-web-app이라는 리포지토리에 태그를 지정합니다.

aws ecr-public untag-resource \ --resource-arn arn:aws:ecr-public::123456789012:repository/project-a/nginx-web-app \ --tag-keys stack \ --region us-east-1

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 Amazon ECR Public 사용 설명서퍼블릭 리포지토리에 태그 사용을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UntagResource를 참조하세요.