Exemples d’utilisation de l’AWS CLI avec Amazon ECR - AWS Command Line Interface

Exemples d’utilisation de l’AWS CLI avec Amazon ECR

Les exemples de code suivants montrent comment réaliser des actions et mettre en œuvre des scénarios courants en utilisant l’AWS Command Line Interface avec Amazon ECR.

Les actions sont des extraits de code de programmes plus larges et doivent être exécutées dans leur contexte. Alors que les actions vous indiquent comment appeler des fonctions de service individuelles, vous pouvez les voir en contexte dans leurs scénarios associés.

Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la configuration et l’exécution du code en contexte.

Rubriques

Actions

L’exemple de code suivant montre comment utiliser batch-check-layer-availability.

AWS CLI

Pour vérifier la disponibilité d’une couche

L’exemple batch-check-layer-availability suivant vérifie la disponibilité d’une couche avec le résumé sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed dans le référentiel cluster-autoscaler.

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

Sortie :

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

L’exemple de code suivant montre comment utiliser batch-delete-image.

AWS CLI

Exemple 1 : pour supprimer une image

L’exemple batch-delete-image suivant supprime une image avec la balise precise dans le référentiel spécifié dans le registre par défaut d’un compte.

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

Sortie :

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

Exemple 2 : pour supprimer plusieurs images

L’exemple batch-delete-image suivant supprime toutes les images dotées des balises prod et team1 dans le référentiel spécifié.

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

Sortie :

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

Pour plus d’informations, consultez Suppression d’une image dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez BatchDeleteImage dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser batch-get-image.

AWS CLI

Exemple 1 : pour obtenir une image

L’exemple batch-get-image suivant obtient une image avec la balise v1.13.6 dans un référentiel appelé cluster-autoscaler dans le registre par défaut d’un compte.

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

Sortie :

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

Exemple 2 : pour obtenir plusieurs images

L’exemple batch-get-image suivant affiche les détails de toutes les images dotées des balises prod et team1 dans le référentiel spécifié.

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

Sortie :

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

Pour plus d’informations, consultez Images dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez BatchGetImage dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser complete-layer-upload.

AWS CLI

Pour terminer le chargement d’une couche d’image

L’exemple complete-layer-upload suivant termine le chargement d’une couche d’image vers le référentiel layer-test.

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

Sortie :

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "layerDigest": "sha256:9a77f85878aa1906f2020a0ecdf7a7e962d57e882250acd773383224b3fe9a02", "repositoryName": "layer-test", "registryId": "130757420319" }
  • Pour plus de détails sur l’API, consultez CompleteLayerUpload dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-repository.

AWS CLI

Exemple 1 : pour créer un référentiel

L’exemple create-repository suivant crée un référentiel dans l’espace de noms spécifié dans le registre par défaut d’un compte.

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

Sortie :

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

Pour plus d’informations, consultez Création d’un référentiel dans le Guide de l’utilisateur Amazon ECR.

Exemple 2 : pour créer un référentiel configuré avec l’immuabilité des balises d’image

L’exemple create-repository suivant crée un référentiel configuré pour l’immuabilité des balises dans le registre par défaut d’un compte.

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

Sortie :

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

Pour plus d’informations, consultez Caractère immuable des balises d’image dans le Guide de l’utilisateur Amazon ECR.

Exemple 3 : pour créer un référentiel configuré avec une configuration d’analyse

L’exemple create-repository suivant crée un référentiel configuré pour effectuer une analyse de vulnérabilité d’un transfert d’image dans le registre par défaut d’un compte.

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

Sortie :

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

Pour plus d’informations, consultez Numérisation d’images dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez CreateRepository dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser delete-lifecycle-policy.

AWS CLI

Pour supprimer la politique de cycle de vie d’un référentiel

L’exemple delete-lifecycle-policy suivant supprime la politique de cycle de vie du référentiel hello-world.

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

Sortie :

{ "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 }
  • Pour plus de détails sur l’API, consultez DeleteLifecyclePolicy dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser delete-repository-policy.

AWS CLI

Pour supprimer la politique d’un référentiel

L’exemple delete-repository-policy suivant supprime la politique du référentiel cluster-autoscaler.

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

Sortie :

{ "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}" }
  • Pour plus de détails sur l’API, consultez DeleteRepositoryPolicy dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser delete-repository.

AWS CLI

Pour supprimer un référentiel

L’exemple de commande delete-repository suivant supprime le référentiel spécifié dans le registre par défaut d’un compte. L’indicateur --force est obligatoire si le référentiel contient des images.

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

Sortie :

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

Pour plus d’informations, consultez Suppression d’un référentiel dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez DeleteRepository dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-image-scan-findings.

AWS CLI

Pour décrire les résultats d’analyse d’une image

L’exemple describe-image-scan-findings suivant renvoie les résultats d’analyse d’une image à l’aide du résumé d’image du référentiel spécifié dans le registre par défaut d’un compte.

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

Sortie :

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

Pour plus d’informations, consultez Numérisation d’images dans le Guide de l’utilisateur Amazon ECR.

L’exemple de code suivant montre comment utiliser describe-images.

AWS CLI

Pour décrire une image dans un référentiel

L’exemple describe-images suivant affiche les informations sur une image dans le référentiel cluster-autoscaler avec la balise v1.13.6.

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

Sortie :

{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }
  • Pour plus de détails sur l’API, consultez DescribeImages dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-repositories.

AWS CLI

Pour décrire les référentiels dans un registre

Cet exemple décrit les référentiels du registre par défaut d’un compte.

Commande :

aws ecr describe-repositories

Sortie :

{ "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" } ] }
  • Pour plus de détails sur l’API, consultez DescribeRepositories dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-authorization-token.

AWS CLI

Pour obtenir un jeton d’autorisation pour votre registre par défaut

L’exemple de commande get-authorization-token suivant obtient un jeton d’autorisation pour votre registre par défaut.

aws ecr get-authorization-token

Sortie :

{ "authorizationData": [ { "authorizationToken": "QVdTOkN...", "expiresAt": 1448875853.241, "proxyEndpoint": "https://123456789012.dkr.ecr.us-west-2.amazonaws.com" } ] }
  • Pour plus de détails sur l’API, consultez GetAuthorizationToken dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-download-url-for-layer.

AWS CLI

Pour obtenir l’URL de téléchargement d’une couche

L’exemple get-download-url-for-layer suivant affiche l’URL de téléchargement d’une couche contenant le résumé sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed dans le référentiel cluster-autoscaler.

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

Sortie :

{ "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" }
  • Pour plus de détails sur l’API, consultez GetDownloadUrlForLayer dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-lifecycle-policy-preview.

AWS CLI

Pour récupérer les informations sur un aperçu de la politique de cycle de vie

L’exemple get-lifecycle-policy-preview suivant récupère le résultat d’un aperçu de la politique de cycle de vie pour le référentiel spécifié dans le registre par défaut d’un compte.

Commande :

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

Sortie :

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

Pour plus d’informations, consultez Politiques de cycle de vie dans le Guide de l’utilisateur Amazon ECR.

L’exemple de code suivant montre comment utiliser get-lifecycle-policy.

AWS CLI

Pour récupérer une politique de cycle de vie

L’exemple get-lifecycle-policy suivant affiche les détails de la politique de cycle de vie du référentiel spécifié dans le registre par défaut du compte.

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

Sortie :

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

Pour plus d’informations, consultez Politiques de cycle de vie dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez GetLifecyclePolicy dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-login-password.

AWS CLI

Pour récupérer un mot de passe afin de s’authentifier auprès d’un registre

L’exemple get-login-password suivant affiche un mot de passe que vous pouvez utiliser avec un client conteneur de votre choix pour vous authentifier auprès de tout registre Amazon ECR auquel votre principal IAM a accès.

aws ecr get-login-password

Sortie :

<password>

Pour l’utiliser avec l’interface de ligne de commande Docker, redirigez la sortie de la commande get-login-password vers la commande docker login. Lorsque vous extrayez le mot de passe, assurez-vous de spécifier la même région que celle dans laquelle se trouve votre registre Amazon ECR.

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

Pour plus d’informations, consultez Authentification de registre dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez GetLoginPassword dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-login.

AWS CLI

Pour récupérer une commande de connexion Docker dans votre registre par défaut

Cet exemple imprime une commande que vous pouvez utiliser pour vous connecter à votre registre Amazon ECR par défaut.

Commande :

aws ecr get-login

Sortie :

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

Pour se connecter au registre d’un autre compte

Cet exemple affiche une ou plusieurs commandes que vous pouvez utiliser pour vous connecter aux registres Amazon ECR associés à d’autres comptes.

Commande :

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

Sortie :

docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>
  • Pour plus de détails sur l’API, consultez GetLogin dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-repository-policy.

AWS CLI

Pou récupérer la politique d’un référentiel spécifié

L’exemple get-repository-policy suivant affiche les informations sur la politique du référentiel cluster-autoscaler.

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

Sortie :

{ "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}" }
  • Pour plus de détails sur l’API, consultez GetRepositoryPolicy dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser initiate-layer-upload.

AWS CLI

Pour lancer le chargement d’une couche d’image

L’exemple initiate-layer-upload suivant lance le chargement d’une couche d’image vers le référentiel layer-test.

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

Sortie :

{ "partSize": 10485760, "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9" }
  • Pour plus de détails sur l’API, consultez InitiateLayerUpload dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-images.

AWS CLI

Pour répertorier les images dans un référentiel

L’exemple list-images suivant affiche la liste des images du référentiel cluster-autoscaler.

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

Sortie :

{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }
  • Pour plus de détails sur l’API, consultez ListImages dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-tags-for-resource.

AWS CLI

Pour répertorier les balises du référentiel

L’exemple list-tags-for-resource suivant affiche la liste des balises associées au référentiel hello-world.

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

Sortie :

{ "tags": [ { "Key": "Stage", "Value": "Integ" } ] }
  • Pour plus de détails sur l’API, consultez ListTagsForResource dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser put-image-scanning-configuration.

AWS CLI

Pour mettre à jour la configuration de l’analyse d’image pour un référentiel

L’exemple put-image-scanning-configuration suivant met à jour la configuration de l’analyse d’image pour le référentiel spécifié.

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

Sortie :

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

Pour plus d’informations, consultez Numérisation d’images dans le Guide de l’utilisateur Amazon ECR.

L’exemple de code suivant montre comment utiliser put-image-tag-mutability.

AWS CLI

Pour mettre à jour les paramètres de mutabilité des balises d’image pour un référentiel

L’exemple put-image-tag-mutability suivant configure le référentiel spécifié pour l’immuabilité des balises. Il empêche le remplacement de toutes les balises d’image du référentiel.

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

Sortie :

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

Pour plus d’informations, consultez Caractère immuable des balises d’image dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez PutImageTagMutability dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser put-image.

AWS CLI

Pour baliser de nouveau une image avec son manifeste

L’exemple put-image suivant crée une nouvelle balise dans le référentiel hello-world avec un manifeste d’image existant.

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

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

Sortie :

{ "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" } }
  • Pour plus de détails sur l’API, consultez PutImage dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser put-lifecycle-policy.

AWS CLI

Créer une politique de cycle de vie

L’exemple put-lifecycle-policy suivant crée une politique de cycle de vie pour le référentiel spécifié dans le registre par défaut d’un compte.

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

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

Sortie :

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

Pour plus d’informations, consultez Politiques de cycle de vie dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez PutLifeCyclePolicy dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser set-repository-policy.

AWS CLI

Pour définir la politique d’un référentiel

L’exemple set-repository-policy suivant attache au référentiel cluster-autoscaler une politique de référentiel contenue dans un fichier.

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

Contenu de my-policy.json :

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

Sortie :

{ "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}" }
  • Pour plus de détails sur l’API, consultez SetRepositoryPolicy dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser start-image-scan.

AWS CLI

Pour démarrer une analyse de vulnérabilité d’une image

L’exemple start-image-scan suivant lance une analyse d’image pour le résumé d’image et spécifiée par ce dernier dans le référentiel spécifié.

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

Sortie :

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

Pour plus d’informations, consultez Numérisation d’images dans le Guide de l’utilisateur Amazon ECR.

  • Pour plus de détails sur l’API, consultez StartImageScan dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser start-lifecycle-policy-preview.

AWS CLI

Pour créer une politique de cycle de vie

L’exemple start-lifecycle-policy-preview suivant crée un aperçu d’une politique de cycle de vie défini par un fichier JSON pour le référentiel spécifié.

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

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

Sortie :

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

L’exemple de code suivant montre comment utiliser tag-resource.

AWS CLI

Pour baliser un référentiel

L’exemple tag-resource suivant définit une balise avec une clé Stage et une valeur Integ sur le référentiel hello-world.

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

Cette commande ne produit aucune sortie.

  • Pour plus de détails sur l’API, consultez TagResource dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser untag-resource.

AWS CLI

Pour supprimer une balise d’un référentiel

L’exemple untag-resource suivant supprime la balise avec la clé Stage du référentiel hello-world.

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

Cette commande ne produit aucune sortie.

  • Pour plus de détails sur l’API, consultez UntagResource dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser upload-layer-part.

AWS CLI

Pour charger une partie d’une couche

L’exemple upload-layer-part suivant charge une partie de la couche d’image dans le référentiel layer-test.

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

Sortie :

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }
  • Pour plus de détails sur l’API, consultez UploadLayerPart dans la Référence des commandes de l’AWS CLI.