を使用した Amazon ECR の例 AWS CLI - AWS SDK コード例

Doc AWS SDK Examples リポジトリには、他にも SDK の例があります。 AWS GitHub

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用した Amazon ECR の例 AWS CLI

次のコード例は、Amazon ECR AWS Command Line Interface で を使用してアクションを実行し、一般的なシナリオを実装する方法を示しています。

アクションはより大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。アクションは個々のサービス機能を呼び出す方法を示していますが、関連するシナリオやサービス間の例ではアクションのコンテキストが確認できます。

「シナリオ」は、同じサービス内で複数の関数を呼び出して、特定のタスクを実行する方法を示すコード例です。

各例には、 へのリンクが含まれています。このリンクには GitHub、コンテキスト内でコードをセットアップして実行する方法の手順が記載されています。

トピック

アクション

次の例は、batch-check-layer-availability を使用する方法を説明しています。

AWS CLI

レイヤーの可用性を確認するには

次のbatch-check-layer-availability例では、 cluster-autoscalerリポジトリsha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed内のダイジェストを持つレイヤーの可用性をチェックします。

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

出力:

{ "layers": [ { "layerDigest": "sha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed", "layerAvailability": "AVAILABLE", "layerSize": 2777, "mediaType": "application/vnd.docker.container.image.v1+json" } ], "failures": [] }
  • API の詳細については、「 コマンドリファレンスBatchCheckLayerAvailability」の「」を参照してください。 AWS CLI

次の例は、batch-delete-image を使用する方法を説明しています。

AWS CLI

例 1: イメージを削除するには

次のbatch-delete-image例では、 アカウントのデフォルトレジストリpreciseの指定されたリポジトリにある タグを持つイメージを削除します。

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

出力:

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

例 2: 複数のイメージを削除するには

次のbatch-delete-image例では、指定したリポジトリteam1prodと でタグ付けされたすべてのイメージを削除します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージの削除」を参照してください。

  • API の詳細については、「 コマンドリファレンスBatchDeleteImage」の「」を参照してください。 AWS CLI

次の例は、batch-get-image を使用する方法を説明しています。

AWS CLI

例 1: イメージを取得するには

次のbatch-get-image例では、 アカウントのデフォルトレジストリv1.13.6の という名前のリポジトリcluster-autoscaler内の タグを持つイメージを取得します。

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

出力:

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

例 2: 複数のイメージを取得するには

次のbatch-get-image例では、指定したリポジトリteam1内の prodと でタグ付けされたすべてのイメージの詳細を表示します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージ」を参照してください。

  • API の詳細については、「 コマンドリファレンスBatchGetImage」の「」を参照してください。 AWS CLI

次の例は、complete-layer-upload を使用する方法を説明しています。

AWS CLI

イメージレイヤーのアップロードを完了するには

次のcomplete-layer-upload例では、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

出力:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "layerDigest": "sha256:9a77f85878aa1906f2020a0ecdf7a7e962d57e882250acd773383224b3fe9a02", "repositoryName": "layer-test", "registryId": "130757420319" }
  • API の詳細については、「 コマンドリファレンスCompleteLayerUpload」の「」を参照してください。 AWS CLI

次の例は、create-repository を使用する方法を説明しています。

AWS CLI

例 1: リポジトリを作成するには

次のcreate-repository例では、 アカウントのデフォルトレジストリの指定された名前空間内にリポジトリを作成します。

aws ecr create-repository \ --repository-name project-a/nginx-web-app

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「リポジトリの作成」を参照してください。

例 2: イメージタグのイミュータビリティが設定されているリポジトリを作成するには

次のcreate-repository例では、 アカウントのデフォルトレジストリでタグのイミュータビリティ用に設定されたリポジトリを作成します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージタグのミュータビリティ」を参照してください。

例 3: スキャン設定で設定されたリポジトリを作成するには

次のcreate-repository例では、アカウントのデフォルトレジストリでイメージプッシュの脆弱性スキャンを実行するように設定されたリポジトリを作成します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージスキャン」を参照してください。

  • API の詳細については、「 コマンドリファレンスCreateRepository」の「」を参照してください。 AWS CLI

次の例は、delete-lifecycle-policy を使用する方法を説明しています。

AWS CLI

リポジトリのライフサイクルポリシーを削除するには

次のdelete-lifecycle-policy例では、hello-worldリポジトリのライフサイクルポリシーを削除します。

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

出力:

{ "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 }
  • API の詳細については、「 コマンドリファレンスDeleteLifecyclePolicy」の「」を参照してください。 AWS CLI

次の例は、delete-repository-policy を使用する方法を説明しています。

AWS CLI

リポジトリのリポジトリポリシーを削除するには

次のdelete-repository-policy例では、リポジトリのcluster-autoscalerリポジトリポリシーを削除します。

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

出力:

{ "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}" }
  • API の詳細については、「 コマンドリファレンスDeleteRepositoryPolicy」の「」を参照してください。 AWS CLI

次の例は、delete-repository を使用する方法を説明しています。

AWS CLI

リポジトリを削除するには

次のコマンドdelete-repository例では、 アカウントのデフォルトレジストリ内の指定されたリポジトリを強制的に削除します。リポジトリにイメージが含まれている場合は、 --forceフラグが必要です。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「リポジトリの削除」を参照してください。

  • API の詳細については、「 コマンドリファレンスDeleteRepository」の「」を参照してください。 AWS CLI

次の例は、describe-image-scan-findings を使用する方法を説明しています。

AWS CLI

イメージのスキャン結果を記述するには

次のdescribe-image-scan-findings例では、アカウントのデフォルトレジストリの指定されたリポジトリにあるイメージダイジェストを使用して、イメージのイメージスキャンの結果を返します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージスキャン」を参照してください。

  • API の詳細については、「 コマンドリファレンスDescribeImageScanFindings」の「」を参照してください。 AWS CLI

次の例は、describe-images を使用する方法を説明しています。

AWS CLI

リポジトリ内のイメージを記述するには

次のdescribe-images例では、cluster-autoscalerリポジトリ内のイメージの詳細をタグ とともに表示しますv1.13.6

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

出力:

{ "imageDetails": [ { "registryId": "012345678910", "repositoryName": "cluster-autoscaler", "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTags": [ "v1.13.6" ], "imageSizeInBytes": 48318255, "imagePushedAt": 1565128275.0 } ] }
  • API の詳細については、「 コマンドリファレンスDescribeImages」の「」を参照してください。 AWS CLI

次の例は、describe-repositories を使用する方法を説明しています。

AWS CLI

レジストリ内のリポジトリを記述するには

この例は、アカウントのデフォルトレジストリ内のリポジトリを記述します。

コマンド:

aws ecr describe-repositories

出力:

{ "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" } ] }
  • API の詳細については、「 コマンドリファレンスDescribeRepositories」の「」を参照してください。 AWS CLI

次の例は、get-authorization-token を使用する方法を説明しています。

AWS CLI

デフォルトレジストリの認証トークンを取得するには

次のコマンドget-authorization-token例では、デフォルトレジストリの認証トークンを取得します。

aws ecr get-authorization-token

出力:

{ "authorizationData": [ { "authorizationToken": "QVdTOkN...", "expiresAt": 1448875853.241, "proxyEndpoint": "https://123456789012.dkr.ecr.us-west-2.amazonaws.com" } ] }
  • API の詳細については、「 コマンドリファレンスGetAuthorizationToken」の「」を参照してください。 AWS CLI

次の例は、get-download-url-for-layer を使用する方法を説明しています。

AWS CLI

レイヤーのダウンロード URL を取得するには

次のget-download-url-for-layer例では、cluster-autoscalerリポジトリsha256:6171c7451a50945f8ddd72f7732cc04d7a0d1f48138a426b2e64387fdeb834ed内のダイジェストを含むレイヤーのダウンロード URL を表示します。

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

出力:

{ "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" }
  • API の詳細については、「 コマンドリファレンスGetDownloadUrlForLayer」の「」を参照してください。 AWS CLI

次の例は、get-lifecycle-policy-preview を使用する方法を説明しています。

AWS CLI

ライフサイクルポリシーのプレビューの詳細を取得するには

次のget-lifecycle-policy-preview例では、アカウントのデフォルトレジストリで指定されたリポジトリのライフサイクルポリシープレビューの結果を取得します。

コマンド:

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「ライフサイクルポリシー」を参照してください。

  • API の詳細については、「 コマンドリファレンスGetLifecyclePolicyPreview」の「」を参照してください。 AWS CLI

次の例は、get-lifecycle-policy を使用する方法を説明しています。

AWS CLI

ライフサイクルポリシーを取得するには

次のget-lifecycle-policy例では、 アカウントのデフォルトレジストリにある指定されたリポジトリのライフサイクルポリシーの詳細を表示します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「ライフサイクルポリシー」を参照してください。

  • API の詳細については、「 コマンドリファレンスGetLifecyclePolicy」の「」を参照してください。 AWS CLI

次の例は、get-login-password を使用する方法を説明しています。

AWS CLI

レジストリに対して認証するパスワードを取得するには

以下に、IAM プリンシパルがアクセスできる任意の Amazon ECR レジストリを認証するために、選択したコンテナクライアントで使用できるパスワードget-login-passwordを示します。

aws ecr get-login-password

出力:

<password>

Docker CLI で を使用するには、 get-login-password コマンドの出力を docker login コマンドにパイプします。パスワードを取得するときは、Amazon ECR レジストリが存在するリージョンと同じリージョンを指定してください。

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

詳細については、「Amazon ECR ユーザーガイド」の「レジストリ認証」を参照してください。

  • API の詳細については、「 コマンドリファレンスGetLoginPassword」の「」を参照してください。 AWS CLI

次の例は、get-login を使用する方法を説明しています。

AWS CLI

デフォルトレジストリへの Docker ログインコマンドを取得するには

この例では、デフォルトの Amazon ECR レジストリへのログインに使用できる コマンドを出力します。

コマンド:

aws ecr get-login

出力:

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

別のアカウントのレジストリにログインするには

この例では、他のアカウントに関連付けられた Amazon ECR レジストリへのログインに使用できる 1 つ以上のコマンドを出力します。

コマンド:

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

出力:

docker login -u <username> -p <token-1> -e none <endpoint-1> docker login -u <username> -p <token-2> -e none <endpoint-2>
  • API の詳細については、「 コマンドリファレンスGetLogin」の「」を参照してください。 AWS CLI

次の例は、get-repository-policy を使用する方法を説明しています。

AWS CLI

リポジトリのリポジトリポリシーを取得するには

次のget-repository-policy例では、リポジトリのcluster-autoscalerリポジトリポリシーに関する詳細を表示します。

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

出力:

{ "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}" }
  • API の詳細については、「 コマンドリファレンスGetRepositoryPolicy」の「」を参照してください。 AWS CLI

次の例は、initiate-layer-upload を使用する方法を説明しています。

AWS CLI

イメージレイヤーのアップロードを開始するには

次のinitiate-layer-upload例では、layer-testリポジトリへのイメージレイヤーのアップロードを開始します。

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

出力:

{ "partSize": 10485760, "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9" }
  • API の詳細については、「 コマンドリファレンスInitiateLayerUpload」の「」を参照してください。 AWS CLI

次の例は、list-images を使用する方法を説明しています。

AWS CLI

リポジトリ内のイメージを一覧表示するには

次の list-images の例は、cluster-autoscaler リポジトリ内のイメージのリストを表示します。

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

出力:

{ "imageIds": [ { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.8" }, { "imageDigest": "sha256:99c6fb4377e9a420a1eb3b410a951c9f464eff3b7dbc76c65e434e39b94b6570", "imageTag": "v1.13.7" }, { "imageDigest": "sha256:4a1c6567c38904384ebc64e35b7eeddd8451110c299e3368d2210066487d97e5", "imageTag": "v1.13.6" } ] }
  • API の詳細については、「 コマンドリファレンスListImages」の「」を参照してください。 AWS CLI

次の例は、list-tags-for-resource を使用する方法を説明しています。

AWS CLI

リポジトリのタグを一覧表示するには

次のlist-tags-for-resource例では、hello-worldリポジトリに関連付けられているタグのリストを表示します。

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

出力:

{ "tags": [ { "Key": "Stage", "Value": "Integ" } ] }
  • API の詳細については、「 コマンドリファレンスListTagsForResource」の「」を参照してください。 AWS CLI

次の例は、put-image-scanning-configuration を使用する方法を説明しています。

AWS CLI

リポジトリのイメージスキャン設定を更新するには

次のput-image-scanning-configuration例では、指定したリポジトリのイメージスキャン設定を更新します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージスキャン」を参照してください。

  • API の詳細については、「 コマンドリファレンスPutImageScanningConfiguration」の「」を参照してください。 AWS CLI

次の例は、put-image-tag-mutability を使用する方法を説明しています。

AWS CLI

リポジトリのイメージタグの変更可能性設定を更新するには

次のput-image-tag-mutability例では、指定したリポジトリをタグのイミュータビリティに設定します。これにより、リポジトリ内のすべてのイメージタグが上書きされるのを防ぎます。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージタグのミュータビリティ」を参照してください。

  • API の詳細については、「 コマンドリファレンスPutImageTagMutability」の「」を参照してください。 AWS CLI

次の例は、put-image を使用する方法を説明しています。

AWS CLI

マニフェストを使用してイメージにタグを付けるには

次のput-image例では、既存のイメージマニフェストを使用してhello-worldリポジトリに新しいタグを作成します。

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

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

出力:

{ "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 の詳細については、「 コマンドリファレンスPutImage」の「」を参照してください。 AWS CLI

次の例は、put-lifecycle-policy を使用する方法を説明しています。

AWS CLI

ライフサイクルポリシーを作成するには

次のput-lifecycle-policy例では、 アカウントのデフォルトレジストリに、指定されたリポジトリのライフサイクルポリシーを作成します。

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

policy.json の内容:

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「ライフサイクルポリシー」を参照してください。

  • API の詳細については、「 コマンドリファレンスPutLifecyclePolicy」の「」を参照してください。 AWS CLI

次の例は、set-repository-policy を使用する方法を説明しています。

AWS CLI

リポジトリのリポジトリポリシーを設定するには

次のset-repository-policy例では、 ファイルに含まれるリポジトリポリシーをcluster-autoscalerリポジトリにアタッチします。

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

my-policy.json の内容:

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

出力:

{ "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}" }
  • API の詳細については、「 コマンドリファレンスSetRepositoryPolicy」の「」を参照してください。 AWS CLI

次の例は、start-image-scan を使用する方法を説明しています。

AWS CLI

イメージ脆弱性スキャンを開始するには

次のstart-image-scan例では、指定したリポジトリ内のイメージダイジェストによって指定された と のイメージスキャンを開始します。

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

出力:

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

詳細については、「Amazon ECR ユーザーガイド」の「イメージスキャン」を参照してください。

  • API の詳細については、「 コマンドリファレンスStartImageScan」の「」を参照してください。 AWS CLI

次の例は、start-lifecycle-policy-preview を使用する方法を説明しています。

AWS CLI

ライフサイクルポリシーのプレビューを作成するには

次のstart-lifecycle-policy-preview例では、指定したリポジトリの JSON ファイルで定義されるライフサイクルポリシーのプレビューを作成します。

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

policy.json の内容:

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

出力:

{ "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" }
  • API の詳細については、「 コマンドリファレンスStartLifecyclePolicyPreview」の「」を参照してください。 AWS CLI

次の例は、tag-resource を使用する方法を説明しています。

AWS CLI

リポジトリにタグを付けるには

次のtag-resource例では、hello-worldリポジトリIntegにキーStageと値を持つタグを設定します。

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

このコマンドでは何も出力されません。

  • API の詳細については、「 コマンドリファレンスTagResource」の「」を参照してください。 AWS CLI

次の例は、untag-resource を使用する方法を説明しています。

AWS CLI

リポジトリのタグを解除するには

次のuntag-resource例では、 キーを持つ タグをhello-worldリポジトリStageから削除します。

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

このコマンドでは何も出力されません。

  • API の詳細については、「 コマンドリファレンスUntagResource」の「」を参照してください。 AWS CLI

次の例は、upload-layer-part を使用する方法を説明しています。

AWS CLI

レイヤーパートをアップロードするには

以下では、イメージレイヤー部分をlayer-testリポジトリupload-layer-partにアップロードします。

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

出力:

{ "uploadId": "6cb64b8a-9378-0e33-2ab1-b780fab8a9e9", "registryId": "012345678910", "lastByteReceived": 8323314, "repositoryName": "layer-test" }
  • API の詳細については、「 コマンドリファレンスUploadLayerPart」の「」を参照してください。 AWS CLI