Amazon Elastic コンテナレジストリのよくある質問

全般

Amazon ECR は、フルマネージド型のコンテナレジストリです。このレジストリを使うと、デベロッパーはコンテナイメージを簡単に保存およびデプロイできます。Amazon ECR は、Amazon Elastic Container Service (Amazon ECS) Amazon Elastic Kubernetes Service (Amazon EKS) 、および AWS Lambda と統合されるため、開発から本番までのワークフローが簡素化されます。Amazon ECR を使用すると、自前のコンテナリポジトリの運用や、基盤となるインフラストラクチャのスケーリングの検討は不要になります。Amazon ECR は非常に可用性が高くスケーラブルなアーキテクチャでイメージをホストするため、コンテナをアプリケーションに確実にデプロイすることが可能です。AWS Identity and Access Management (IAM) との統合により、各リポジトリのリソースレベルの制御がもたらされ、組織全体または世界中の誰とでもイメージを共有できます。

Amazon ECR を使用すると、コンテナレジストリを動かすためのインフラストラクチャの運用やスケーリングが不要になります。Amazon ECR ではストレージとして Amazon Simple Storage Service (S3) が使用され、コンテナイメージの可用性とアクセス可能性が高くなるため、アプリケーションに新しいコンテナを確実にデプロイできます。Amazon ECR では、コンテナイメージは HTTPS 経由で転送され、保管時にはイメージが自動的に暗号化されます。各リポジトリへのアクセス許可を管理するポリシーを設定し、IAM ユーザー、IAM ロール、または他の AWS アカウントへのアクセスを制限できます。Amazon ECR は Amazon ECS、Amazon EKS、AWS Fargate、AWS Lambda、Docker CLI に統合されているため、開発から本稼働までのワークフローを簡略化できます。Docker CLI を使用して開発マシンからコンテナイメージを簡単に Amazon ECR にプッシュでき、Amazon コンテナオーケストレーターまたはコンピューティングはそのコンテナイメージを本番用デプロイにプルできます。

Amazon ECR に前払い料金などの義務はありません。 パブリックリポジトリまたはプライベートリポジトリに保存するデータとインターネットに転送するデータの量に対してのみ、料金をお支払いいただきます。詳細については、料金ページをご覧ください。

Amazon ECR はリージョンごとのサービスで、イメージのデプロイ方法をお客様が柔軟に決められる設計になっています。最適なパフォーマンスを発揮できるよう、Docker クラスターが実行されている AWS リージョンで、イメージをプッシュおよびプルできるようになっています。また、Docker が実行されていれば、デスクトップやオンプレミス環境など、場所を問わず Amazon ECR にアクセスできます。リージョン間またはインターネット外へイメージをプルするには、別途、データ転送コストが必要になり、レイテンシーも発生します。

はい。Amazon ECR には可用性が高いコンテナレジストリとウェブサイトがあります。これにより、パブリックコンテナソフトウェアを簡単に共有または検索できます。AWS アカウントの有無にかかわらず、誰でも Amazon ECR Public Gallery を使用して、Kubernetes のオペレーティングシステム、AWS 公開イメージ、Helm チャートなどのファイルなど、よく使用されるコンテナイメージを検索してダウンロードできます。

プライベートリポジトリはコンテンツ検索機能を提供せず、イメージのプルを許可する前に AWS アカウント認証情報を使用した Amazon IAM ベースの認証を必要とします。パブリックリポジトリには説明的なコンテンツがあり、AWS アカウントを必要とせず、IAM 認証情報を使用しなくても、誰でもどこからでもイメージをプルできます。パブリックリポジトリのイメージは、Amazon ECR パブリックギャラリーでも入手できます。
 

Amazon ECR で AWS CloudTrail を使用すると、イメージをプルしたユーザーやイメージ間でタグが移動された時間など、API のすべてのアクションの履歴を提供できます。また、管理者は、どの EC2 インスタンスからどのイメージがプルされたかを確認することもできます。

Using Amazon ECR

Amazon ECR を開始する一番よい方法は、Docker CLI を使用して最初のイメージをプッシュおよびプルすることです。詳細については、開始方法ページにアクセスしてください。

はい。インスタンスがパブリックインターネットを経由せずにプライベートリポジトリからイメージをプルできるように AWS PrivateLink エンドポイントを設定できます。

Amazon ECR は、リポジトリを作成、モニタリング、および削除し、リポジトリ許可を設定するためのコマンドラインインターフェイスと API を提供します。Amazon ECR コンソールの [Repositories] セクションからアクセスできる Amazon ECR コンソールでも、同じ操作ができます。また、Amazon ECR は Docker CLI と統合されており、開発マシンでイメージのプッシュ、プル、およびタグ付けを行えます。

Amazon ECR パブリックギャラリーにイメージを公開するには、AWS アカウントにサインインし、作成したパブリックリポジトリにプッシュします。アカウントごとに一意のエイリアスが割り当てられます。そのエイリアスは、公開するすべてのパブリックイメージを識別するイメージ URL で使用します。

はい。予約済みのエイリアスでない限り、組織名やプロジェクト名などのカスタムエイリアスをリクエストできます。AWS のサービスであると分かるような名前は予約されています。AWS Marketplace のセラーであると分かるような名前も予約されている可能性があります。エイリアスリクエストが AWS の適正利用規約または他の AWS ポリシーに違反していない限り、数日以内にカスタムエイリアスリクエストを確認して承認します。

イメージの URL で一般的な「dockerpull」コマンドを使用してプルします。Amazon ECR パブリックギャラリーを使用して発行元のエイリアス、イメージ名、またはイメージの説明を使用してイメージを見つけることにより、この URL を簡単に検索できます。イメージの URL は public.ecr.aws/<alias>/<image>:<tag> の形式です。例: public.ecr.aws/eks/aws-alb-ingress-controller:v1.1.5

はい。Amazon ECR は、イメージの保存場所やデプロイ方法を柔軟に選択できるように設計されています。イメージを構築するデプロイパイプラインを作成し、それを 1 つのリージョンの Amazon ECR にプッシュできます。また、Amazon ECR は、イメージを他のリージョンやアカウントに自動的にレプリケートし、マルチリージョンクラスターへのデプロイを考慮します。

はい。Docker が実行されていれば、デスクトップやオンプレミス環境など、場所を問わず Amazon ECR にアクセスできます。

はい。Amazon EKS、Amazon SageMaker、AWS Lambda などのサービスは、公式のパブリックユースコンテナイメージとアーティファクトを Amazon ECR に公開します。 

はい。Amazon ECR は Amazon ECS と統合されているので、Amazon ECS で実行中のアプリケーションのコンテナイメージの保存、実行、管理を簡単に行えます。タスク定義で Amazon ECR リポジトリを指定するだけで、Amazon ECS がアプリケーションに最適なイメージを取得します。

はい。AWS Elastic Beanstalk は、シングルコンテナおよびマルチコンテナ Docker 環境の両方で Amazon ECR をサポートしているため、AWS Elastic Beanstalk を使用して Amazon ECR に保存されたコンテナイメージを簡単にデプロイできます。必要な操作は、Dockerrun.aws.json 設定で Amazon ECR リポジトリを指定し、AmazonEC2ContainerRegistryReadOnly ポリシーをコンテナインスタンスロールにアタッチすることのみです。

Amazon ECR で現在サポートされているのは、Docker Engine 1.7.0 以上です。

Amazon ECR でサポートされているのは、Docker Registry V2 API 仕様です。

いいえ。ただし、Amazon ECR は、この機能がある一般的な CI/CD ソリューションのいくつかと統合されています。詳細については、Amazon ECR パートナーページをご覧ください。

はい。Amazon ECR は、AWS マネジメントコンソールや AWS API への委任されたアクセスのための ID フェデレーションをサポートする AWS Identity and Access Management (IAM) と統合されます。

Amazon ECR では、Docker Image Manifest V2、Schema 2 形式がサポートされています。Schema 1 イメージとの下位互換性を維持するため、Amazon ECR では Schema 1 形式でアップロードされるイメージを引き続き受け入れています。さらに Amazon ECR では、Docker Engine の古いバージョン (1.9 以前) を使用してプルする場合、Schema 2 から Schema 1 イメージに下位変換できます。

はい。Amazon ECR は、オープンコンテナ規格 (OCI) イメージ仕様と互換性があるため、OCI イメージとアーティファクトをプッシュおよびプルできます。Amazon ECR では、Docker Image Manifest V2、Schema 2 イメージ、OCI イメージ間でもプルする際に変換できます。

セキュリティ

Amazon ECR では、Amazon S3 のサーバー側暗号化または AWS KMS 暗号化を使用して保管中のイメージが自動的に暗号化し、HTTPS を介してコンテナイメージを転送します。AWS Identity and Access Management (IAM) のユーザーとロールを使用してイメージへのアクセス権限の管理やアクセスの制御を行えるようポリシーを設定できるため、認証情報を EC2 インスタンスで直接管理する必要はありません。

IAM のリソースベースのポリシーを使用して、コンテナイメージにアクセスできるユーザーやアクセス元 (EC2 インスタンスなど)、およびアクセスできる方法、時間、場所を制御して、モニタリングすることができます。使用を開始するには、AWS マネジメントコンソールを使用して、リポジトリに対してリソースベースのポリシーを作成します。または、Amazon ECR CLI を使って、サンプルポリシーをリポジトリにアタッチすることもできます。

はい。 クロスアカウントのイメージ共有のためにポリシーを作成して設定する方法については、こちらの例をご覧ください。

Amazon ECR を有効にして、オペレーティングシステムのさまざまな脆弱性についてコンテナイメージを自動的にスキャンできます。API コマンドを使用して画像をスキャンすることもできます。スキャンが完了すると、Amazon ECR が API を介してコンソールに通知します。画像スキャンを強化するために、Amazon Inspector を有効にできます。