メニュー
Amazon ECR
ユーザーガイド (API Version 2015-09-21)

Amazon ECR レジストリ

Amazon ECR レジストリを使用すると、高度な可用性を備えたスケーラブルなアーキテクチャでイメージをホストできるため、アプリケーションのコンテナを確実にデプロイできます。リポジトリを使用すると、イメージリポジトリと Docker イメージを管理できます。AWS アカウントごとに、(デフォルト) Amazon ECR レジストリが 1 つずつ提供されます。

レジストリの概念

  • デフォルトレジストリの URL は https://aws_account_id.dkr.ecr.region.amazonaws.com です。

  • デフォルトでは、デフォルトレジストリで作成したリポジトリおよびイメージへの読み取りおよび書き込み権限が付与されます。

  • レジストリに対して Docker クライアントを認証し、docker push コマンドと docker pull コマンドを使用してそのレジストリ内のリポジトリとの間でイメージをプッシュおよびプルできるようにする必要があります。詳細については、「レジストリの認証」を参照してください。

  • リポジトリは、IAM のユーザーアクセスポリシーとリポジトリポリシーによって制御できます。

レジストリの認証

AWS マネジメントコンソール、AWS CLI、または AWS SDK を使用してイメージリポジトリを作成および管理し、イメージの一覧表示や削除などのいくつかのアクションをイメージで実行できます。これらのクライアントは、標準の AWS 認証方法を使用します。技術的には Amazon ECR API を使用してイメージをプッシュおよびプルできますが、これらの目的ではほとんどの場合 Docker CLI (または言語固有の Docker ライブラリ) を使用します。

Docker CLI では標準の AWS 認証方法がサポートされていないため、Docker クライアントを別の方法で認証して、イメージのプッシュまたはプルをリクエストしているユーザーを Amazon ECR が認識できるようにする必要があります。Docker CLI を使用している場合、docker login コマンドを使用し、認証トークンによって Amazon ECR レジストリを認証します。認証トークンは、Amazon ECR により提供され、12 時間有効です。GetAuthorizationToken API オペレーションは、ユーザー名 (AWS) とパスワードを含む base64 でエンコードされた認証トークンを提供します。この認証トークンは、docker login コマンドでデコードおよび使用できます。ただし、よりシンプルな get-login コマンド (トークンを取得してデコードし、自動的に docker login コマンドに変換します) を AWS CLI で使用することができます。

get-login を使用して Amazon ECR レジストリに対して Docker を認証するには

注記

get-login コマンドは AWS CLI のバージョン 1.9.15 以降で利用できます。ただし、Docker の最新バージョン (17.06 以降) を使用している場合は、バージョン 1.11.91 以降をお勧めします。AWS CLI のバージョンは、aws --version コマンドを使用して確認できます。

  1. aws ecr get-login コマンドを実行します。次の例は、リクエストを実行するアカウントに関連付けられたデフォルトレジストリ用です。他のアカウントのレジストリにアクセスするには、--registry-ids aws_account_id オプションを使用します。Docker のバージョン 17.06 以降を使用している場合は、get-login の後に --no-include-email オプションを含めます。詳細については、AWS Command Line Interface Referenceget-login を参照してください。

    Copy
    aws ecr get-login

    出力:

    Copy
    docker login -u AWS -p password -e none https://aws_account_id.dkr.ecr.us-east-1.amazonaws.com

    重要

    Unknown options: --no-include-email エラーが返された場合は、AWS CLI の最新バージョンをインストールします。詳細については、AWS Command Line Interface ユーザーガイド の「AWS コマンドラインインターフェイスのインストール」を参照してください。

    結果の出力は、Amazon ECR レジストリに対して Docker クライアントを認証するために使用する、docker login コマンドとなります。

  2. Docker CLI をレジストリに対して認証するには、docker login コマンドをコピーしてターミナルに貼り付けます。このコマンドは、指定されたレジストリに対して 12 時間有効な認証トークンを提供します。

    注記

    Windows PowerShell を使用している場合、このような長い文字列をコピーして貼り付ることはできません。代わりに次のコマンドを使用します。Docker バージョン 17.06 以降を使用している場合は、get-login の後に --no-include-email オプションを含めます。

    Copy
    Invoke-Expression -Command (aws ecr get-login)

    重要

    docker login コマンドを実行すると、システムの他のユーザーがプロセスリスト表示 (ps -e) でコマンド文字列を確認できるようになります。docker login コマンドには認証情報が含まれているため、システムの他のユーザーがこのようにして認証情報を表示し、それを使ってレポジトリへのプッシュおよびプル権限を取得するリスクがあります。安全なシステムを使用していない場合は、このリスクを考慮してください。-p password オプションを省略してインタラクティブにログインし、求められたときにパスワードを入力することを検討してください。