

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

# Lightsail コンテナサービスに対して、Amazon ECR プライベートリポジトリへのアクセスを付与する
<a name="amazon-lightsail-container-service-ecr-private-repo-access"></a>

Amazon Elastic Container Registry (Amazon ECR) は、 AWS Identity and Access Management (IAM) を使用したリソースベースのアクセス許可を持つプライベートリポジトリをサポートする AWS マネージドコンテナイメージレジストリサービスです。Amazon Lightsail コンテナサービスに対して、Amazon ECR プライベートリポジトリ AWS リージョンへのアクセスを許可することができます。その後、プライベートリポジトリからコンテナサービスにイメージをデプロイすることができます。

Lightsail コンソールまたは AWS Command Line Interface () を使用して、Lightsailコンテナサービスと Amazon ECR プライベートリポジトリへのアクセスを管理できますAWS CLI。ただし、プロセスを簡素化するため Lightsail コンソールの使用をお勧めします。

コンテナサービスの詳細については、「[コンテナサービス](amazon-lightsail-container-services.md)」を参照してください。Amazon ECR の詳細については、「[Amazon ECR ユーザーガイド](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)」を参照してください。

**目次**
+ [必要な許可](#ecr-private-repos-permissions)
+ [Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する](#ecr-private-repo-access-lightsail-console)
+ [を使用してプライベートリポジトリへのアクセス AWS CLI を管理する](#ecr-private-repo-access-cli)
  + [Amazon ECR イメージプラー IAM ロールを有効または無効にする](#activate-ecr-puller-role)
  + [Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極める](#identify-ecr-repo-policy-statement)
    + [ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する](#ecr-private-repo-add-policy-no-policy)
    + [ポリシーステートメントを有するプライベートリポジトリにポリシーを追加する](#ecr-private-repo-add-policy-existing-policy)

## 必要なアクセス許可
<a name="ecr-private-repos-permissions"></a>

Lightsail コンテナサービスの Amazon ECR プライベートリポジトリへのアクセスを管理するユーザーは、IAM で以下のいずれかのアクセス許可ポリシーを持つ必要があります。詳細については、[AWS Identity and Access Management ユーザーガイド]の「[IAM ID アクセス許可の追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

**任意の Amazon ECR プライベートリポジトリにアクセス権を付与する**

以下のアクセス許可ポリシーは、任意の Amazon ECR プライベートリポジトリへのアクセスを設定する権限をユーザーに付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageEcrPrivateRepositoriesAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:SetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:DeleteRepositoryPolicy",
                "ecr:GetRepositoryPolicy"
            ],
            "Resource": "arn:aws:ecr:*:111122223333:repository/*"
        }
    ]
}
```

------

ポリシーで、*AwsAccountId* を AWS アカウント ID 番号に置き換えます。

**特定の Amazon ECR プライベートリポジトリにアクセス権を付与する**

以下のアクセス許可ポリシーは、特定の AWS リージョン内の特定の Amazon ECR プライベートリポジトリへのアクセスを設定する権限をユーザーに付与します。

ポリシー内で、次のサンプルテキストを独自のテキストに置き換えます。
+ *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`)。Lightsail コンテナサービスは、アクセスするプライベートリポジトリ AWS リージョン と同じ にある必要があります。
+ *AwsAccountId* — AWS アカウント ID 番号。
+ *RepositoryName* — アクセスを管理するプライベートリポジトリの名前。

以下は、アクセス許可ポリシーに例の値を入力した一例です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageEcrPrivateRepositoriesAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:SetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:DeleteRepositoryPolicy",
                "ecr:GetRepositoryPolicy"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-private-repo"
        }
    ]
}
```

------

## Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する
<a name="ecr-private-repo-access-lightsail-console"></a>

Lightsail コンソールを使用して Lightsail コンテナサービスの Amazon ECR プライベートリポジトリへのアクセスを管理するには、次の手順を実行します。

1. [Lightsail コンソール](https://lightsail.aws.amazon.com/) にサインインします。

1. 左側のナビゲーションペインで **[コンテナ]** を選択します。

1. Amazon ECR プライベートリポジトリへのアクセスを設定したいコンテナサービスの名前を選択します。  
![\[Lightsail コンソールのコンテナサービス\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-service-card.png)

1. **[Images]** (イメージ) タブを選択します。  
![\[Lightsail コンソールのコンテナサービス管理ページにある [Images] (イメージ) タブ\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-service-images-tab.png)

1. [**リポジトリの追加**] を選択すると、コンテナサービスの Amazon ECR プライベートリポジトリへのアクセス権が付与されます。
**注記**  
[**削除**] を選択すると、以前に追加した Amazon ECR プライベートリポジトリからコンテナサービスのアクセスが削除されます。  
![\[[イメージ] タブの「Amazon ECR プライベートリポジトリ」セクション\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-service-ecr-repos-section.png)

1. 表示されるドロップダウンから、アクセスするプライベートリポジトリを選択し、**[Add]** (追加) を選択します。  
![\[Amazon ECR プライベートリポジトリドロップダウンの選択\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-service-ecr-repos-selection.png)

   Lightsail は、コンテナサービスの Amazon ECR イメージプーラー IAM ロールを有効にするために数分かかります。この IAM ロールにはプリンシパル Amazon リソースネーム (ARN)が含まれています。その後 Lightsail は、選択した Amazon ECR プライベートリポジトリのアクセス許可ポリシーに、IAM ロールのプリンシパル ARN を自動的に追加します。　 これにより、コンテナサービスはプライベートリポジトリとそのイメージにアクセスできるようになります。プロセスが完了し、**[Continue]** (続行) を選択できることを示すモーダルが表示されるまで、ブラウザウィンドウは閉じないでください。  
![\[アクセス許可が Amazon ECR プライベートリポジトリに追加されていることを確認するモーダル　　\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-service-ecr-repos-confirmation-modal.png)

1. アクティベーションが完了したら、**[Continue]** (続行) を選択します。

   選択した Amazon ECR プライベートリポジトリが追加されると、このページの [**Amazon ECR プライベートリポジトリ**] セクションに表示されます。このページには、プライベートリポジトリから Lightsail コンテナサービスにイメージをデプロイする方法の手順が含まれています。リポジトリにあるイメージを使用するには、コンテナサービスのデプロイの作成時に、ページに **[Image]** (イメージ) の値として表示される URI 形式を指定します。指定する URI では、*イメージタグ*の例を、デプロイしたいイメージのタグに置き換えます。詳細については、「[コンテナサービスのデプロイの作成と管理](amazon-lightsail-container-services-deployments.md)」を参照してください。  
![\[Amazon ECR プライベートリポジトリを追加した後の次のステップ\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-service-ecr-repos-next-steps.png)

## を使用してプライベートリポジトリへのアクセス AWS CLI を管理する
<a name="ecr-private-repo-access-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用して Amazon ECR プライベートリポジトリへのLightsailコンテナサービスのアクセスを管理するには、次のステップが必要です。

**重要**  
Lightsail コンテナサービスの Amazon ECR プライベートリポジトリへのアクセスを管理する際には、プロセスが簡潔になるため Lightsail コンソールを使用することを推奨します。詳細については、本ガイドの前半の「[Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する](#ecr-private-repo-access-lightsail-console)」を参照してください。

1. **Amazon ECR イメージプーラー IAM ロールをアクティブ化または非アクティブ化する** — AWS CLI `update-container-service`の コマンドLightsailを使用して、Amazon ECR イメージプーラー IAM ロールをアクティブ化または非アクティブ化します。有効にすると、Amazon ECR イメージプーラー IAM ロールにプリンシパル Amazon リソースネーム (ARN) が作成されます。詳細については、このガイドの「[Amazon ECR イメージプーラー IAM ロールを有効または無効にする](#activate-ecr-puller-role)」セクションを参照してください。

1. **Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを判断する** — Amazon ECR イメージプーラー IAM ロールを有効にした後、コンテナサービスでアクセスしたい Amazon ECR プライベートリポジトリに既存のポリシーステートメントがあるかどうかを判断する必要があります。詳細については、このガイドの後半にある「[Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを判断する](#identify-ecr-repo-policy-statement)」を参照してください。

   リポジトリに既存のポリシーステートメントがあるかどうかに応じて、次のいずれかの方法を使用して IAM ロールプリンシパル ARN をリポジトリに追加します。

   1. **ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する** — Amazon ECR の `set-repository-policy` コマンドを使用して AWS CLI 、コンテナサービスの Amazon ECR イメージプーラーロールプリンシパル ARN を既存のポリシーを持つプライベートリポジトリに追加します。詳細については、本ガイドの後半にある「[ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する](#ecr-private-repo-add-policy-no-policy)」を参照してください。

   1. **ポリシーステートメントを持つプライベートリポジトリにポリシーを追加する** — Amazon ECR の `set-repository-policy` コマンドを使用して AWS CLI 、コンテナサービスの Amazon ECR イメージプーラーロールを、既存のポリシーを持たないプライベートリポジトリに追加します。詳細については、本ガイドの後半にある「[ポリシーステートメントを有するプライベートリポジトリにポリシーを追加する](#ecr-private-repo-add-policy-existing-policy)」を参照してください。

### Amazon ECR イメージプラー IAM ロールを有効または無効にする
<a name="activate-ecr-puller-role"></a>

以下の手順を完了し、Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロールを有効または無効にします。の `update-container-service` コマンドを使用して、Amazon ECR イメージプーラー IAM ロールを AWS CLI アクティブ化または非アクティブ化できますLightsail。詳細については、「AWS CLI コマンドリファレンス」の「[update-container-service](https://docs.aws.amazon.com/cli/latest/reference/lightsail/update-container-service.html)」を参照してください。

**注記**  
この手順を続行するLightsail前に、 をインストール AWS CLI して 用に設定する必要があります。詳細については、「[ Lightsail で使用するために AWS CLI を設定する](lightsail-how-to-set-up-and-configure-aws-cli.md)」を参照してください。

1. ターミナルまたはコマンドプロントウィンドウを開きます。

1. 次のコマンドを入力して、コンテナサービスを更新し、Amazon ECR イメージプーラー IAM ロールを有効または無効にします。

   ```
   aws lightsail update-container-service --service-name ContainerServiceName --private-registry-access ecrImagePullerRole={isActive=RoleActivationState} --region AwsRegionCode
   ```

   コマンドで、次のサンプルテキストを独自のテキストに置き換えます。
   + *ContainerServiceName* — Amazon ECR イメージプーラー IAM ロールを有効または無効にするコンテナサービスの名前です。
   + *RoleActivationState* — Amazon ECR イメージプーラー IAM ロールのアクティブ化状態です。ロールを有効にするには `true` を指定し、無効にするには `false` を指定します。
   + *AwsRegionCode* — コンテナサービスの AWS リージョン コード (例えば、`us-east-1`)。

   例:
   + Amazon ECR イメージプーラー IAM ロールを有効にするには:

     ```
     aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=true} --region us-east-1
     ```
   + Amazon ECR イメージプーラー IAM ロールを無効にするには:

     ```
     aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=false} --region us-east-1
     ```

1. オプション:
   + **Amazon ECR イメージプーラーロールを有効にした場合** — 前のレスポンスを取得後は、少なくとも 30 秒待機します。その後、次のステップに進んで、コンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を取得します。
   + **Amazon ECR イメージプーラーロールを無効にした場合** — 以前に Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を Amazon ECR プライベートリポジトリのアクセス許可ポリシーに追加している場合、リポジトリからこのアクセス許可ポリシーを削除する必要があります。詳細については、「[Amazon ECR ユーザーガイド](https://docs.aws.amazon.com/AmazonECR/latest/userguide/delete-repository-policy.html)」の「プライベートリポジトリポリシーステートメントを削除する」を参照してください。

1. 次のコマンドを入力して、コンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を取得します。

   ```
   aws lightsail get-container-services --service-name ContainerServiceName --region AwsRegionCode
   ```

   コマンドで、次のサンプルテキストを独自のテキストに置き換えます。
   + *ContainerServiceName* — Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN を取得するためのコンテナサービスの名前です。
   + *AwsRegionCode* — コンテナサービスの AWS リージョン コード (例えば、`us-east-1`)。

   例:

   ```
   aws lightsail get-container-services --service-name my-container-service --region us-east-1
   ```

   レスポンスに ECR イメージプーラー IAM ロールのプリンシパル ARN がないか探します。ロールがリストにある場合は、コピーして書き留めます。本ガイドの次のセクションで必要になります。次に、コンテナサービスでアクセスしたい Amazon ECR プライベートリポジトリに、既存のポリシーステートメントがあるかどうかを見極める必要があります。本ガイドの「[Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極める](#identify-ecr-repo-policy-statement)」のセクションに進んでください。

### Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極める
<a name="identify-ecr-repo-policy-statement"></a>

以下の手順で、Amazon ECR プライベートリポジトリにポリシーステートメントがあるかどうかを見極めます。Amazon ECR には コマンドを使用できます AWS CLI `get-repository-policy`。詳細については、「AWS CLI コマンドリファレンス」の「[update-container-service](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-repository-policy.html)」を参照してください。

**注記**  
この手順を続行する前に、 をインストール AWS CLI し、Amazon ECR 用に設定する必要があります。詳細については、「*Amazon ECR ユーザーガイド*」の「[Amazon ECR でのセットアップ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html)」を参照してください。

1. ターミナルまたはコマンドプロントウィンドウを開きます。

1. 以下のコマンドを入力して、特定のプライベートリポジトリのポリシーステートメントを取得します。

   ```
   aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode
   ```

   コマンドで、次のサンプルテキストを独自のテキストに置き換えます。
   + *RepositoryName* — Lightsail コンテナサービスへのアクセスを設定するプライベートリポジトリの名前です。
   + *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`) です。　

   例:

   ```
   aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
   ```

   以下のレスポンスのいずれかが表示されます。
   + **RepositoryPolicyNotFoundException** — プライベートリポジトリにポリシーステートメントがありません。リポジトリにポリシーステートメントがない場合は、本ガイドの後半にある「[ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する](#ecr-private-repo-add-policy-no-policy)」のセクションにある手順に従います。  
![\[ポリシーステートメントを持たないプライベートリポジトリの get-repository-policy コマンドへのレスポンス\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-no-policy-statement.png)
   + **リポジトリポリシーが見つかった場合** - プライベートリポジトリにはポリシーステートメントがあり、その内容がリクエストに対するレスポンスに表示されます。リポジトリにポリシーステートメントがある場合は、既存のポリシーをコピーして、本ガイドの後半にある「[ポリシーステートメントを有するプライベートリポジトリにポリシーを追加する](#ecr-private-repo-add-policy-existing-policy)」のセクションにある手順に従います。  
![\[ポリシーステートメントを有するプライベートリポジトリの get-repository-policy コマンドへのレスポンス\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-existing-policy-statement.png)

### ポリシーステートメントを持たないプライベートリポジトリにポリシーを追加する
<a name="ecr-private-repo-add-policy-no-policy"></a>

以下の手順に従って、ポリシーステートメントを持たない Amazon ECR プライベートリポジトリにポリシーを追加します。追加するポリシーには、Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロール プリンシパル ARN を含める必要があります。これにより、コンテナサービスにアクセス権が付与され、プライベートリポジトリからイメージをデプロイできるようになります。

**重要**  
Lightsail コンソールを使用してアクセスを設定すると、Lightsail は Amazon ECR イメージプーラーロールを Amazon ECR プライベートリポジトリに自動的に追加します。この場合、このセクションの手順を使用して、プライベートリポジトリに Amazon ECR イメージプーラーロールを手動で追加する必要はありません。詳細については、本ガイドの前半の「[Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する](#ecr-private-repo-access-lightsail-console)」を参照してください。

 AWS CLIを使用して、プライベートリポジトリにポリシーを追加できます。これを行うには、ポリシーを含む JSON ファイルを作成し、Amazon ECR の `set-repository-policy` コマンドでそのファイルを参照します。詳細については、「AWS CLI コマンドリファレンス」の「[set-repository-policy](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html)」を参照してください。

**注記**  
この手順を続行する前に、 をインストール AWS CLI し、Amazon ECR 用に設定する必要があります。詳細については、「*Amazon ECR ユーザーガイド*」の「[Amazon ECR でのセットアップ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html)」を参照してください。

1. テキストエディタを開き、次のポリシーステートメントを新しいテキストファイルに貼り付けます。

------
#### [ JSON ]

****  

   ```
   { 
     "Version":"2012-10-17",		 	 	 
     "Statement": [
     {
         "Sid": "AllowLightsailPull-ecr-private-repo-demo",
         "Effect": "Allow",
         "Principal": {
           "AWS": "IamRolePrincipalArn"
         },
         "Action": [
           "ecr:BatchGetImage",
           "ecr:GetDownloadUrlForLayer"
         ]
       }
     ]
   }
   ```

------

   テキストファイル内では、*IamRolePrincipalArn* を、本ガイドの前半で取得したコンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN に置き換えてください。

1. ファイルを `ecr-policy.json` という名前で、コンピュータ上のアクセス可能な場所 (例: Windows では `C:\Temp\ecr-policy.json`、macOS や Linux では `/tmp/ecr-policy.json`) に保存します。

1. 作成された `ecr-policy.json` ファイルのファイルパスの場所を書き留めます。この手順の後半に出てくるコマンドで、これを指定します。

1. ターミナルまたはコマンドプロントウィンドウを開きます。

1. 以下のコマンドを入力して、コンテナサービスを使ってアクセスしたいプライベートリポジトリのポリシーステートメントを設定します。

   ```
   aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode
   ```

   コマンドで、次のサンプルテキストを独自のテキストに置き換えます。
   + *RepositoryName* — ポリシーを追加するプライベートリポジトリの名前です。
   + *path/to/* — 本ガイドの前半部分で作成した、コンピュータ上の `ecr-policy.json` ファイルへのパスです。
   + *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`) です。　

   例:
   + Windows の場合:

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
     ```
   + macOS または Linux の場合:

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1
     ```

   これで、コンテナサービスはプライベートリポジトリとそのイメージにアクセスできるようになります。リポジトリにあるイメージを使用するには、コンテナサービスのデプロイの**イメージ**値として以下の URI を指定します。URI 内の*タグ*例を、デプロイしたいイメージのタグに置き換えます。詳細については、「[コンテナサービスのデプロイの作成と管理](amazon-lightsail-container-services-deployments.md)」を参照してください。

   ```
   AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag
   ```

   URI 内の次のサンプルテキストを自身が使用するテキストに置き換えます。
   + *AwsAccountId* — AWS アカウント ID ナンバー。
   + *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`) です。　
   + *RepositoryName* — コンテナイメージをデプロイするプライベートリポジトリの名前です。
   + *ImageTag* — コンテナサービスにデプロイするプライベートリポジトリのコンテナイメージのタグです。

   例:

   ```
   111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage
   ```

### ポリシーステートメントを有するプライベートリポジトリにポリシーを追加する
<a name="ecr-private-repo-add-policy-existing-policy"></a>

以下の手順に従って、ポリシーステートメントを有する Amazon ECR プライベートリポジトリにポリシーを追加します。追加するポリシーには、既存のポリシーと、Lightsail コンテナサービスの Amazon ECR イメージプーラー IAM ロール プリンシパル ARN が含まれる新しいポリシーを含める必要があります。これにより、プライベートリポジトリ上にある既存のアクセス許可が維持されながら、同時にプライベートリポジトリからイメージをデプロイするためのコンテナサービスへのアクセス権も付与されます。

**重要**  
Lightsail コンソールを使用してアクセスを設定すると、Lightsail は Amazon ECR イメージプーラーロールを Amazon ECR プライベートリポジトリに自動的に追加します。この場合、このセクションの手順を使用して、プライベートリポジトリに Amazon ECR イメージプーラーロールを手動で追加する必要はありません。詳細については、本ガイドの前半の「[Lightsail コンソールを使用してプライベートリポジトリへのアクセスを管理する](#ecr-private-repo-access-lightsail-console)」を参照してください。

 AWS CLIを使用して、プライベートリポジトリにポリシーを追加できます。これを行うには、既存のポリシーと新しいポリシーが含まれる JSON ファイルを作成します。その後、そのファイルを Amazon ECR の `set-repository-policy` コマンドで参照します。詳細については、「AWS CLI コマンドリファレンス」の「[set-repository-policy](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html)」を参照してください。

**注記**  
この手順を続行する前に、 をインストール AWS CLI し、Amazon ECR 用に設定する必要があります。詳細については、「*Amazon ECR ユーザーガイド*」の「[Amazon ECR でのセットアップ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html)」を参照してください。

1. ターミナルまたはコマンドプロントウィンドウを開きます。

1. 以下のコマンドを入力して、特定のプライベートリポジトリのポリシーステートメントを取得します。

   ```
   aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode
   ```

   コマンドで、次のサンプルテキストを独自のテキストに置き換えます。
   + *RepositoryName* — Lightsail コンテナサービスへのアクセスを設定するプライベートリポジトリの名前です。
   + *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`) です。　

   例:

   ```
   aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
   ```

1. レスポンスに、既存のポリシーをコピーし、次のステップに進みます。

   次の例でハイライトされている部分のように、二重引用符で囲まれた `policyText` の内容のみをコピーする必要があります。  
![\[ポリシーステートメントを持たないプライベートリポジトリの get-repository-policy コマンドへのレスポンス\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-existing-policy-copy-statement.png)

1. テキストエディタを開き、前の手順でコピーしたプライベートリポジトリの既存のポリシーを貼り付けます。

   結果は次の例のようになります。  
![\[ポリシーステートメント JSON ファイルの例\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-existing-policy-statement-json.png)

1. 貼り付けたテキスト内の `\n` を改行に置き換え、残りの `\` は削除します。

   結果は次の例のようになります。  
![\[編集されたポリシーステートメント JSON ファイルの例\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-existing-policy-statement-json-edited.png)

1. テキストファイルの末尾に、次のポリシーステートメントを貼り付けます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowLightsailPull-ecr-private-repo-demo",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "IamRolePrincipalArn"
               },
               "Action": [
                   "ecr:BatchGetImage",
                   "ecr:GetDownloadUrlForLayer"
               ]
           }
       ]
   }
   ```

------

1. テキストファイル内では、*IamRolePrincipalArn* を、本ガイドの前半で取得したコンテナサービスの Amazon ECR イメージプーラー IAM ロールのプリンシパル ARN に置き換えてください。

   結果は次の例のようになります。  
![\[完成したポリシーステートメント JSON ファイルの例\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-existing-policy-statement-json-completed.png)

1. ファイルを `ecr-policy.json` という名前で、コンピュータ上のアクセス可能な場所 (例: Windows では `C:\Temp\ecr-policy.json`、macOS や Linux では `/tmp/ecr-policy.json`) に保存します。

1. `ecr-policy.json` ファイルのファイルパスの場所を書き留めます。この手順の後半に出てくるコマンドで、これを指定します。

1. ターミナルまたはコマンドプロントウィンドウを開きます。

1. 以下のコマンドを入力して、コンテナサービスを使ってアクセスしたいプライベートリポジトリのポリシーステートメントを設定します。

   ```
   aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode
   ```

   コマンドで、次のサンプルテキストを独自のテキストに置き換えます。
   + *RepositoryName* — ポリシーを追加するプライベートリポジトリの名前です。
   + *path/to/* — 本ガイドの前半部分で作成した、コンピュータ上の `ecr-policy.json` ファイルへのパスです。
   + *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`) です。　

   例:
   + Windows の場合:

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
     ```
   + macOS または Linux の場合:

     ```
     aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1
     ```

   次の例に示すようなレスポンスが表示されます。  
![\[set-repository-policy コマンドに対するレスポンス\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/ecr-set-policy-statement-response.png)

   `get-repository-policy` コマンドをもう一度実行すると、プライベートリポジトリに新しく追加されたポリシーステートメントが表示されます。これで、コンテナサービスはプライベートリポジトリとそのイメージにアクセスできるようになります。リポジトリにあるイメージを使用するには、コンテナサービスのデプロイの**イメージ**値として以下の URI を指定します。URI 内の*タグ*例を、デプロイしたいイメージのタグに置き換えます。詳細については、「[コンテナサービスのデプロイの作成と管理](amazon-lightsail-container-services-deployments.md)」を参照してください。

   ```
   AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag
   ```

   URI 内の次のサンプルテキストを自身が使用するテキストに置き換えます。
   + *AwsAccountId* — AWS アカウント ID ナンバー。
   + *AwsRegion* — プライベートリポジトリの AWS リージョン コード (例: `us-east-1`) です。　
   + *RepositoryName* — コンテナイメージをデプロイするプライベートリポジトリの名前です。
   + *ImageTag* — コンテナサービスにデプロイするプライベートリポジトリのコンテナイメージのタグです。

   例:

   ```
   111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage
   ```