Amazon ECR レジストリ - Amazon ECR

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

Amazon ECR レジストリ

Amazon ECR レジストリによって可用性の高いスケーラブルなアーキテクチャでコンテナイメージがホストされるため、コンテナをアプリケーションに確実にデプロイできます。レジストリを使用して、Docker および Open Container Initiative (OCI) イメージで構成されるイメージリポジトリを管理できます。各 AWS アカウントは単一で提供されます(デフォルト) Amazon ECR レジストリ。

レジストリの概念

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

  • デフォルトでは、アカウントにはデフォルトリポジトリ内のリポジトリへの読み取りおよび書き込みアクセス権があります。しかし、 IAM ユーザーは、 Amazon ECR リポジトリからイメージをプッシュまたはプルするためのAPI。 Amazon ECR には、さまざまなレベルでユーザー アクセスを制御する複数の管理ポリシーが用意されています。詳細については、「」を参照してください。Amazon Elastic Container Registry アイデンティティベースのポリシーの例.

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

  • リポジトリは、IAM のユーザーアクセスポリシーとリポジトリポリシーによって制御できます。リポジトリポリシーの詳細については、「」を参照してください。リポジトリポリシー.

レジストリ認証

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

Docker CLI では、ネイティブ IAM 認証方法をサポートしていません。追加の手順を踏んで、 Amazon ECR Dockerのプッシュおよびプルリクエストを認証し、承認することができます。

以下のレジストリ認証方法を使用できます。

の使用 Amazon ECR 資格情報ヘルパー

Amazon ECR には Docker 認証情報ヘルパーが用意されており、 に対してイメージをプッシュおよびプルするときに、Docker 認証情報をより簡単に保存および使用できます。Amazon ECR. インストールおよび構成手順については、以下を参照してください。 Amazon ECR Docker資格情報ヘルパー.

認証トークンの使用

承認トークンのアクセス許可スコープは、認証トークンの取得に使用される IAM プリンシパルのアクセス許可スコープと一致します。認証トークンは、 Amazon ECR レジストリに登録し IAM プリンシパルは にアクセスし、12 時間有効です。認証トークンを取得するには、 GetAuthorizationToken (認証トークンを取得) ユーザー名を含むbase64でエンコードされた認証トークンを取得するAPI操作 AWS およびエンコードされたパスワード。は、 AWS CLI get-login-password コマンドは、認証トークンを取得およびデコードし、 docker login 認証するコマンド。

get-login-password を使用して Amazon ECR レジストリに対して Docker を認証するには、aws ecr get-login-password コマンドを実行します。認証トークンを docker login コマンドに渡すときに、ユーザー名の AWS 値と認証先の Amazon ECR レジストリの URI を指定します。複数のレジストリに対して認証する場合は、レジストリごとにコマンドを繰り返す必要があります。

重要

エラーが発生した場合は、AWS CLI の最新バージョンをインストールまたはアップグレードします。詳細については、AWS Command Line Interface ユーザーガイド の「AWS コマンドラインインターフェイスのインストール」を参照してください。

  • get-login-password (AWS CLI)

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  • Get-ECRLoginCommand (AWS Tools for Windows PowerShell)

    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

AWS CLI バージョン 1.17.10 より前のバージョンを使用している場合は、get-login コマンドを使用して Amazon ECR レジストリに対して認証できます。AWS CLI のバージョンは、aws --version コマンドで確認できます。

  1. aws ecr get-login コマンドを実行します。次の例は、リクエストを実行するアカウントに関連付けられたデフォルトレジストリ用です。他のアカウントのレジストリにアクセスするには、--registry-ids aws_account_id オプションを使用します。詳細については、AWS CLI Command Reference の「get-login」を参照してください。

    aws ecr get-login --region region --no-include-email

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

    docker login -u AWS -p password https://aws_account_id.dkr.ecr.region.amazonaws.com
  2. Docker CLI をレジストリに対して認証するには、docker login コマンドをコピーしてターミナルに貼り付けます。このコマンドは、指定されたレジストリに対して 12 時間有効な認証トークンを提供します。

    注記

    Windows PowerShell を使用している場合、このような長い文字列をコピーして貼り付けることはできません。代わりに次のコマンドを使用します。

    Invoke-Expression -Command (Get-ECRLoginCommand -Region region).Command
    重要

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

HTTP API認証の使用

Amazon ECR は、 DockerレジストリHTTP API. ただし、Amazon ECR はプライベートレジストリであるため、すべての HTTP リクエストで認可トークンを提供する必要があります。HTTP 認証ヘッダーは、 -H オプション curl から提供された認証トークンを渡す get-authorization-token AWS CLI コマンド。

で認証するには Amazon ECR HTTP API

  1. 認証トークンを AWS CLI 環境変数に設定します。

    TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
  2. APIに認証するには、 $TOKEN 変数から -H オプション curl。 たとえば、次のコマンドでは、 Amazon ECR リポジトリ。詳細については、 DockerレジストリHTTP API 参照文書。

    curl -i -H "Authorization: Basic $TOKEN" https://aws_account_id.dkr.ecr.region.amazonaws.com/v2/amazonlinux/tags/list

    Output

    HTTP/1.1 200 OK
    Content-Type: text/plain; charset=utf-8
    Date: Thu, 04 Jan 2018 16:06:59 GMT
    Docker-Distribution-Api-Version: registry/2.0
    Content-Length: 50
    Connection: keep-alive
    
    {"name":"amazonlinux","tags":["2017.09","latest"]}