

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

# Amazon ECR でのプライベートレジストリ認証
<a name="registry_auth"></a>

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

Docker CLI は、ネイティブの IAM 認証方法をサポートしていません。Amazon ECR が、Docker のプッシュ要求とプル要求を認証および認可できるようにするには、追加の手順を実行する必要があります。

以下のセクションで説明するレジストリ認証方法を使用できます。

## Amazon ECR 認証情報ヘルパーを使用する
<a name="registry-auth-credential-helper-reg"></a>

Amazon ECR には Docker 認証情報ヘルパーが用意されているので、Amazon ECR に対してイメージをプッシュおよびプルするときに、Docker 認証情報をより簡単に保存および使用できます。インストールおよび設定手順については、「[Amazon ECR Docker 認証情報ヘルパー](https://github.com/awslabs/amazon-ecr-credential-helper)」を参照してください。

**注記**  
Amazon ECR Docker 認証情報ヘルパーは、現在、多要素認証 (MFA) をサポートしていません。

## 認可トークンを使用する
<a name="registry-auth-token"></a>

認可トークンの許可スコープは、認証トークンの取得に使用される IAM プリンシパルの許可スコープと一致します。認証トークンは、IAM プリンシパルからアクセス可能で 12 時間有効な Amazon ECR レジストリにアクセスするために使用されます。認可トークンを取得するには、[GetAuthorizationToken](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetAuthorizationToken.html) API オペレーションを使用して、ユーザー名 `AWS` とエンコードされたパスワードを含む base64 エンコード認可トークンを取得します。コマンドは AWS CLI ` get-login-password`、認証トークンを取得してデコードすることでこれを簡素化し、認証する**docker login**コマンドにパイプできます。

**get-login を使用して Amazon ECR プライベートレジストリに対して Docker を認証するには**
+ 

  get-login-password を使用して Amazon ECR レジストリに対して Docker を認証するには、**aws ecr get-login-password** コマンドを実行します。認証トークンを **docker login** コマンドに渡すとき、ユーザー名に `AWS` 値を使用し、認証先の Amazon ECR レジストリの URI を指定します。複数のレジストリに対して認証する場合は、レジストリごとにコマンドを繰り返す必要があります。
**重要**  
エラーが発生した場合は、 AWS CLIの最新バージョンをインストールまたはアップグレードします。詳細については、*AWS Command Line Interface ユーザーガイド*の「[AWS Command Line Interfaceのインストール](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)」を参照してください。
  + [get-login-password](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html) (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](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECRLoginCommand.html) (AWS Tools for Windows PowerShell)

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

## HTTP API 認証を使用する
<a name="registry_auth_http"></a>

Amazon ECR は [Docker Registry HTTP API](https://docs.docker.com/registry/spec/api/) をサポートします。ただし、Amazon ECR はプライベートレジストリであるため、すべての HTTP リクエストで認可トークンを提供する必要があります。の `-H`オプションを使用して HTTP 認可ヘッダーを追加**curl**し、 **get-authorization-token** AWS CLI コマンドによって提供される認可トークンを渡すことができます。

**Amazon ECR HTTP API を使用して認証するには**

1.  AWS CLI を使用して認可トークンを取得し、そのトークンを環境変数に設定します。

   ```
   TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
   ```

1. API に対して認証するには、`$TOKEN` 変数を **curl** の ` -H` オプションに渡します。たとえば、次のコマンドでは、Amazon ECR レポジトリでイメージタグを一覧表示します。詳細については、[Docker レジストリ HTTP API](https://docs.docker.com/registry/spec/api/) リファレンスドキュメントを参照してください。

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

   出力は次のとおりです。

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