ECREjemplos de Amazon que utilizan AWS CLI - AWS Command Line Interface

Esta documentación es AWS CLI únicamente para la versión 1 de la versión. Para ver la documentación relacionada con la versión 2 de AWS CLI, consulte la Guía del usuario de la versión 2.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

ECREjemplos de Amazon que utilizan AWS CLI

En los siguientes ejemplos de código, se muestra cómo realizar acciones e implementar situaciones comunes AWS Command Line Interface con AmazonECR.

Las acciones son extractos de código de programas más grandes y deben ejecutarse en contexto. Mientras las acciones muestran cómo llamar a las funciones de servicio individuales, es posible ver las acciones en contexto en los escenarios relacionados.

Cada ejemplo incluye un enlace al código fuente completo, donde puede encontrar instrucciones sobre cómo configurar y ejecutar el código en su contexto.

Acciones

En el siguiente ejemplo de código se muestra cómo usarlobatch-check-layer-availability.

AWS CLI

Para comprobar la disponibilidad de una capa

El siguiente batch-check-layer-availability ejemplo comprueba la disponibilidad de una capa con el resumen sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed en el cluster-autoscaler repositorio.

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

Salida:

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

El siguiente ejemplo de código muestra cómo usarlobatch-delete-image.

AWS CLI

Ejemplo 1: Para eliminar una imagen

En el siguiente batch-delete-image ejemplo, se elimina una imagen con la etiqueta precise en el repositorio especificado del registro predeterminado de una cuenta.

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

Salida:

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

Ejemplo 2: Para eliminar varias imágenes

En el siguiente batch-delete-image ejemplo, se eliminan todas las imágenes etiquetadas con prod y team1 en el repositorio especificado.

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

Salida:

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

Para obtener más información, consulta Eliminar una imagen en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte BatchDeleteImagela Referencia de AWS CLI comandos.

El siguiente ejemplo de código muestra cómo usarlobatch-get-image.

AWS CLI

Ejemplo 1: Para obtener una imagen

En el siguiente batch-get-image ejemplo, se obtiene una imagen con la etiqueta v1.13.6 en un repositorio llamado cluster-autoscaler en el registro predeterminado de una cuenta.

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

Salida:

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

Ejemplo 2: Para obtener varias imágenes

El siguiente batch-get-image ejemplo muestra los detalles de todas las imágenes etiquetadas con prod y team1 en el repositorio especificado.

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

Salida:

{ "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 obtener más información, consulta Imágenes en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte BatchGetImagela Referencia de AWS CLI comandos.

El siguiente ejemplo de código muestra cómo usarlocomplete-layer-upload.

AWS CLI

Para completar la carga de una capa de imágenes

En el siguiente complete-layer-upload ejemplo, se completa la carga de una capa de imágenes en el layer-test repositorio.

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

Salida:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "layerDigest": "sha256:9a77f85878aa1906f2020a0ecdf7a7e962d57e882250acd773383224b3fe9a02", "repositoryName": "layer-test", "registryId": "130757420319" }
  • Para API obtener más información, consulte CompleteLayerUploadla Referencia de AWS CLI comandos.

El siguiente ejemplo de código muestra cómo usarlocreate-repository.

AWS CLI

Ejemplo 1: Para crear un repositorio

El siguiente create-repository ejemplo crea un repositorio dentro del espacio de nombres especificado en el registro predeterminado de una cuenta.

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

Salida:

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

Para obtener más información, consulta Crear un repositorio en la Guía del ECR usuario de Amazon.

Ejemplo 2: Para crear un repositorio configurado con la inmutabilidad de las etiquetas de imagen

El siguiente create-repository ejemplo crea un repositorio configurado para la inmutabilidad de las etiquetas en el registro predeterminado de una cuenta.

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

Salida:

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

Para obtener más información, consulta la mutabilidad de etiquetas de imagen en la Guía del ECR usuario de Amazon.

Ejemplo 3: Para crear un repositorio configurado con una configuración de digitalización

El siguiente create-repository ejemplo crea un repositorio configurado para realizar un análisis de vulnerabilidades al insertar una imagen en el registro predeterminado de una cuenta.

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

Salida:

{ "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 obtener más información, consulta Escaneo de imágenes en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte CreateRepositoryla Referencia de AWS CLI comandos.

El siguiente ejemplo de código muestra cómo usarlodelete-lifecycle-policy.

AWS CLI

Para eliminar la política de ciclo de vida de un repositorio

En el siguiente delete-lifecycle-policy ejemplo, se elimina la política de ciclo de vida del hello-world repositorio.

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

Salida:

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

El siguiente ejemplo de código muestra cómo usarlodelete-repository-policy.

AWS CLI

Para eliminar la política de repositorio de un repositorio

En el siguiente delete-repository-policy ejemplo, se elimina la política de repositorio del cluster-autoscaler repositorio.

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

Salida:

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

En el siguiente ejemplo de código se muestra cómo usarlodelete-repository.

AWS CLI

Para eliminar un repositorio

En el siguiente delete-repository ejemplo, el comando force elimina el repositorio especificado del registro predeterminado de una cuenta. La --force marca es obligatoria si el repositorio contiene imágenes.

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

Salida:

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

Para obtener más información, consulta Eliminar un repositorio en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte DeleteRepositoryla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlodescribe-image-scan-findings.

AWS CLI

Para describir los resultados del escaneo de una imagen

El siguiente describe-image-scan-findings ejemplo devuelve los resultados del escaneo de una imagen utilizando el resumen de imágenes del repositorio especificado en el registro predeterminado de una cuenta.

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

Salida:

{ "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 obtener más información, consulta Escaneo de imágenes en la Guía del ECR usuario de Amazon.

En el siguiente ejemplo de código se muestra cómo usarlodescribe-images.

AWS CLI

Para describir una imagen de un repositorio

En el siguiente describe-images ejemplo, se muestran detalles sobre una imagen del cluster-autoscaler repositorio con la etiquetav1.13.6.

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

Salida:

{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }
  • Para API obtener más información, consulte DescribeImagesla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlodescribe-repositories.

AWS CLI

Descripción de los repositorios de imágenes en un registro

En este ejemplo, se describen los repositorios del registro predeterminado de una cuenta.

Comando:

aws ecr describe-repositories

Salida:

{ "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" } ] }
  • Para API obtener más información, consulte DescribeRepositoriesla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloget-authorization-token.

AWS CLI

Para obtener un token de autorización para su registro predeterminado

El siguiente comando de get-authorization-token ejemplo obtiene un token de autorización para el registro predeterminado.

aws ecr get-authorization-token

Salida:

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

En el siguiente ejemplo de código se muestra cómo usarloget-download-url-for-layer.

AWS CLI

Para descargar URL una capa

En el siguiente get-download-url-for-layer ejemplo, se muestra la descarga URL de una capa con el resumen sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed en el cluster-autoscaler repositorio.

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

Salida:

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

En el siguiente ejemplo de código se muestra cómo usarloget-lifecycle-policy-preview.

AWS CLI

Para recuperar los detalles de una vista previa de una política de ciclo de vida

En el siguiente get-lifecycle-policy-preview ejemplo, se recupera el resultado de una vista previa de la política de ciclo de vida del repositorio especificado en el registro predeterminado de una cuenta.

Comando:

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

Salida:

{ "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 obtener más información, consulta las políticas de ciclo de vida en la Guía del ECR usuario de Amazon.

En el siguiente ejemplo de código se muestra cómo usarloget-lifecycle-policy.

AWS CLI

Para recuperar una política de ciclo de vida

En el siguiente get-lifecycle-policy ejemplo, se muestran los detalles de la política de ciclo de vida del repositorio especificado en el registro predeterminado de la cuenta.

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

Salida:

{ "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 obtener más información, consulta las políticas de ciclo de vida en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte GetLifecyclePolicyla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloget-login-password.

AWS CLI

Para recuperar una contraseña para autenticarse en un registro

A continuación, se get-login-password muestra una contraseña que puedes usar con un cliente contenedor de tu elección para autenticarte en cualquier ECR registro de Amazon al que tenga acceso tu IAM principal.

aws ecr get-login-password

Salida:

<password>

Para usarlo con el DockerCLI, canaliza el resultado del get-login-password comando al docker login comando. Al recuperar la contraseña, asegúrate de especificar la misma región en la que se encuentra tu ECR registro de Amazon.

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

Para obtener más información, consulte Autenticación del registro en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte GetLoginPasswordla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloget-login.

AWS CLI

Para recuperar un comando de inicio de sesión de Docker en el registro predeterminado

En este ejemplo, se imprime un comando que puedes usar para iniciar sesión en tu ECR registro predeterminado de Amazon.

Comando:

aws ecr get-login

Salida:

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

Para iniciar sesión en el registro de otra cuenta

En este ejemplo, se imprimen uno o varios comandos que puedes usar para iniciar sesión en ECR los registros de Amazon asociados a otras cuentas.

Comando:

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

Salida:

docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>
  • Para API obtener más información, consulte GetLoginla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloget-repository-policy.

AWS CLI

Para recuperar la política de repositorio de un repositorio

En el siguiente get-repository-policy ejemplo, se muestran detalles sobre la política de cluster-autoscaler repositorio del repositorio.

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

Salida:

{ "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}" }
  • Para API obtener más información, consulte GetRepositoryPolicyla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloinitiate-layer-upload.

AWS CLI

Para iniciar la carga de una capa de imágenes

El siguiente initiate-layer-upload ejemplo inicia la carga de una capa de imágenes en el layer-test repositorio.

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

Salida:

{ "partSize": 10485760, "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9" }
  • Para API obtener más información, consulte InitiateLayerUploadla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlolist-images.

AWS CLI

Creación de una lista de las imágenes en un repositorio

En el siguiente ejemplo de list-images se muestra una lista de las imágenes del repositorio cluster-autoscaler.

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

Salida:

{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }
  • Para API obtener más información, consulte ListImagesla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlolist-tags-for-resource.

AWS CLI

Para enumerar las etiquetas del repositorio

En el siguiente list-tags-for-resource ejemplo, se muestra una lista de las etiquetas asociadas al hello-world repositorio.

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

Salida:

{ "tags": [ { "Key": "Stage", "Value": "Integ" } ] }
  • Para API obtener más información, consulte ListTagsForResourcela Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloput-image-scanning-configuration.

AWS CLI

Para actualizar la configuración de digitalización de imágenes de un repositorio

En el siguiente put-image-scanning-configuration ejemplo, se actualiza la configuración de digitalización de imágenes del repositorio especificado.

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

Salida:

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

Para obtener más información, consulta Escaneo de imágenes en la Guía del ECR usuario de Amazon.

En el siguiente ejemplo de código se muestra cómo usarloput-image-tag-mutability.

AWS CLI

Para actualizar la configuración de mutabilidad de la etiqueta de imagen de un repositorio

El siguiente put-image-tag-mutability ejemplo configura el repositorio especificado para la inmutabilidad de las etiquetas. Esto evita que se sobrescriban todas las etiquetas de imagen del repositorio.

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

Salida:

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

Para obtener más información, consulta la mutabilidad de etiquetas de imagen en la Guía del ECR usuario de Amazon.

En el siguiente ejemplo de código se muestra cómo usarloput-image.

AWS CLI

Para volver a etiquetar una imagen con su manifiesto

En el siguiente put-image ejemplo, se crea una etiqueta nueva en el hello-world repositorio con un manifiesto de imagen existente.

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

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

Salida:

{ "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 obtener más información, consulte PutImagela Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloput-lifecycle-policy.

AWS CLI

Para crear una política de ciclo de vida

En el siguiente put-lifecycle-policy ejemplo, se crea una política de ciclo de vida para el repositorio especificado en el registro predeterminado de una cuenta.

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

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

Salida:

{ "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 obtener más información, consulta las políticas de ciclo de vida en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte PutLifecyclePolicyla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloset-repository-policy.

AWS CLI

Para establecer la política de repositorio de un repositorio

En el siguiente set-repository-policy ejemplo, se adjunta al repositorio una política de cluster-autoscaler repositorio incluida en un archivo.

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

Contenidos de my-policy.json:

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

Salida:

{ "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}" }
  • Para API obtener más información, consulte SetRepositoryPolicyla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlostart-image-scan.

AWS CLI

Para iniciar un análisis de vulnerabilidades de imagen

En el siguiente start-image-scan ejemplo, se inicia un escaneo de imágenes en busca de las imágenes especificadas en el resumen de imágenes del repositorio especificado.

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

Salida:

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

Para obtener más información, consulta Escaneo de imágenes en la Guía del ECR usuario de Amazon.

  • Para API obtener más información, consulte StartImageScanla Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlostart-lifecycle-policy-preview.

AWS CLI

Para crear una vista previa de una política de ciclo de vida

En el siguiente start-lifecycle-policy-preview ejemplo, se crea una vista previa de la política del ciclo de vida definida por un JSON archivo para el repositorio especificado.

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

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

Salida:

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

En el siguiente ejemplo de código se muestra cómo usarlotag-resource.

AWS CLI

Para etiquetar un repositorio

El siguiente tag-resource ejemplo establece una etiqueta con la clave Stage y el valor Integ en el hello-world repositorio.

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

Este comando no genera ninguna salida.

  • Para API obtener más información, consulte TagResourcela Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarlountag-resource.

AWS CLI

Para quitar la etiqueta de un repositorio

En el siguiente untag-resource ejemplo, se elimina la etiqueta con la clave Stage del hello-world repositorio.

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

Este comando no genera ninguna salida.

  • Para API obtener más información, consulte UntagResourcela Referencia de AWS CLI comandos.

En el siguiente ejemplo de código se muestra cómo usarloupload-layer-part.

AWS CLI

Para cargar una parte de una capa

A continuación, se upload-layer-part carga una parte de la capa de imagen en el layer-test repositorio.

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

Salida:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }
  • Para API obtener más información, consulte UploadLayerPartla Referencia de AWS CLI comandos.