Esempi di utilizzo di Amazon ECR AWS CLI - AWS Command Line Interface

Questa documentazione è valida AWS CLI solo per la versione 1. Per la documentazione relativa alla versione 2 di AWS CLI, consulta la Guida per l'utente della versione 2.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di utilizzo di Amazon ECR AWS CLI

I seguenti esempi di codice mostrano come eseguire azioni e implementare scenari comuni utilizzando Amazon ECR. AWS Command Line Interface

Le azioni sono estratti di codice da programmi più grandi e devono essere eseguite nel contesto. Sebbene le azioni mostrino come richiamare le singole funzioni del servizio, è possibile visualizzarle contestualizzate negli scenari correlati.

Ogni esempio include un link al codice sorgente completo, in cui vengono fornite le istruzioni su come configurare ed eseguire il codice nel contesto.

Argomenti

Azioni

Il seguente esempio di codice mostra come usarebatch-check-layer-availability.

AWS CLI

Come verificare la disponibilità di un livello

L’esempio batch-check-layer-availability seguente verifica la disponibilità di un livello con il digest sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed nel repository cluster-autoscaler.

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

Output:

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

Il seguente esempio di codice mostra come utilizzarebatch-delete-image.

AWS CLI

Esempio 1: come eliminare un’immagine

L’esempio batch-delete-image seguente elimina un’immagine con tag precise nel repository specificato nel registro predefinito per un account.

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

Output:

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

Esempio 2: come eliminare più immagini

L’esempio batch-delete-image seguente elimina tutte le immagini con tag prod e team1 nel repository specificato.

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

Output:

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

Per ulteriori informazioni, consulta Eliminazione di un’immagine nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzarebatch-get-image.

AWS CLI

Esempio 1: come ottenere un’immagine

L’esempio batch-get-image seguente ottiene un’immagine con tag v1.13.6 nel repository denominato cluster-autoscaler nel registro predefinito per un account.

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

Output:

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

Esempio 2: come ottenere più immagini

L’esempio batch-get-image seguente mostra i dettagli di tutte le immagini con tag prod e team1 nel repository specificato.

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

Output:

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

Per ulteriori informazioni, consulta Immagini nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzarecomplete-layer-upload.

AWS CLI

Come completare il caricamento di un livello immagine

L’esempio complete-layer-upload seguente completa il caricamento di un livello immagine nel repository 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

Output:

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

Il seguente esempio di codice mostra come utilizzarecreate-repository.

AWS CLI

Esempio 1: come creare un repository

L’esempio create-repository seguente crea un repository all’interno del namespace specificato nel registro predefinito per un account.

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

Output:

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

Per ulteriori informazioni, consulta Creazione di un repository nella Guida per l’utente di Amazon ECR.

Esempio 2: come creare un repository configurato con l’immutabilità dei tag delle immagini

L’esempio create-repository seguente crea un repository configurato per l’immutabilità dei tag nel registro predefinito per un account.

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

Output:

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

Per ulteriori informazioni, consulta Mutabilità del tag immagine nella Guida per l’utente di Amazon ECR.

Esempio 3: come creare un repository configurato con una configurazione di scansione

L’esempio create-repository seguente crea un repository configurato per l’esecuzione di una scansione delle vulnerabilità all’esecuzione del push delle immagini nel registro predefinito per un account.

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

Output:

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

Per ulteriori informazioni, consulta Scansione delle immagini nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzaredelete-lifecycle-policy.

AWS CLI

Come eliminare la policy del ciclo di vita per un repository

L’esempio delete-lifecycle-policy seguente elimina la policy del ciclo di vita per il repository hello-world.

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

Output:

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

Il seguente esempio di codice mostra come utilizzaredelete-repository-policy.

AWS CLI

Come eliminare la policy del repository specificato

L’esempio delete-repository-policy seguente elimina la policy di repository per il repository cluster-autoscaler.

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

Output:

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

Il seguente esempio di codice mostra come utilizzaredelete-repository.

AWS CLI

Come eliminare un repository

L’esempio delete-repository seguente forza l’eliminazione del repository specificato nel registro predefinito per un account. Il flag --force è obbligatorio se il repository contiene immagini.

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

Output:

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

Per ulteriori informazioni, consulta Eliminazione di un repository nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzaredescribe-image-scan-findings.

AWS CLI

Come descrivere gli esiti della scansione di un’immagine

L’esempio describe-image-scan-findings seguente restituisce gli esiti della scansione di un’immagine usando il digest dell’immagine nel repository specificato nel registro predefinito per un account.

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

Output:

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

Per ulteriori informazioni, consulta Scansione delle immagini nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzaredescribe-images.

AWS CLI

Come descrivere un’immagine in un repository

L’esempio describe-images seguente mostra i dettagli di un’immagine nel repository cluster-autoscaler con il tag v1.13.6.

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

Output:

{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }

Il seguente esempio di codice mostra come utilizzaredescribe-repositories.

AWS CLI

Come descrivere i repository in un registro

Questo esempio descrive i repository nel registro predefinito di un account.

Comando:

aws ecr describe-repositories

Output:

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

Il seguente esempio di codice mostra come utilizzareget-authorization-token.

AWS CLI

Come ottenere un token di autorizzazione per il registro predefinito

L’esempio get-authorization-token seguente ottiene un token di autorizzazione per il registro predefinito.

aws ecr get-authorization-token

Output:

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

Il seguente esempio di codice mostra come utilizzareget-download-url-for-layer.

AWS CLI

Come ottenere l’URL di download di un livello

L’esempio get-download-url-for-layer seguente mostra l’URL di download di un livello con il digest sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed nel repository cluster-autoscaler.

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

Output:

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

Il seguente esempio di codice mostra come utilizzareget-lifecycle-policy-preview.

AWS CLI

Come recuperare i dettagli di un’anteprima della policy del ciclo di vita

L’esempio get-lifecycle-policy-preview seguente recupera il risultato di un’anteprima della policy del ciclo di vita per il repository specificato nel registro predefinito per un account.

Comando:

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

Output:

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

Per ulteriori informazioni, consulta Policy del ciclo di vita nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzareget-lifecycle-policy.

AWS CLI

Come recuperare una policy del ciclo di vita

L’esempio get-lifecycle-policy seguente mostra i dettagli della policy del ciclo di vita per il repository specificato nel registro predefinito per un account.

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

Output:

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

Per ulteriori informazioni, consulta Policy del ciclo di vita nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzareget-login-password.

AWS CLI

Come recuperare una password per l’autenticazione in un registro

L’esempio get-login-password seguente mostra una password da utilizzare con un client container a tua scelta per l’autenticazione in qualsiasi registro Amazon ECR a cui il tuo principale IAM ha accesso.

aws ecr get-login-password

Output:

<password>

Per utilizzare con la CLI Docker, reindirizza l’output del comando get-login-password al comando docker login. Quando recuperi la password, assicurati di specificare la stessa Regione in cui si trova il Registro Amazon ECR.

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

Per ulteriori informazioni, consulta Autenticazione dei registri nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzareget-login.

AWS CLI

Come recuperare un comando Docker di login nel registro predefinito

Questo esempio stampa un comando da utilizzare per accedere al registro Amazon ECR predefinito.

Comando:

aws ecr get-login

Output:

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

Come accedere al registro di un altro account

Questo esempio stampa un comando da utilizzare per accedere al registro Amazon ECR predefinito.

Comando:

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

Output:

docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>

Il seguente esempio di codice mostra come utilizzareget-repository-policy.

AWS CLI

Come recuperare la policy del repository specificato

L’esempio get-repository-policy seguente mostra i dettagli della policy di repository per il repository cluster-autoscaler.

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

Output:

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

Il seguente esempio di codice mostra come utilizzareinitiate-layer-upload.

AWS CLI

Come avviare il caricamento di un livello immagine

L’esempio initiate-layer-upload seguente avvia il caricamento di un livello immagine nel repository layer-test.

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

Output:

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

Il seguente esempio di codice mostra come utilizzarelist-images.

AWS CLI

Come elencare le immagini in un repository

L’esempio list-images seguente mostra un elenco delle immagini nel repository cluster-autoscaler.

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

Output:

{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }

Il seguente esempio di codice mostra come utilizzarelist-tags-for-resource.

AWS CLI

Come elencare i tag per il repository

L’esempio list-tags-for-resource seguente mostra un elenco dei tag associati al repository hello-world.

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

Output:

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

Il seguente esempio di codice mostra come utilizzareput-image-scanning-configuration.

AWS CLI

Come aggiornare la configurazione della scansione delle immagini per un repository

L’esempio put-image-scanning-configuration seguente aggiorna la configurazione della scansione delle immagini per il repository specificato.

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

Output:

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

Per ulteriori informazioni, consulta Scansione delle immagini nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzareput-image-tag-mutability.

AWS CLI

Come aggiornare l’impostazione di immutabilità dei tag immagine per un repository

L’esempio put-image-tag-mutability seguente configura il repository specificato per l’immutabilità dei tag. Questo impedisce la sovrascrittura di tutti i tag immagine all’interno del repository.

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

Output:

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

Per ulteriori informazioni, consulta Mutabilità del tag immagine nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzareput-image.

AWS CLI

Come taggare nuovamente un’immagine con il relativo manifesto

L’esempio put-image seguente crea un nuovo tag nel repository hello-world con un manifesto di immagini esistente.

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

Contenuto di 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" } ] }

Output:

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

Il seguente esempio di codice mostra come utilizzareput-lifecycle-policy.

AWS CLI

Come creare una policy del ciclo di vita

L’esempio put-lifecycle-policy seguente crea una policy del ciclo di vita per il repository specificato nel registro predefinito per un account.

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

Contenuto di policy.json:

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

Output:

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

Per ulteriori informazioni, consulta Policy del ciclo di vita nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzareset-repository-policy.

AWS CLI

Come impostare la policy per un repository

L’esempio set-repository-policy seguente associa una policy di repository contenuta in un file al repository cluster-autoscaler.

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

Contenuto di my-policy.json:

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

Output:

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

Il seguente esempio di codice mostra come utilizzarestart-image-scan.

AWS CLI

Come avviare una scansione delle vulnerabilità di un’immagine

L’esempio start-image-scan seguente avvia una scansione di un’immagine specificata dal digest nel repository specificato.

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

Output:

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

Per ulteriori informazioni, consulta Scansione delle immagini nella Guida per l’utente di Amazon ECR.

Il seguente esempio di codice mostra come utilizzarestart-lifecycle-policy-preview.

AWS CLI

Come creare un’anteprima di una policy del ciclo di vita

L’esempio start-lifecycle-policy-preview seguente crea un’anteprima della policy del ciclo di vita definita in un file JSON per il repository specificato.

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

Contenuto di policy.json:

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

Output:

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

Il seguente esempio di codice mostra come utilizzaretag-resource.

AWS CLI

Come aggiungere un tag a un repository

L’esempio tag-resource seguente imposta un tag con chiave Stage e valore Integ sul repository hello-world.

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

Questo comando non produce alcun output.

Il seguente esempio di codice mostra come utilizzareuntag-resource.

AWS CLI

Come rimuovere un tag da un repository

L’esempio untag-resource seguente rimuove il tag con la chiave Stage dal repository hello-world.

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

Questo comando non produce alcun output.

Il seguente esempio di codice mostra come utilizzareupload-layer-part.

AWS CLI

Come caricare una parte del livello

L’esempio upload-layer-part seguente carica una parte di livello immagine nel repository 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

Output:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }