ECRExemplos da Amazon usando AWS CLI - AWS SDKExemplos de código

Há mais AWS SDK exemplos disponíveis no GitHub repositório AWS Doc SDK Examples.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

ECRExemplos da Amazon usando AWS CLI

Os exemplos de código a seguir mostram como realizar ações e implementar cenários comuns usando o AWS Command Line Interface com a AmazonECR.

Ações são trechos de código de programas maiores e devem ser executadas em contexto. Embora as ações mostrem como chamar funções de serviço individuais, é possível ver as ações no contexto em seus cenários relacionados.

Cada exemplo inclui um link para o código-fonte completo, onde você pode encontrar instruções sobre como configurar e executar o código no contexto.

Tópicos

Ações

O código de exemplo a seguir mostra como usar batch-check-layer-availability.

AWS CLI

Para verificar a disponibilidade de uma camada

O batch-check-layer-availability exemplo a seguir verifica a disponibilidade de uma camada com o resumo sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed no cluster-autoscaler repositório.

aws ecr batch-check-layer-availability \ --repository-name cluster-autoscaler \ --layer-digests sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed

Saída:

{ "layers": [ { "layerDigest": "sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed", "layerAvailability": "AVAILABLE", "layerSize": 2777, "mediaType": "application/vnd.docker.container.image.v1+json" } ], "failures": [] }

O código de exemplo a seguir mostra como usar batch-delete-image.

AWS CLI

Exemplo 1: Para excluir uma imagem

O batch-delete-image exemplo a seguir exclui uma imagem com a tag precise no repositório especificado no registro padrão de uma conta.

aws ecr batch-delete-image \ --repository-name ubuntu \ --image-ids imageTag=precise

Saída:

{ "failures": [], "imageIds": [ { "imageTag": "precise", "imageDigest": "sha256:19665f1e6d1e504117a1743c0a3d3753086354a38375961f2e665416ef4b1b2f" } ] }

Exemplo 2: Para excluir várias imagens

O batch-delete-image exemplo a seguir exclui todas as imagens marcadas com prod e team1 no repositório especificado.

aws ecr batch-delete-image \ --repository-name MyRepository \ --image-ids imageTag=prod imageTag=team1

Saída:

{ "imageIds": [ { "imageDigest": "sha256:123456789012", "imageTag": "prod" }, { "imageDigest": "sha256:567890121234", "imageTag": "team1" } ], "failures": [] }

Para obter mais informações, consulte Excluindo uma imagem no Guia do ECR usuário da Amazon.

  • Para API obter detalhes, consulte BatchDeleteImagena Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar batch-get-image.

AWS CLI

Exemplo 1: Para obter uma imagem

O batch-get-image exemplo a seguir obtém uma imagem com a tag v1.13.6 em um repositório chamado cluster-autoscaler no registro padrão de uma conta.

aws ecr batch-get-image \ --repository-name cluster-autoscaler \ --image-ids imageTag=v1.13.6

Saída:

{ "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": [] }

Exemplo 2: Para obter várias imagens

O batch-get-image exemplo a seguir exibe detalhes de todas as imagens marcadas com prod e team1 no repositório especificado.

aws ecr batch-get-image \ --repository-name MyRepository \ --image-ids imageTag=prod imageTag=team1

Saída:

{ "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": [] }

Para obter mais informações, consulte Imagens no Guia do ECR usuário da Amazon.

  • Para API obter detalhes, consulte BatchGetImagena Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar complete-layer-upload.

AWS CLI

Para concluir o upload de uma camada de imagem

O complete-layer-upload exemplo a seguir conclui o upload de uma camada de imagem para o layer-test repositório.

aws ecr complete-layer-upload \ --repository-name layer-test \ --upload-id 6cb64b8a-9378-0e33-2ab1-b780fab8a9e9 \ --layer-digests 6cb64b8a-9378-0e33-2ab1-b780fab8a9e9:48074e6d3a68b39aad8ccc002cdad912d4148c0f92b3729323e

Saída:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "layerDigest": "sha256:9a77f85878aa1906f2020a0ecdf7a7e962d57e882250acd773383224b3fe9a02", "repositoryName": "layer-test", "registryId": "130757420319" }

O código de exemplo a seguir mostra como usar create-repository.

AWS CLI

Exemplo 1: para criar um repositório

O exemplo de create-repository a seguir cria um repositório dentro do namespace especificado no registro padrão de uma conta.

aws ecr create-repository \ --repository-name project-a/sample-repo

Saída:

{ "repository": { "registryId": "123456789012", "repositoryName": "project-a/sample-repo", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/project-a/sample-repo" } }

Para obter mais informações, consulte Criação de um repositório no Guia do ECR usuário da Amazon.

Exemplo 2: para criar um repositório configurado com imutabilidade da tag de imagem

O exemplo de create-repository a seguir cria um repositório configurado para imutabilidade da tag no registro padrão de uma conta.

aws ecr create-repository \ --repository-name project-a/sample-repo \ --image-tag-mutability IMMUTABLE

Saída:

{ "repository": { "registryId": "123456789012", "repositoryName": "project-a/sample-repo", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/project-a/sample-repo", "imageTagMutability": "IMMUTABLE" } }

Para obter mais informações, consulte Image Tag Mutability no Guia do ECR usuário da Amazon.

Exemplo 3: para criar um repositório configurado com uma configuração de verificação

O exemplo de create-repository a seguir cria um repositório configurado para realizar uma verificação de vulnerabilidade no envio por push de imagens no registro padrão de uma conta.

aws ecr create-repository \ --repository-name project-a/sample-repo \ --image-scanning-configuration scanOnPush=true

Saída:

{ "repository": { "registryId": "123456789012", "repositoryName": "project-a/sample-repo", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/project-a/sample-repo", "imageScanningConfiguration": { "scanOnPush": true } } }

Para obter mais informações, consulte Digitalização de imagens no Guia ECR do usuário da Amazon.

  • Para API obter detalhes, consulte CreateRepositoryna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar delete-lifecycle-policy.

AWS CLI

Para excluir a política de ciclo de vida de um repositório

O delete-lifecycle-policy exemplo a seguir exclui a política de ciclo de vida do repositório. hello-world

aws ecr delete-lifecycle-policy \ --repository-name hello-world

Saída:

{ "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 }

O código de exemplo a seguir mostra como usar delete-repository-policy.

AWS CLI

Para excluir a política de repositório de um repositório

O delete-repository-policy exemplo a seguir exclui a política de repositório do cluster-autoscaler repositório.

aws ecr delete-repository-policy \ --repository-name cluster-autoscaler

Saída:

{ "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}" }

O código de exemplo a seguir mostra como usar delete-repository.

AWS CLI

Para excluir um repositório

A força de comando do exemplo de delete-repository a seguir exclui o repositório especificado no registro padrão de uma conta. O sinalizador --force será obrigatório se o repositório contiver imagens.

aws ecr delete-repository \ --repository-name ubuntu \ --force

Saída:

{ "repository": { "registryId": "123456789012", "repositoryName": "ubuntu", "repositoryArn": "arn:aws:ecr:us-west-2:123456789012:repository/ubuntu" } }

Para obter mais informações, consulte Excluindo um repositório no Guia ECR do usuário da Amazon.

  • Para API obter detalhes, consulte DeleteRepositoryna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar describe-image-scan-findings.

AWS CLI

Para descrever os resultados da digitalização de uma imagem

O describe-image-scan-findings exemplo a seguir retorna os resultados da digitalização de uma imagem usando o resumo da imagem no repositório especificado no registro padrão de uma conta.

aws ecr describe-image-scan-findings \ --repository-name sample-repo \ --image-id imageDigest=sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6

Saída:

{ "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." } }

Para obter mais informações, consulte Digitalização de imagens no Guia ECR do usuário da Amazon.

O código de exemplo a seguir mostra como usar describe-images.

AWS CLI

Para descrever uma imagem em um repositório

O exemplo de describe-images a seguir exibe os detalhes sobre uma imagem no repositório cluster-autoscaler com a tag v1.13.6.

aws ecr describe-images \ --repository-name cluster-autoscaler \ --image-ids imageTag=v1.13.6

Saída:

{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }
  • Para API obter detalhes, consulte DescribeImagesna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar describe-repositories.

AWS CLI

Como descrever os repositórios em um registro

Este exemplo descreve os repositórios no registro padrão de uma conta.

Comando:

aws ecr describe-repositories

Saída:

{ "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" } ] }

O código de exemplo a seguir mostra como usar get-authorization-token.

AWS CLI

Para obter um token de autorização para o registro padrão

O comando do exemplo de get-authorization-token a seguir obtém um token de autorização para o registro padrão.

aws ecr get-authorization-token

Saída:

{ "authorizationData": [ { "authorizationToken": "QVdTOkN...", "expiresAt": 1448875853.241, "proxyEndpoint": "https://123456789012.dkr.ecr.us-west-2.amazonaws.com" } ] }

O código de exemplo a seguir mostra como usar get-download-url-for-layer.

AWS CLI

Para obter o download URL de uma camada

O get-download-url-for-layer exemplo a seguir exibe o download URL de uma camada com o resumo sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed no cluster-autoscaler repositório.

aws ecr get-download-url-for-layer \ --repository-name cluster-autoscaler \ --layer-digest sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed

Saída:

{ "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" }

O código de exemplo a seguir mostra como usar get-lifecycle-policy-preview.

AWS CLI

Para recuperar detalhes de uma prévia da política de ciclo de vida

O get-lifecycle-policy-preview exemplo a seguir recupera o resultado de uma prévia da política de ciclo de vida para o repositório especificado no registro padrão de uma conta.

Comando:

aws ecr get-lifecycle-policy-preview \ --repository-name "project-a/amazon-ecs-sample"

Saída:

{ "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 } }

Para obter mais informações, consulte Políticas de ciclo de vida no Guia do ECR usuário da Amazon.

O código de exemplo a seguir mostra como usar get-lifecycle-policy.

AWS CLI

Para recuperar uma política de ciclo de vida

O get-lifecycle-policy exemplo a seguir exibe detalhes da política de ciclo de vida do repositório especificado no registro padrão da conta.

aws ecr get-lifecycle-policy \ --repository-name "project-a/amazon-ecs-sample"

Saída:

{ "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 }

Para obter mais informações, consulte Políticas de ciclo de vida no Guia do ECR usuário da Amazon.

O código de exemplo a seguir mostra como usar get-login-password.

AWS CLI

Para recuperar uma senha para se autenticar em um registro

A seguir, é get-login-password exibida uma senha que você pode usar com um cliente de contêiner de sua escolha para se autenticar em qualquer ECR registro da Amazon ao qual seu IAM diretor tenha acesso.

aws ecr get-login-password

Saída:

<password>

Para usar com o DockerCLI, canalize a saída do get-login-password comando para o docker login comando. Ao recuperar a senha, certifique-se de especificar a mesma região em que seu ECR registro da Amazon existe.

aws ecr get-login-password \ --region <region> \ | docker login \ --username AWS \ --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com

Para obter mais informações, consulte Autenticação de registro no Guia ECR do usuário da Amazon.

  • Para API obter detalhes, consulte GetLoginPasswordna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar get-login.

AWS CLI

Para recuperar um comando de login do Docker para seu registro padrão

Este exemplo imprime um comando que você pode usar para fazer login no seu ECR registro padrão da Amazon.

Comando:

aws ecr get-login

Saída:

docker login -u AWS -p <password> -e none https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com

Para fazer login no registro de outra conta

Este exemplo imprime um ou mais comandos que você pode usar para fazer login nos ECR registros da Amazon associados a outras contas.

Comando:

aws ecr get-login --registry-ids 012345678910 023456789012

Saída:

docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>
  • Para API obter detalhes, consulte GetLoginna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar get-repository-policy.

AWS CLI

Para recuperar a política de repositório de um repositório

O exemplo de get-repository-policy a seguir exibe os detalhes sobre a política de repositório para o repositório cluster-autoscaler.

aws ecr get-repository-policy \ --repository-name cluster-autoscaler

Saída:

{ "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}" }

O código de exemplo a seguir mostra como usar initiate-layer-upload.

AWS CLI

Para iniciar o upload de uma camada de imagem

O initiate-layer-upload exemplo a seguir inicia o upload de uma camada de imagem para o layer-test repositório.

aws ecr initiate-layer-upload \ --repository-name layer-test

Saída:

{ "partSize": 10485760, "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9" }

O código de exemplo a seguir mostra como usar list-images.

AWS CLI

Como listar as imagens em um repositório

O exemplo de list-images a seguir exibe uma lista das imagens presentes no repositório cluster-autoscaler.

aws ecr list-images \ --repository-name cluster-autoscaler

Saída:

{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }
  • Para API obter detalhes, consulte ListImagesna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar list-tags-for-resource.

AWS CLI

Para listar as tags para o repositório

O list-tags-for-resource exemplo a seguir exibe uma lista das tags associadas ao hello-world repositório.

aws ecr list-tags-for-resource \ --resource-arn arn:aws:ecr:us-west-2:012345678910:repository/hello-world

Saída:

{ "tags": [ { "Key": "Stage", "Value": "Integ" } ] }

O código de exemplo a seguir mostra como usar put-image-scanning-configuration.

AWS CLI

Para atualizar a configuração de digitalização de imagens para um repositório

O put-image-scanning-configuration exemplo a seguir atualiza a configuração de digitalização de imagens para o repositório especificado.

aws ecr put-image-scanning-configuration \ --repository-name sample-repo \ --image-scanning-configuration scanOnPush=true

Saída:

{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageScanningConfiguration": { "scanOnPush": true } }

Para obter mais informações, consulte Digitalização de imagens no Guia ECR do usuário da Amazon.

O código de exemplo a seguir mostra como usar put-image-tag-mutability.

AWS CLI

Para atualizar a configuração de mutabilidade da tag de imagem para um repositório

O put-image-tag-mutability exemplo a seguir configura o repositório especificado para imutabilidade de tags. Isso evita que todas as tags de imagem no repositório sejam sobrescritas.

aws ecr put-image-tag-mutability \ --repository-name hello-repository \ --image-tag-mutability IMMUTABLE

Saída:

{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageTagMutability": "IMMUTABLE" }

Para obter mais informações, consulte Image Tag Mutability no Guia do ECR usuário da Amazon.

O código de exemplo a seguir mostra como usar put-image.

AWS CLI

Para remarcar uma imagem com seu manifesto

O put-image exemplo a seguir cria uma nova tag no hello-world repositório com um manifesto de imagem existente.

aws ecr put-image \ --repository-name hello-world \ --image-tag 2019.08 \ --image-manifest file://hello-world.manifest.json

Conteúdo de 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" } ] }

Saída:

{ "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" } }
  • Para API obter detalhes, consulte PutImagena Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar put-lifecycle-policy.

AWS CLI

Para criar uma política de ciclo de vida

O put-lifecycle-policy exemplo a seguir cria uma política de ciclo de vida para o repositório especificado no registro padrão de uma conta.

aws ecr put-lifecycle-policy \ --repository-name "project-a/amazon-ecs-sample" \ --lifecycle-policy-text "file://policy.json"

Conteúdo de policy.json:

{ "rules": [ { "rulePriority": 1, "description": "Expire images older than 14 days", "selection": { "tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 14 }, "action": { "type": "expire" } } ] }

Saída:

{ "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\"}}]}" }

Para obter mais informações, consulte Políticas de ciclo de vida no Guia do ECR usuário da Amazon.

O código de exemplo a seguir mostra como usar set-repository-policy.

AWS CLI

Para definir a política de repositório para um repositório

O exemplo de set-repository-policy a seguir anexa uma política de repositório contida em um arquivo ao repositório cluster-autoscaler.

aws ecr set-repository-policy \ --repository-name cluster-autoscaler \ --policy-text file://my-policy.json

Conteúdo de my-policy.json:

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

Saída:

{ "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}" }

O código de exemplo a seguir mostra como usar start-image-scan.

AWS CLI

Para iniciar uma verificação de vulnerabilidade de imagem

O start-image-scan exemplo a seguir inicia uma digitalização de imagem para e especificada pelo resumo da imagem no repositório especificado.

aws ecr start-image-scan \ --repository-name sample-repo \ --image-id imageDigest=sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6

Saída:

{ "registryId": "012345678910", "repositoryName": "sample-repo", "imageId": { "imageDigest": "sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6" }, "imageScanStatus": { "status": "IN_PROGRESS" } }

Para obter mais informações, consulte Digitalização de imagens no Guia ECR do usuário da Amazon.

  • Para API obter detalhes, consulte StartImageScanna Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar start-lifecycle-policy-preview.

AWS CLI

Para criar uma pré-visualização da política de ciclo de vida

O start-lifecycle-policy-preview exemplo a seguir cria uma visualização prévia da política de ciclo de vida definida por um JSON arquivo para o repositório especificado.

aws ecr start-lifecycle-policy-preview \ --repository-name "project-a/amazon-ecs-sample" \ --lifecycle-policy-text "file://policy.json"

Conteúdo de policy.json:

{ "rules": [ { "rulePriority": 1, "description": "Expire images older than 14 days", "selection": { "tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 14 }, "action": { "type": "expire" } } ] }

Saída:

{ "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" }

O código de exemplo a seguir mostra como usar tag-resource.

AWS CLI

Para marcar um repositório

O tag-resource exemplo a seguir define uma tag com chave Stage e valor Integ no hello-world repositório.

aws ecr tag-resource \ --resource-arn arn:aws:ecr:us-west-2:012345678910:repository/hello-world \ --tags Key=Stage,Value=Integ

Este comando não produz saída.

  • Para API obter detalhes, consulte TagResourcena Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar untag-resource.

AWS CLI

Para desmarcar um repositório

O untag-resource exemplo a seguir remove a tag com a chave Stage do hello-world repositório.

aws ecr untag-resource \ --resource-arn arn:aws:ecr:us-west-2:012345678910:repository/hello-world \ --tag-keys Stage

Este comando não produz saída.

  • Para API obter detalhes, consulte UntagResourcena Referência de AWS CLI Comandos.

O código de exemplo a seguir mostra como usar upload-layer-part.

AWS CLI

Para carregar uma parte da camada

O seguinte upload-layer-part carrega uma parte da camada de imagem para o layer-test repositório.

aws ecr upload-layer-part \ --repository-name layer-test \ --upload-id 6cb64b8a-9378-0e33-2ab1-b780fab8a9e9 \ --part-first-byte 0 \ --part-last-byte 8323314 \ --layer-part-blob file:///var/lib/docker/image/overlay2/layerdb/sha256/ff986b10a018b48074e6d3a68b39aad8ccc002cdad912d4148c0f92b3729323e/layer.b64

Saída:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }
  • Para API obter detalhes, consulte UploadLayerPartna Referência de AWS CLI Comandos.