

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

# Lightsail コンテナサービスの Docker イメージの構築とテスト
<a name="amazon-lightsail-creating-container-images"></a>

Docker を使用すると、コンテナに基づく分散アプリケーションを構築、実行、テスト、デプロイできます。Amazon Lightsail コンテナサービスは、デプロイで Docker コンテナイメージを使用してコンテナを起動します。

このガイドでは、Dockerfile を使用してローカルマシン上にコンテナイメージを作成する方法を説明します。イメージが作成されたら、そのイメージを Lightsail コンテナサービスにプッシュしてデプロイできます。

このガイドの手順を完了するには、Docker の概要と機能についての基本的な理解が必要です。Docker の詳細については、「[Docker とは](https://aws.amazon.com/docker/)」、「[Docker の概要](https://docs.docker.com/get-started/overview/)」を参照してください。

**目次**
+ [ステップ 1: 前提条件を満たす](#create-container-image-prerequisite)
+ [ステップ 2: Dockerfile を作成してコンテナイメージを構築する](#create-container-image-create-dockerfile)
+ [ステップ 3: 新しいコンテナイメージを実行する](#create-container-image-run-container)
+ [（オプション）ステップ 4: ローカルマシンで実行されているコンテナをクリーンアップする](#create-container-image-cleanup)
+ [コンテナイメージの作成後の次のステップ](#create-container-image-next-steps)

## ステップ 1: 前提条件を満たす
<a name="create-container-image-prerequisite"></a>

作業を開始する前に、コンテナの作成に必要なソフトウェアをインストールし、Lightsail コンテナサービスにプッシュする必要があります。たとえば、Docker をインストールして使用して、Lightsail コンテナサービスで使用できるコンテナイメージを作成してビルドする必要があります。詳細については、「[Amazon Lightsail コンテナサービス用のコンテナイメージを管理するソフトウェアのインストール](amazon-lightsail-install-software.md)」を参照してください。

## ステップ 2: Dockerfile を作成してコンテナイメージを構築する
<a name="create-container-image-create-dockerfile"></a>

以下のステップを実行して Dockerfile を作成し、`mystaticwebsite` Docker コンテナイメージを構築します。コンテナイメージは、Ubuntu の Apache ウェブサーバーでホストされている単純な静的ウェブサイト用です。

1. `mystaticwebsite` の作成フォルダを作成し、Dockerfile を保存するローカルマシン上に配置します。

1. 先ほど作成したフォルダに Dockerfile を作成します。

   Dockerfile は、`.TXT` のようなファイル拡張子を使用しません。完全なファイル名は `Dockerfile` です。

1. コンテナイメージの設定方法に応じて次のコードブロックのいずれかをコピーし、Dockerfile に貼り付けます。
   + **Hello World メッセージを含む単純な静的なウェブサイトコンテナイメージを作成する場合**、次のコードブロックをコピーして Dockerfile に貼り付けます。このコードサンプルは Ubuntu 18.04 イメージを使用します。`RUN` の手順により、パッケージキャッシュが更新され、Apache がインストールされて設定されてから、Hello World のメッセージがウェブサーバーのドキュメントルートに出力されます。`EXPOSE` の命令はコンテナ上のポート 80 を公開し、`CMD` の命令はウェブサーバーを起動します。

     ```
     FROM ubuntu:18.04
     
     # Install dependencies
     RUN apt-get update && \
      apt-get -y install apache2
     
     # Write hello world message
     RUN echo 'Hello World!' > /var/www/html/index.html
     
     # Open port 80
     EXPOSE 80
     
     # Start Apache service
     CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
     ```
   + **静的ウェブサイトコンテナイメージに独自の HTML ファイルセットを使用する場合**には、`html` フォルダを Dockerfile の保存先と同じフォルダに配置します。次に、HTML ファイルをそのフォルダに入れます。

     HTML ファイルを `html` フォルダに保存したら、次のコードブロックをコピーして Dockerfile に貼り付けます。このコードサンプルは Ubuntu 18.04 イメージを使用します。`RUN` の命令はパッケージキャッシュを更新し、Apache をインストールして設定します。`COPY` の命令は html フォルダの内容をウェブサーバーのドキュメントルートにコピーします。`EXPOSE` の命令はコンテナ上のポート 80 を公開し、`CMD`の命令はウェブサーバーを起動します。

     ```
     FROM ubuntu:18.04
     
     # Install dependencies
     RUN apt-get update && \
      apt-get -y install apache2
     
     # Copy html directory files
     COPY html /var/www/html/
     
     # Open port 80
     EXPOSE 80
     
     CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
     ```

1. コマンドプロンプトまたはターミナルウィンドウを開き、 Dockerfile を格納しているフォルダにディレクトリを変更します。

1. 次のコマンドを入力して、フォルダ内の Dockerfile を使用してコンテナイメージを構築します。このコマンドは、 `mystaticwebsite` という新しい Docker コンテナイメージをビルドします。

   ```
   docker build -t mystaticwebsite .
   ```

   イメージが正常に構築されたことを確認するメッセージが表示されます。

1. 次のコマンドを入力して、ローカルマシン上のコンテナイメージを表示します。

   ```
   docker images --filter reference=mystaticwebsite
   ```

   次の例に示すような結果が表示され、作成された新しいコンテナイメージが示されます。  
![\[ドッカー画像コマンドの結果\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/docker-images-command-result.png)

   新しく構築したコンテナイメージは、ローカルマシン上で新しいコンテナを実行させることによってテストすることができます。次の手順は、本ガイドの「[ステップ 3: 新しいコンテナイメージを実行する](#create-container-image-run-container)」セクションを参照してください。

## ステップ 3: 新しいコンテナイメージを実行する
<a name="create-container-image-run-container"></a>

作成した新しいコンテナイメージを実行するには、以下の手順に従います。

1. コマンドプロンプトまたはターミナルウィンドウに次のコマンドを入力して、本ガイドの「[ステップ 2: Dockerfile を作成してコンテナイメージを構築する](#create-container-image-create-dockerfile)」のセクションで構築したコンテナーイメージを実行します。`-p 8080:80` オプションは、コンテナ上の公開されたポート 80 をホストシステム上のポート 8080 にマッピングします。`-d` オプションは、コンテナをデタッチモードで実行するように指定します。

   ```
   docker container run -d -p 8080:80 --name mystaticwebsite mystaticwebsite:latest
   ```

1. 次のコマンドを入力して、実行中のコンテナを表示します。

   ```
   docker container ls -a
   ```

   次の例に示すような結果が表示され、新しい実行中のコンテナが示されます。  
![\[ドッカーコンテナコマンドの結果\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/docker-container-command-result.png)

1. コンテナが起動して実行されていることを確認するには、新しいブラウザウィンドウで `http://localhost:8080` を開きます。次の例に示すようなメッセージが表示されます。これにより、コンテナがローカルマシン上で稼働していることが確認されます。  
![\[Docker コンテナで実行されている静的ウェブサイト\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/container-mystaticsite-hello-world.png)

   新しく構築されたコンテナイメージを Lightsail アカウントにプッシュする準備が整いました。これにより、Lightsail コンテナサービスにデプロイできるようになります。詳細については、[Amazon Lightsail コンテナサービスのコンテナイメージのプッシュと管理](amazon-lightsail-pushing-container-images.md) を参照してください。

## （オプション）ステップ 4: ローカルマシンで実行されているコンテナをクリーンアップする
<a name="create-container-image-cleanup"></a>

Lightsail コンテナサービスにプッシュできるコンテナイメージを作成したので、このガイドの手順に従って、ローカルマシンで実行されているコンテナをクリーンアップします。

ローカルマシンで実行されているコンテナをクリーンアップするには、以下の手順にを実行します。

1. ローカルマシンで実行されているコンテナを表示するには、次のコマンドを実行します。

   ```
   docker container ls -a
   ```

   次のような結果が表示され、ローカルマシンで実行されているコンテナの名前が一覧表示されます。  
![\[ドッカーコンテナコマンドの結果\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/docker-container-command-result.png)

1. 次のコマンドを実行して、このガイドの前述の部分で作成した実行中のコンテナを削除します。これにより、コンテナは強制的に停止され、完全に削除されます。

   ```
   docker container rm <ContainerName> --force
   ```

   コマンドで、<ContainerName> (コンテナ名) を、削除する設定セットの名前で置き換えます。

   例:

   ```
   docker container rm mystaticwebsite --force
   ```

   このガイドを元に作成されたコンテナは削除されます。

## コンテナイメージの作成後の次のステップ
<a name="create-container-image-next-steps"></a>

コンテナイメージを作成した後、デプロイの準備が整ったらそれらを Lightsail コンテナサービスにプッシュします。詳細については、「[Lightsail コンテナサービスイメージを管理する](amazon-lightsail-pushing-container-images.md)」を参照してください。

**Topics**
+ [ステップ 1: 前提条件を満たす](#create-container-image-prerequisite)
+ [ステップ 2: Dockerfile を作成してコンテナイメージを構築する](#create-container-image-create-dockerfile)
+ [ステップ 3: 新しいコンテナイメージを実行する](#create-container-image-run-container)
+ [（オプション）ステップ 4: ローカルマシンで実行されているコンテナをクリーンアップする](#create-container-image-cleanup)
+ [コンテナイメージの作成後の次のステップ](#create-container-image-next-steps)
+ [コンテナイメージの管理](amazon-lightsail-pushing-container-images.md)
+ [コンテナーサービスプラグインをインストールする](amazon-lightsail-install-software.md)
+ [ECR プライベートリポジトリへのアクセス](amazon-lightsail-container-service-ecr-private-repo-access.md)

# コンテナサービスの Lightsail コンテナイメージをプッシュ、表示、削除する
<a name="amazon-lightsail-pushing-container-images"></a>

Amazon Lightsail コンテナサービスでデプロイを作成する場合は、コンテナエントリごとに出典コンテナイメージを指定する必要があります。Amazon ECR Public Gallery などの公開レジストリのイメージを使用することができます。または、ローカルマシンで作成したイメージを使用できます。このガイドでは、コンテナイメージをローカルマシンから Lightsail コンテナサービスにプッシュする方法を説明しています。コンテナイメージの作成に関する詳細については、「[コンテナサービスイメージの作成](amazon-lightsail-creating-container-images.md)」を参照してください。

**目次**
+ [前提条件](#push-container-images-prerequisites)
+ [コンテナイメージをローカルマシンからコンテナサービスにプッシュする](#push-container-images)
+ [コンテナサービスに保存されているコンテナイメージを表示する](#view-pushed-container-images)
+ [コンテナサービスに保存されているコンテナイメージを削除する](#delete-stored-container-images)

## 前提条件
<a name="push-container-images-prerequisites"></a>

コンテナサービスへのコンテナイメージのプッシュを開始する前に、次の必要条件を完了します。
+ Lightsail アカウントにコンテナサービスを作成する。詳細については、[Amazon Lightsail コンテナサービスの作成](amazon-lightsail-creating-container-services.md) を参照してください。
+ ローカルマシンにソフトウェアをインストールし、独自のコンテナイメージを作成し、Lightsail コンテナサービスにプッシュします。詳細については、「[Amazon Lightsail コンテナサービス用のコンテナイメージを管理するソフトウェアのインストール](amazon-lightsail-install-software.md)」を参照してください。
+ Lightsail コンテナサービスにプッシュしたい独自のコンテナイメージを、ローカルマシンに作成する。詳細については、「[Amazon Lightsailコンテナサービスでのコンテナイメージの作成](amazon-lightsail-creating-container-images.md)」を参照してください。

## コンテナイメージをローカルマシンからコンテナサービスにプッシュする。
<a name="push-container-images"></a>

コンテナイメージをコンテナサービスにプッシュするには、以下の手順を実行します。

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

1. コマンドプロンプトまたはターミナルウィンドウで、次のコマンドを入力して、現在ローカルマシン上にある Docker イメージ を表示します。

   ```
   docker images
   ```

1. その結果、コンテナサービスにプッシュしたいコンテナイメージ名 (リポジトリ名) とそのタグが見つけられます。これは次のステップで必要になるため、書きとめておきます。  
![\[ローカルマシン上の Docker コンテナイメージ\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/amazon-lightsail-container-service-docker-images.png)

1. 次のコマンドを入力して、ローカルマシン上のコンテナイメージをコンテナサービスにプッシュします。

   ```
   aws lightsail push-container-image --region <Region> --service-name <ContainerServiceName> --label <ContainerImageLabel> --image <LocalContainerImageName>:<ImageTag>
   ```

   コマンドを、以下のように置き換えます。
   + *<Region>* をコンテナサービスが作成された AWS リージョンに置き換えます。
   + *<ContainerServiceName>* をコンテナサービス名に置き換えます。
   + *<ContainerImageLabel>* を、コンテナサービスに保存される際にコンテナイメージに与えたいラベルに置き換えます。登録しているコンテナイメージの異なるバージョンを追跡する際に使用できる記述的ラベルを指定します。

     このラベルは、コンテナサービスによって生成されたコンテナイメージ名の一部になります。例えば、コンテナサービス名が `container-service-1` の場合には、コンテナイメージラベルは `mystaticsite` になり、これがユーザーがプッシュするコンテナイメージの最初のバージョンになります。そしてコンテナサービスによって生成されたイメージ名は `:container-service-1.mystaticsite.1` になります。
   + *<LocalContainerImageName>* を、コンテナサービスにプッシュしたいコンテナイメージ名に置き換えます。この手順の前のステップで、コンテナイメージ名は取得しています。
   + *<Image Tag>* を、コンテナサービスにプッシュしたいコンテナイメージのタグに置き換えます。この手順の前のステップで、コンテナイメージのタグは取得しています。

   例:

   ```
   aws lightsail push-container-image --region us-west-2 --service-name myservice --label mystaticwebsite --image mystaticwebsite:v2
   ```

   次の例のような結果が表示されていれば、コンテナイメージがコンテナサービスにプッシュされたことを確認できます。  
![\[Lightsail コンテナサービスにプッシュされた Docker コンテナイメージ\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/amazon-lightsail-container-service-pushed-image.png)

   このガイドの以下の「[コンテナサービスに保存されているコンテナイメージを表示する](#view-pushed-container-images)」セクションを参照して、Lightsail コンソールでコンテナサービスにプッシュされたコンテナイメージを確認してください。

## コンテナサービスに保存されているコンテナイメージを表示する
<a name="view-pushed-container-images"></a>

コンテナサービスにプッシュ、保存されているコンテナイメージを表示するには、以下の手順を実行します。

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

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

1. 表示したい保存されたコンテナイメージのコンテナサービス名を選択します。

1. コンテナサービス管理ページで、[**イメージ**] タブを選択します。
**注記**  
コンテナサービスにイメージをプッシュしていない場合、[**イメージ**] タブは表示されません。コンテナサービスのイメージタブを表示するには、まずコンテナイメージをサービスにプッシュする必要があります。

   [**イメージ**] ページには、コンテナサービスにプッシュされ、現在ユーザーのサービス内に保存されているコンテナイメージの一覧が表示されます。現在のデプロイで使用されているコンテナイメージは削除できないため、削除アイコンは灰色に表示されます。  
![\[Lightsail コンソールの保存されたイメージのページ\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/amazon-lightsail-container-services-stored-images-page.png)

   サービスに保存されているコンテナイメージを使用して、デプロイが作成できます。詳細については、「Amazon Lightsail コンテナサービスのデプロイの作成と管理」を参照してください。

## コンテナサービスに保存されているコンテナイメージを削除する
<a name="delete-stored-container-images"></a>

コンテナサービスにプッシュ、保存されているコンテナイメージを削除するには、以下の手順を実行します。

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

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

1. 現在のデプロイを表示したいコンテナサービス名を選択します。

1. コンテナサービス管理ページで、[**イメージ**] タブを選択します。
**注記**  
コンテナサービスにイメージをプッシュしていない場合、[**イメージ**] タブは表示されません。コンテナサービスのイメージタブを表示するには、まずコンテナイメージをサービスにプッシュする必要があります。

1. 削除したいコンテナイメージを見つけ、削除アイコン (ごみ箱) を選択します。
**注記**  
現在のデプロイで使用されているコンテナイメージは削除できないため、削除アイコンは灰色に表示されます。

1. 確認プロンプトが表示されたら、[**はい、削除します**] を選択して保存されたイメージの完全な削除を確定します。

   保存されたコンテナイメージは、コンテナサービスからただちに削除されます。

# Docker AWS CLI、およびコンテナ用のLightsailコントロールプラグインをインストールする
<a name="amazon-lightsail-install-software"></a>

Amazon Lightsail コンソールを使用して Lightsail コンテナサービスを作成すると、Amazon ECR Public Gallery などのオンライン公開レジストリからコンテナイメージを使ったデプロイを作成できます。独自のコンテナイメージを作成してコンテナサービスにプッシュするには、コンテナイメージを作成する予定のコンピューター上に、以下の追加ソフトウェアをインストールする必要があります。
+ **Docker** – 独自のコンテナイメージを実行、テスト、作成することが可能で、イメージは Lightsail コンテナサービスで使用することができます。
+ **AWS Command Line Interface (AWS CLI)** – 作成したコンテナイメージのパラメータを指定し、Lightsailコンテナサービスにプッシュします。バージョン 2.1.1 とそれ以降のバージョンで、Lightsail コントロールプラグインは機能します。
+ **Lightsail コントロール (lightsailctl) プラグイン** – がローカルマシンにあるコンテナイメージにアクセス AWS CLI できるようにします。

このガイドの次のセクションでは、これらのソフトウェアパッケージをダウンロードする場所と、インストール方法について説明しています。コンテナサービスの詳細については、「[コンテナサービス](amazon-lightsail-container-services.md)」を参照してください。

**目次**
+ [Docker をインストールする](#install-software-docker)
+ [のインストール AWS CLI](#install-software-aws-cli)
+ [Lightsail コントローラー プラグインをインストールする](#install-software-lightsailctl)
  + [Windows に lightsailctl プラグインをインストールする](#install-lightsailctl-on-windows)
  + [macOS に lightsailctl プラグインをインストールする](#install-lightsailctl-on-macos)
  + [Linux に lightsailctl プラグインをインストールする](#install-lightsailctl-on-linux)

## Docker をインストールする
<a name="install-software-docker"></a>

Docker は、Linux コンテナをベースにしている配信されたアプリケーションの構築、実行、テスト、そしてデプロイを可能にするテクノロジーです。Lightsail コンテナサービスで使用することができる独自のコンテナイメージを作成したい場合は、Docker ソフトウェアをインストールして使用する必要があります。詳細については、「[Lightsail コンテナサービスでのコンテナイメージの作成](amazon-lightsail-creating-container-images.md)」を参照してください。

Docker はさまざまなオペレーティングシステムで使用できます。Ubuntu のような最新の Linux ディストリビューションや、 macOS や Windows でも使用できます。特定のオペレーティングシステムに Docker をインストールする方法の詳細については、[Docker インストールガイド](https://docs.docker.com/engine/installation/#installation) を参照してください。

**注記**  
Docker の最新バージョンがインストールされている必要があります。古いバージョンの Docker が、このガイドで後述する AWS CLI および Lightsail Control (lightsailctl) プラグインで動作するとは限りません。

## のインストール AWS CLI
<a name="install-software-aws-cli"></a>

 AWS CLI は、コマンドラインシェルのコマンドLightsailを使用して、 などの AWS サービスとやり取りできるオープンソースツールです。ローカルマシンで作成されたコンテナイメージをLightsailコンテナサービスにプッシュ AWS CLI するには、 をインストールして使用する必要があります。

 AWS CLI は、次のバージョンで使用できます。
+ **バージョン 2.x** — 現在一般的にご利用いただける AWS CLIのリリース。これは の最新バージョン AWS CLI であり、コンテナイメージをLightsailコンテナサービスにプッシュする機能など、すべての最新機能をサポートしています。バージョン 2.1.1 とそれ以降のバージョンで、Lightsail コントロールプラグインは機能します。
+ **バージョン 1.x** – 下位互換性のために AWS CLI 利用可能な の以前のバージョン。このバージョンでは、コンテナイメージを Lightsail コンテナサービスにプッシュする機能がサポートされていません。したがって、代わりに AWS CLI バージョン 2 をインストールする必要があります。

 AWS CLI バージョン 2 は、Linux、macOS、および Windows オペレーティングシステムで使用できます。 AWS CLI これらのオペレーティングシステムに をインストールする方法については、「 *AWS CLI ユーザーガイド*[」の「バージョン 2 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)のインストール」を参照してください。

## Lightsail コントローラー プラグインをインストールする
<a name="install-software-lightsailctl"></a>

Lightsail Control (lightsailctl) プラグインは、 がローカルマシンで作成したコンテナイメージ AWS CLI にアクセスできるようにする軽量アプリケーションです。このプラグインは、コンテナイメージを Lightsail コンテナサービスにプッシュすることで、それらをご自身のサービスにデプロイできるようにします。

**システム要件**
+ 64 ビット対応の Windows、macOS、および Linux オペレーティングシステム。
+ AWS CLI lightsailctl プラグインを使用するには、バージョン 2 をローカルマシンにインストールする必要があります。詳細については、このガイドの前のセクションにあった「[AWS CLIをインストールする](#install-software-aws-cli)」を参照してください。

**最新バージョンの lightsailctl プラグインを使用する**

lightsailctl プラグインは、拡張機能で更新されることがあります。lightsailctl プラグインを使用するたびに、最新バージョンを使用していることを確認するチェックが実行されます。新しいバージョンが利用可能であることが判明した場合は、最新バージョンに更新して新しい機能を利用するように求められます。更新バージョンが利用可能になったら、インストールプロセスを繰り返して lightsailctl プラグインの最新バージョンを取得する必要があります。

次の内容では lightsail ctl プラグインのすべてのリリース、ならびに各バージョンに含まれる機能および強化機能が一覧表示されす。
+ **v1.0.0 (2020 年 11 月 12 日にリリース) – 初回リリースでは、**Lightsailコンテナイメージをコンテナサービスにプッシュするための AWS CLI バージョン 2 の機能が追加されました。

### Windows に lightsailctl プラグインをインストールする
<a name="install-lightsailctl-on-windows"></a>

Windows に lightsailctl プラグインをインストールするには、次の手順を実行します。

1. 次の URL から実行可能ファイルをダウンロードして、`C:\Temp\lightsailctl\` ディレクトリに保存します。

   ```
   https://s3.us-west-2.amazonaws.com/lightsailctl/latest/windows-amd64/lightsailctl.exe
   ```

1. **Windows Start** ボタンを選択して、`cmd` を検索します。

1. 検索結果から **Command Prompt** アプリケーションを右クリックし、[**Run as administrator**] を選択します。  
![\[管理者として Run Command Prompt を実行する\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/lightsailctl-cmd-run-as-administrator.png)
**注記**  
デバイスに変更を加えることを Command Prompt に許可するかの確認プロンプトが表示される場合があります。**はい** を選択してインストールを続行します。

1. 次のコマンドを入力して、lightsailctl プラグインを保存した`C:\Temp\lightsailctl\`ディレクトリを指すパス環境変数を設定します。

   ```
   setx PATH "%PATH%;C:\Temp\lightsailctl" /M
   ```

   次の例のような結果が表示されます。  
![\[setx コマンドに対するコマンドライン応答\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/lighstailctl-setx-command.png)

`setx` コマンドは 1,024 文字を超えると切り捨てられます。PATH に複数の変数がすでに設定されている場合は、以下の手順を使用して PATH 環境変数を手動で設定します。

1. **[Start]** (スタート) メニューから **[Control Panel]** (コントロールパネル) を開きます。

1. **[System and Security]** (システムとセキュリティ) を選択し、**[System]** (システム) を選択します。

1. [**システムの詳細設定**] を選択します。

1. **[System Properties]** (システムのプロパティ) ダイアログボックスで、**[Advanced]** (詳細設定) タブを開き、**[Environment Variables]** (環境変数) を選択します。

1. **[Environment Variables]** (環境変数) ダイアログボックスの **[System Variables]** (システム変数) ボックスで、**[Path]** (パス) を選択します。

1. **[System Variables]** (システム変数) ボックスの下にある **[Edit]** (編集) ボタンを選択します。  
![\[Windows システム変数\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/lightsail-windows-system-variables.png)

1. **[New]** (新規) を選択し、次のパスを入力します。`C:\Temp\lightsailctl\`  
![\[Windows 環境変数\]](http://docs.aws.amazon.com/ja_jp/lightsail/latest/userguide/images/lightsail-windows-edit-env-variable.png)

1. 3 つの連続したダイアログボックスで **[OK]** を選択し、**[System]** (システム) ダイアログボックスを閉じます。

これで、 AWS Command Line Interface (AWS CLI) を使用してコンテナイメージをLightsailコンテナサービスにプッシュする準備が整いました。詳しくは、「[コンテナイメージをプッシュして管理する](amazon-lightsail-pushing-container-images.md)」を参照してください。

### macOS に lightsailctl プラグインをインストールする
<a name="install-lightsailctl-on-macos"></a>

次のいずれかの手順を実行して、macOS に lightsailctl プラグインをダウンロードしてインストールします。

**ホームブリューダウンロードとインストール**

1. ターミナルウィンドウを開きます。

1. 次のコマンドを入力して、lightsailctl プラグインをダウンロードしてインストールします。

   ```
   brew install aws/tap/lightsailctl
   ```
**注記**  
Homebrew の詳細については、[Homebrew](https://brew.sh/) ウェブサイトを参照してください。

**手動のダウンロードとインストール**

1. ターミナルウィンドウを開きます。

1. 次のコマンドを入力して、lightsailctl プラグインをダウンロードし、bin フォルダにコピーします。

   ```
   curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/darwin-amd64/lightsailctl" -o "/usr/local/bin/lightsailctl"
   ```

1. 次のコマンドを入力して、実行可能なプラグインを作成します。

   ```
   chmod +x /usr/local/bin/lightsailctl
   ```

1. 次のコマンドを入力して、プラグインの拡張属性をクリアにします。

   ```
   xattr -c /usr/local/bin/lightsailctl
   ```

これで、 を使用してコンテナイメージをLightsailコンテナサービスに AWS CLI プッシュする準備が整いました。詳しくは、「[コンテナイメージをプッシュして管理する](amazon-lightsail-pushing-container-images.md)」を参照してください。

### Linux に lightsailctl プラグインをインストールする
<a name="install-lightsailctl-on-linux"></a>

Linux に Lightsail コンテナサービスプラグインをインストールするには、次の手順を実行します。

1. ターミナルウィンドウを開きます。

1. 次のコマンドを入力して、lightsailctl プラグインをダウンロードします。
   + AMD 64 ビットのアーキテクチャーバージョンのプラグインの場合：

     ```
     curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/linux-amd64/lightsailctl" -o "/usr/local/bin/lightsailctl"
     ```
   + ARM 64 ビットのアーキテクチャーバージョンのプラグインの場合：

     ```
     curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/linux-arm64/lightsailctl" -o "/usr/local/bin/lightsailctl"
     ```

1. 次のコマンドを入力して、実行可能なプラグインを作成します。

   ```
   sudo chmod +x /usr/local/bin/lightsailctl
   ```

   これで、 を使用してコンテナイメージをLightsailコンテナサービスに AWS CLI プッシュする準備が整いました。詳しくは、「[コンテナイメージをプッシュして管理する](amazon-lightsail-pushing-container-images.md)」を参照してください。

# 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
   ```