Amazon-ECR-Beispiele unter Verwendung von AWS CLI - AWS Command Line Interface

Amazon-ECR-Beispiele unter Verwendung von AWS CLI

Die folgenden Codebeispiele zeigen, wie Sie Aktionen durchführen und gängige Szenarien implementieren, indem Sie die AWS Command Line Interface mit Amazon ECR nutzen.

Aktionen sind Codeauszüge aus größeren Programmen und müssen im Kontext ausgeführt werden. Während Aktionen Ihnen zeigen, wie Sie einzelne Service-Funktionen aufrufen, können Sie Aktionen im Kontext der zugehörigen Szenarien anzeigen.

Jedes Beispiel enthält einen Link zum vollständigen Quellcode, wo Sie Anleitungen zum Einrichten und Ausführen des Codes im Kontext finden.

Themen

Aktionen

Das folgende Codebeispiel zeigt, wie batch-check-layer-availability verwendet wird.

AWS CLI

So prüfen Sie die Verfügbarkeit eines Layers

Im folgenden batch-check-layer-availability-Beispiel wird die Verfügbarkeit eines Layers mit dem Digest sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed im cluster-autoscaler-Repository überprüft.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie batch-delete-image verwendet wird.

AWS CLI

Beispiel 1: So löschen Sie ein Image

Im folgenden batch-delete-image-Beispiel wird ein Image mit dem Tag precise im angegebenen Repository im Standard-Registry für ein Konto gelöscht.

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

Ausgabe:

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

Beispiel 2: So löschen Sie mehrere Images

Im folgenden batch-delete-image-Beispiel werden alle Images gelöscht, die mit prod und team1 im angegebenen Repository markiert sind.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Löschen von Images im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie batch-get-image verwendet wird.

AWS CLI

Beispiel 1: So rufen Sie ein Image ab

Im folgenden batch-get-image-Beispiel wird ein Image mit dem Tag v1.13.6 in einem Repository mit dem Namen cluster-autoscaler im Standard-Registry für ein Konto abgerufen.

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

Ausgabe:

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

Beispiel 2: So rufen Sie mehrere Images ab

Im folgenden batch-get-image-Beispiel werden Details aller Images angezeigt, die mit prod und team1 im angegebenen Repository markiert sind.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Images im Amazon-ECR-Benutzerhandbuch.

  • API-Details finden Sie unter BatchGetImage in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie complete-layer-upload verwendet wird.

AWS CLI

So schließen Sie den Upload eines Image-Layers ab

Im folgenden complete-layer-upload-Beispiel wird der Upload eines Image-Layers in das layer-test-Repository abgeschlossen.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie create-repository verwendet wird.

AWS CLI

Beispiel 1: So erstellen Sie ein Repository

Im folgenden create-repository-Beispiel wird ein Repository innerhalb des angegebenen Namespace im Standard-Registry für ein Konto erstellt.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Erstellen eines Repositorys im Amazon-ECR-Benutzerhandbuch.

Beispiel 2: So erstellen Sie ein Repository, das mit der Unveränderlichkeit von Image-Tags konfiguriert ist

Im folgenden create-repository-Beispiel wird im Standard-Registry für ein Konto ein Repository erstellt, das für die Unveränderlichkeit von Tags konfiguriert ist.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Veränderlichkeit von Image-Tags im Amazon-ECR-Benutzerhandbuch.

Beispiel 3: So erstellen Sie ein Repository, das mit einer Scan-Konfiguration konfiguriert ist

Im folgenden create-repository-Beispiel wird im Standard-Registry für ein Konto ein Repository erstellt, das für die Durchführung eines Scans auf Schwachstellen beim Pushen von Images konfiguriert ist.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Scannen von Images im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie delete-lifecycle-policy verwendet wird.

AWS CLI

So löschen Sie eine Lebenszyklusrichtlinie für ein Repository

Im folgenden delete-lifecycle-policy-Beispiel wird die Lebenszyklusrichtlinie für das hello-world-Repository gelöscht.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie delete-repository-policy verwendet wird.

AWS CLI

So löschen Sie die Repository-Richtlinie für ein Repository

Im folgenden delete-repository-policy-Beispiel wird die Repository-Richtlinie für das cluster-autoscaler-Repository gelöscht.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie delete-repository verwendet wird.

AWS CLI

So löschen Sie ein Repository

Der folgende delete-repository-Beispielbefehl erzwingt das Löschen des angegebenen Repositorys im Standard-Registry für ein Konto. Das --force-Flag ist erforderlich, wenn das Repository Images enthält.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Löschen eines Repositorys im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie describe-image-scan-findings verwendet wird.

AWS CLI

So beschreiben Sie die Scanergebnisse für ein Image

Im folgenden describe-image-scan-findings-Beispiel werden die Ergebnisse des Image-Scans für ein Image mithilfe des Image-Digests im angegebenen Repository der Standard-Registry für ein Konto zurückgegeben.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Scannen von Images im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie describe-images verwendet wird.

AWS CLI

So beschreiben Sie ein Image in einem Repository

Im folgenden describe-images-Beispiel werden Details zu einem Image im cluster-autoscaler-Repository mit dem Tag v1.13.6 angezeigt.

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

Ausgabe:

{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }
  • API-Details finden Sie unter DescribeImages in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie describe-repositories verwendet wird.

AWS CLI

So beschreiben Sie die Repositorys in einem Registry

In diesem Beispiel werden die Repositorys im Standard-Registry für ein Konto beschrieben.

Befehl:

aws ecr describe-repositories

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie get-authorization-token verwendet wird.

AWS CLI

So rufen Sie ein Autorisierungstoken für Ihr Standard-Registry ab

Mit dem folgenden get-authorization-token-Beispielbefehl wird ein Autorisierungstoken für Ihr Standard-Registry abgerufen.

aws ecr get-authorization-token

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie get-download-url-for-layer verwendet wird.

AWS CLI

So rufen Sie die Download-URL eines Layers ab

Im folgenden get-download-url-for-layer-Beispiel wird die Download-URL eines Layers mit dem Digest sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed im cluster-autoscaler-Repository angezeigt.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie get-lifecycle-policy-preview verwendet wird.

AWS CLI

So rufen Sie Details für eine Lebenszyklus-Richtlinienvorschau ab

Im folgenden get-lifecycle-policy-preview-Beispiel wird das Ergebnis einer Lebenszyklus-Richtlinienvorschau für das angegebene Repository im Standard-Registry für ein Konto abgerufen.

Befehl:

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

Ausgabe:

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

Weitere Informationen finden Sie unter Lebenszyklusrichtlinien im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie get-lifecycle-policy verwendet wird.

AWS CLI

So rufen Sie eine Lebenszyklusrichtlinie ab

Im folgenden get-lifecycle-policy-Beispiel werden Details der Lebenszyklusrichtlinie für das angegebene Repository im Standard-Registry für das angezeigt.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Lebenszyklusrichtlinien im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie get-login-password verwendet wird.

AWS CLI

So rufen Sie ein Passwort ab, um sich bei einem Registry zu authentifizieren

Im folgenden get-login-password-Beispiel wird ein Passwort angezeigt, das Sie mit einem Containerclient Ihrer Wahl verwenden können, um sich bei einem beliebigen Amazon-ECR-Registry zu authentifizieren, auf das Ihr IAM-Prinzipal Zugriff hat.

aws ecr get-login-password

Ausgabe:

<password>

Zur Verwendung mit der Docker-CLI leiten Sie die Ausgabe des get-login-password-Befehls an den docker login-Befehl weiter. Stellen Sie beim Abrufen des Passworts sicher, dass Sie dieselbe Region angeben, in der sich Ihr Amazon-ECR-Registry befindet.

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

Weitere Informationen finden Sie unter Registry-Authentifizierung im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie get-login verwendet wird.

AWS CLI

So rufen Sie einen Docker-Anmeldebefehl für Ihr Standard-Registry ab

In diesem Beispiel wird ein Befehl gedruckt, mit dem Sie sich bei Ihrem standardmäßigen Amazon-ECR-Registry anmelden können.

Befehl:

aws ecr get-login

Ausgabe:

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

So melden Sie sich beim Registry eines anderen Kontos an

In diesem Beispiel werden ein oder mehrere Befehle gedruckt, mit denen Sie sich bei Amazon-ECR-Registrys anmelden können, die mit anderen Konten verknüpft sind.

Befehl:

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

Ausgabe:

docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>
  • API-Details finden Sie unter GetLogin in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie get-repository-policy verwendet wird.

AWS CLI

So rufen Sie die Repository-Richtlinie für ein Repository ab

Im folgenden get-repository-policy-Beispiel werden Details zur Repository-Richtlinie für das cluster-autoscaler-Repository angezeigt.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie initiate-layer-upload verwendet wird.

AWS CLI

So initiieren Sie einen Upload eines Image-Layers

Im folgenden initiate-layer-upload-Beispiel wird der Upload eines Image-Layers in das layer-test-Repository initiiert.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie list-images verwendet wird.

AWS CLI

So listen Sie die Images in einem Repository auf

Im folgenden list-images-Beispiel wird eine Liste der Images im cluster-autoscaler-Repository angezeigt.

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

Ausgabe:

{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }
  • API-Details finden Sie unter ListImages in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie list-tags-for-resource verwendet wird.

AWS CLI

So listen Sie die Tags für ein Repository auf

Im folgenden list-tags-for-resource-Beispiel wird eine Liste der Tags angezeigt, die dem hello-world-Repository zugeordnet sind.

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie put-image-scanning-configuration verwendet wird.

AWS CLI

So aktualisieren Sie die Image-Scan-Konfiguration für ein Repository

Das folgende put-image-scanning-configuration-Beispiel aktualisiert die Image-Scan-Konfiguration für das angegebenes Repository.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Scannen von Images im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie put-image-tag-mutability verwendet wird.

AWS CLI

So aktualisieren Sie die Einstellung zur Veränderlichkeit von Image-Tags für ein Repository

Im folgenden put-image-tag-mutability-Beispiel wird das angegebene Repository für die Unveränderlichkeit von Tags konfiguriert. Dies verhindert das Überschreiben aller Image-Tags innerhalb des Repositorys.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Veränderlichkeit von Image-Tags im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie put-image verwendet wird.

AWS CLI

So markieren Sie ein Image erneut mit seinem Manifest

Im folgenden put-image-Beispiel wird ein neues Tag im hello-world-Repository mit einem vorhandenen Image-Manifest erstellt.

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

Inhalt von 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" } ] }

Ausgabe:

{ "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" } }
  • API-Details finden Sie unter PutImage in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie put-lifecycle-policy verwendet wird.

AWS CLI

So erstellen Sie eine Lebenszyklusrichtlinie

Im folgenden put-lifecycle-policy-Beispiel wird eine Lebenszyklusrichtlinie für das angegebene Repository im Standard-Registry für ein Konto erstellt.

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

Inhalt von policy.json:

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

Ausgabe:

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

Weitere Informationen finden Sie unter Lebenszyklusrichtlinien im Amazon-ECR-Benutzerhandbuch.

Das folgende Codebeispiel zeigt, wie set-repository-policy verwendet wird.

AWS CLI

So legen Sie die Repository-Richtlinie für ein Repository fest

Im folgenden set-repository-policy-Beispiel wird eine in einer Datei enthaltene Repository-Richtlinie an das cluster-autoscaler-Repository angehängt.

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

Inhalt von my-policy.json:

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie start-image-scan verwendet wird.

AWS CLI

So starten Sie einen Schwachstellenscan für ein Image

Im folgenden start-image-scan-Beispiel wird ein Image-Scan für den Image-Digest im angegebenen Repository gestartet und von diesem spezifiziert.

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

Ausgabe:

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

Weitere Informationen finden Sie unter Scannen von Images im Amazon-ECR-Benutzerhandbuch.

  • API-Details finden Sie unter StartImageScan in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie start-lifecycle-policy-preview verwendet wird.

AWS CLI

So erstellen Sie eine Lebenszyklus-Richtlinienvorschau

Im folgenden start-lifecycle-policy-preview-Beispiel wird eine Lebenszyklus-Richtlinienvorschau, die durch eine JSON-Datei definiert ist, für das angegebene Repository erstellt.

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

Inhalt von policy.json:

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

Ausgabe:

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

Das folgende Codebeispiel zeigt, wie tag-resource verwendet wird.

AWS CLI

So taggen Sie ein Repository

Im folgenden tag-resource-Beispiel wird ein Tag mit dem Schlüssel Stage und dem Wert Integ im hello-world-Repository festgelegt.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

  • API-Details finden Sie unter TagResource in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie untag-resource verwendet wird.

AWS CLI

So heben Sie die Markierung eines Repositorys auf

Im folgenden untag-resource-Beispiel wird das Tag mit dem Schlüssel Stage aus dem hello-world-Repository entfernt.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

  • API-Details finden Sie unter UntagResource in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie upload-layer-part verwendet wird.

AWS CLI

So laden Sie einen Layer-Teil hoch

Im folgenden upload-layer-part-Beispiel wird ein Teil des Image-Layers in das layer-test-Repository hochgeladen.

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

Ausgabe:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }
  • API-Details finden Sie unter UploadLayerPart in der AWS CLI-Befehlsreferenz.