

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

# Amazon ECR インターフェイス VPC エンドポイント (AWS PrivateLink)
<a name="vpc-endpoints"></a>

インターフェイス VPC エンドポイントを使用するように Amazon ECR を設定することで、VPC のセキュリティ体制を強化できます。VPC エンドポイントは AWS 、プライベート IP アドレス (IPv4 と IPv6 の両方) を介して Amazon ECR API にプライベートにアクセスできるテクノロジーである PrivateLink を利用しています。 APIs IPv4 IPv6 AWS PrivateLink は、VPC と Amazon ECR 間のすべてのネットワークトラフィックを Amazon ネットワークに制限します。インターネットゲートウェイ、NAT デバイス、または仮想プライベートゲートウェイは必要ありません。

 AWS PrivateLink と VPC エンドポイントの詳細については、*「Amazon* [VPC ユーザーガイド」の「VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)」を参照してください。

## Amazon ECR VPC エンドポイントに関する考慮事項
<a name="ecr-vpc-endpoint-considerations"></a>

Amazon ECR の VPC エンドポイントを設定する前に、以下の考慮事項に注意してください。
+ Amazon EC2 インスタンスでホストされる Amazon ECS タスクで Amazon ECR からプライベートイメージをプルできるようにするには、Amazon ECS 用のインターフェイス VPC エンドポイントを作成します。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の「[インターフェイス VPC エンドポイント (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html)」を参照してください。
+ Amazon ECR からコンテナイメージをプルする Fargate でホストされる Amazon ECS タスクでは、条件キーをタスクのタスク実行 IAM ロールに追加することによって、タスクが使用する特定の VPC へのアクセス、およびサービスが使用する VPC エンドポイントへのアクセスを制限することができます。詳細については、*Amazon Elastic Container Service デベロッパーガイド*の「[インターフェイスエンドポイントを介して Amazon ECR をプルする Fargate タスクの最適な IAM アクセス許可](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)」を参照してください。
+ VPC エンドポイントにアタッチされたセキュリティグループでは、VPC のプライベートサブネットから、ポート 443 で着信接続を許可する必要があります。
+ Amazon ECR VPC エンドポイントは、デュアルスタック (IPv4 および IPv6) 接続をサポートしています。デュアルスタック VPC エンドポイントを作成すると、IPv4 プライベート IP アドレスと IPv6 プライベート IP アドレスの両方でトラフィックを処理できます。
+ VPC エンドポイントは、米国東部 (バージニア北部) の AWS API SDK エンドポイントを介して Amazon ECR Public リポジトリをサポートします。
+ VPC エンドポイントは、Amazon Route 53 を通じて AWS 提供される DNS のみをサポートします。独自の DNS を使用したい場合は、条件付き DNS 転送を使用できます。詳細については、*Amazon VPC ユーザーガイド* の [DHCP Options Sets](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) を参照してください。
+ コンテナに Amazon S3 への既存の接続がある場合、Amazon S3 ゲートウェイエンドポイントを追加すると接続が一時的に中断される場合があります。この中断を回避するには、Amazon S3 ​ゲートウェイエンドポイントを使用する新しい VPC を作成してから、Amazon ECS クラスターとそのコンテナを新しい VPC に移行します。
+ 初めてプルスルーキャッシュルールを使用してイメージをプルするとき、 AWS PrivateLink を使って、インターフェイス VPC エンドポイントを使用するように Amazon ECR を設定した場合、NAT ゲートウェイを使用して、同じ VPC 内にパブリックサブネットを作成し、プルが機能するように、プライベートサブネットから NAT ゲートウェイへのすべてのアウトバウンドトラフィックをインターネットにルーティングする必要があります。その後のイメージプルでは、これは必要ありません。詳細については、*Amazon Virtual Private Cloud ユーザーガイド*の「[シナリオ: プライベートサブネットからインターネットにアクセスする](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#public-nat-internet-access)」を参照してください。
+ FIPS 140-3 検証済み暗号化モジュールを必要とするワークロードの場合、Amazon ECR は VPC エンドポイントの FIPS エンドポイントをサポートします。

### Windows イメージに関する考慮事項
<a name="ecr-vpc-endpoint-windows-considerations"></a>

Windows オペレーティングシステムに基づくイメージには、ライセンスによって配布が制限されているアーティファクトが含まれます。デフォルトでは、Windows イメージを Amazon ECR リポジトリにプッシュすると、これらのアーティファクトを含むレイヤーは*外部レイヤー*と見なされるため、プッシュされません。アーティファクトが Microsoft によって提供されている場合、外部レイヤーは Microsoft Azure インフラストラクチャから取得されます。このため、コンテナがこれらの外部レイヤーを Azure からプルできるようにするには、VPC エンドポイントを作成する以外に、追加のステップが必要です。

Docker デーモンの `--allow-nondistributable-artifacts` フラグを使用して、Windowsイメージを Amazon ECR にプッシュするときに、この動作をオーバーライドすることができます。有効にすると、このフラグはライセンスされたレイヤーを Amazon ECR にプッシュします。これにより、Azure への追加アクセスを必要とすることなく、これらのイメージを VPC エンドポイント経由で Amazon ECR からプルすることができます。

**重要**  
この `--allow-nondistributable-artifacts` フラグを使用しても、Windows コンテナベースイメージライセンスの条項に従う義務が排除されるわけではありません。したがって、パブリックまたはサードパーティーによる再配布のために Windows コンテンツを投稿することはできません。お客様自身の環境内での使用は許可されています。

Docker インストールでこのフラグを使用できるようにするには、Docker デーモン設定ファイルを変更する必要があります。通常は Docker インストールに応じて、[**Docker エンジン**] セクションの設定または環境設定メニューで設定するか、直接 `C:\ProgramData\docker\config\daemon.json` ファイルを編集できます。

以下に示しているのは、必要な設定の例です。イメージをプッシュするリポジトリ URI に値を置き換えます。

```
{
    "allow-nondistributable-artifacts": [
        "{{111122223333}}.dkr.ecr.{{us-west-2}}.amazonaws.com"
    ]
}
```

Docker デーモン設定ファイルを変更したら、イメージをプッシュする前に Docker デーモンを再起動する必要があります。ベースレイヤーがリポジトリにプッシュされたことを確認して、プッシュが成功したことを確認します。

**注記**  
Windows イメージのベースレイヤーは大きくなります。レイヤーサイズにより、プッシュ時間が長くなり、Amazon ECR でのこれらのイメージのストレージコストが増大します。これらの理由から、このオプションは、構築時間と継続的なストレージコストを削減することが厳密に要求される場合にのみ使用することをお勧めします。例えば、`mcr.microsoft.com/windows/servercore` イメージを Amazon ECR で圧縮すると、約 1.7 GiB のサイズになります。

## Amazon ECR の VPC エンドポイントを作成する
<a name="ecr-setting-up-vpc-create"></a>

Amazon ECR サービスの VPC エンドポイントを作成するには、*Amazon VPC ユーザーガイド*の[インターフェイスエンドポイント作成](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)の手順を使用します。

Amazon ECR VPC エンドポイントは、デュアルスタック (IPv4 および IPv6) 接続をサポートしています。デュアルスタック VPC エンドポイントを作成すると、IPv4 プライベート IP アドレスと IPv6 プライベート IP アドレスの両方でトラフィックが自動的に処理されます。エンドポイントは、クライアントのネットワーク設定とエンドポイントの機能に基づいて、適切な IP バージョンを使用してトラフィックをルーティングします。

既存の IPv4-only VPC エンドポイントがあり、デュアルスタックエンドポイントに移行する場合は、既存のエンドポイントを変更してデュアルスタック接続をサポートするか、新しいデュアルスタックエンドポイントを作成できます。エンドポイントを作成または変更するときは、VPC とサブネットが使用する IP バージョンをサポートしていることを確認してください。デュアルスタックエンドポイントを作成すると、エンドポイントは IPv4 と IPv6 の両方をサポートします。

Amazon EC2 インスタンスでホストされる Amazon ECS タスクの場合、Amazon ECR エンドポイントと Amazon S3 ゲートウェイエンドポイントの両方が必要です。

プラットフォームバージョン `1.4.0` 以降を使用する Fargate でホストされる Amazon ECS タスクの場合、Amazon ECR VPC エンドポイントと Amazon S3 ゲートウェイエンドポイントの両方が必要です。

プラットフォームバージョン `1.3.0` 以前を使用する Fargate でホストされる Amazon ECS タスクの場合、必要なのは **com.amazonaws.{{region}}.ecr.dkr** Amazon ECR VPC エンドポイントと Amazon S3 ゲートウェイエンドポイントのみです。

**注記**  
エンドポイントが作成される順序は重要ではありません。

**com.amazonaws.{{region}}.ecr.dkr**  
このエンドポイントは、Docker Registry API に使用されます。`push` や `pull` などの Docker クライアントコマンドでは、このエンドポイントが使用されます。  
このエンドポイントを作成する際に、プライベート DNS ホスト名を有効にする必要があります。​ これを行うには、VPC エンドポイントを作成するときに、Amazon VPC コンソールで [**プライベート DNS 名を有効にする**] オプションが選択されていることを確認します。  
FIPS 140-3 準拠の接続の場合は、FIPS エンドポイント名 **com.amazonaws.{{region}}.ecr-fips.dkr** を使用します。

**com.amazonaws.{{region}}.ecr.api**  
指定された{{リージョン}}は、米国東部 (オハイオ) リージョンなど、Amazon ECR でサポートされている AWS リージョン`us-east-2`のリージョン識別子を表します。
FIPS 140-3 準拠の接続には、FIPS エンドポイント名 **com.amazonaws.{{region}}.ecr-fips.dkr** と **com.amazonaws.{{region}}.ecr-fips.api** を使用します。  
このエンドポイントは、Amazon ECR API への呼び出しに使用されます。`DescribeImages` や `CreateRepository` などの API アクションは、このエンドポイントに移動します。  
このエンドポイントを作成すると、プライベート DNS ホスト名を有効にするオプションが使用可能になります。VPC エンドポイントの作成時に VPC コンソールで [**プライベート DNS 名を有効にする**] を選択して、この設定名を有効にします。VPC エンドポイントのプライベート DNS ホスト名を有効にする場合は、SDK または を最新バージョン AWS CLI に更新して、SDK または AWS CLI を使用するときにエンドポイント URL を指定する必要はありません。  
FIPS 140-3 準拠の接続の場合は、FIPS エンドポイント名 **com.amazonaws.{{region}}.ecr-fips.api** を使用します。  
プライベート DNS ホスト名を有効にし、2019 年 1 月 24 日より前にリリースされた SDK または AWS CLI バージョンを使用している場合は、 `--endpoint-url`パラメータを使用してインターフェイスエンドポイントを指定する必要があります。次の例は、エンドポイント URL の形式を示しています。  

```
aws ecr create-repository --repository-name {{name}} --endpoint-url https://api.ecr.{{region}}.amazonaws.com
```
VPC エンドポイントでプライベート DNS ホスト名を有効にしない場合は、インターフェイスエンドポイントで VPC エンドポイント ID を指定する `--endpoint-url` パラメータを​使用する必要があります。次の例は、エンドポイント URL の形式を示しています。  

```
aws ecr create-repository --repository-name {{name}} --endpoint-url https://{{VPC_endpoint_ID}}.api.ecr.{{region}}.vpce.amazonaws.com
```
FIPS 140-3 準拠の接続の場合は、FIPS エンドポイント URL を使用します。  

```
aws ecr create-repository --repository-name {{name}} --endpoint-url https://api.ecr-fips.{{region}}.amazonaws.com
```

## Amazon S3 ゲートウェイエンドポイントを作成する
<a name="ecr-setting-up-s3-gateway"></a>

Amazon ECS タスクで Amazon ECR からプライベートイメージをプルするには、Amazon S3 のゲートウェイエンドポイントを作成する必要があります。Amazon ECR は Amazon S3 を使用してイメージレイヤーを保存するため、ゲートウェイエンドポイントが必要です。Amazon ECR からイメージをダウンロードするコンテナは、Amazon ECR にアクセスしてイメージマニフェストを取得してから Amazon S3 にアクセスして実際のイメージレイヤーをダウンロードする必要があります。​ 各 Docker イメージのレイヤーを含む Amazon S3 バケットの Amazon リソースネーム (ARN) を以下に示します。

```
arn:aws:s3:::prod-{{region}}-starport-layer-bucket/*
```

**注記**  
Amazon ECR のデュアルスタック VPC エンドポイントを作成する場合は、デュアルスタックの Amazon S3 Gateway または Interface エンドポイントも作成する必要があります。詳細については、[S3 ドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#privatelink-ip-address-types)を参照してください。

Amazon ECR に以下の Amazon S3 ゲートウェイエンドポイントを作成するには、*Amazon VPC ユーザーガイド*の[ゲートウェイエンドポイントの作成](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html#create-gateway-endpoint)手順を使用します。エンドポイントを作成するときは、必ず VPC のルートテーブルを選択してください。

**com.amazonaws.{{region}}.s3**  
Amazon S3 ゲートウェイエンドポイントは IAM ポリシードキュメントを使用してサービスへのアクセスを制限します。​ このポリシーには、タスクの IAM ロールまたはその他の IAM ユーザーポリシーに設定された制限が引き続き優先して適用されるので、**フルアクセス**ポリシーを使用できます。Amazon S3 バケットアクセスを Amazon ECR を使用するための最小限のアクセス許可に制限する場合は、「[Amazon ECR の最小 Amazon S3 バケットアクセス許可](#ecr-minimum-s3-perms)」を参照してください。

### Amazon ECR の最小 Amazon S3 バケットアクセス許可
<a name="ecr-minimum-s3-perms"></a>

Amazon S3 ゲートウェイエンドポイントは IAM ポリシードキュメントを使用してサービスへのアクセスを制限します。​ Amazon ECR に最低限の Amazon S3 バケットアクセス許可のみを許可するには、エンドポイントの IAM ポリシードキュメントを作成するときに Amazon ECR が使用する Amazon S3 バケットへのアクセスを制限します。

次の表は、Amazon ECR に必要な Amazon S3 バケットポリシーアクセス許可を示しています。


| アクセス許可 | 説明 | 
| --- | --- | 
| `arn:aws:s3:::prod-{{region}}-starport-layer-bucket/*` | 各 Docker イメージのレイヤーを含む Amazon S3 バケットへのアクセスを提供します。米国東部 (オハイオ) リージョンの `us-east-2` のように、Amazon ECR でサポートされている AWS リージョンのリージョン識別子を表します。 | 

#### 例
<a name="ecr-minimum-s3-perms-example"></a>

以下の例は、Amazon ECR オペレーションに必要な Amazon S3 バケットへのアクセスを提供する方法を示しています。

```
{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::prod-{{region}}-starport-layer-bucket/*"]
    }
  ]
}
```

## CloudWatch Logs エンドポイントを作成する
<a name="ecr-setting-up-cloudwatch-logs"></a>

Fargate 起動タイプを使用し、インターネットゲートウェイなしで VPC を使用する一方で、`awslogs` ログドライバーを使用してログ情報を CloudWatch に送信する Amazon ECS タスクの場合、CloudWatch Logs の **com.amazonaws.{{region}}.logs** インターフェイス VVPC エンドポイントを作成する必要があります。詳細については、*Amazon CloudWatch Logs ユーザーガイド*の「[インターフェイス VPC エンドポイントでの CloudWatch Logs の使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html)」を参照してください。

## Amazon ECR VPC エンドポイントのエンドポイントポリシーを作成する
<a name="ecr-vpc-endpoint-policy"></a>

VPC エンドポイントポリシーは、エンドポイントの作成時または変更時にエンドポイントに加える国際機械技術者協会 (IAM) のリソースポリシーです。エンドポイントの作成時にポリシーをアタッチしない場合、 はサービスへのフルアクセスを許可するデフォルトのポリシーをア AWS タッチします。エンドポイントポリシーは、 ユーザーポリシーやサービス固有のポリシーを上書き、または置き換えません。これは、評価項目から指定されたサービスへのアクセスを制御するための別のポリシーです。評価項目のポリシーは、JSON形式で記載する必要があります。詳細については、「*Amazon VPCユーザーガイド*」の「[VPC評価項目によるサービスのアクセス制御](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)」を参照してください。

1 つの IAM リソースポリシーを作成し、両方の Amazon ECR VPC エンドポイントにアタッチすることをお勧めします。

Amazon ECR API のエンドポイントポリシーの例を次に示します。このポリシーは、特定の IAM ロールが Amazon ECR からイメージをプルできるようにします。

```
{
	"Statement": [{
		"Sid": "AllowPull",
		"Principal": {
			"AWS": "arn:aws:iam::{{1234567890}}:role/{{role_name}}"
		},
		"Action": [
			"ecr:BatchGetImage",
			"ecr:GetDownloadUrlForLayer",
                    "ecr:GetAuthorizationToken"
		],
		"Effect": "Allow",
		"Resource": "*"
	}]
}
```

次のエンドポイントポリシーの例では、指定されたリポジトリが削除されないようにしています。

```
{
	"Statement": [{
			"Sid": "AllowAll",
			"Principal": "*",
			"Action": "*",
			"Effect": "Allow",
			"Resource": "*"
		},
		{
			"Sid": "PreventDelete",
			"Principal": "*",
			"Action": "ecr:DeleteRepository",
			"Effect": "Deny",
			"Resource": "arn:aws:ecr:{{region}}:{{1234567890}}:repository/{{repository_name}}"
		}
	]
}
```

次のエンドポイントポリシーの例では、前述の 2 つの例を 1 つのポリシーにまとめています。

```
{
	"Statement": [{
			"Sid": "AllowAll",
			"Effect": "Allow",
			"Principal": "*",
			"Action": "*",
			"Resource": "*"
		},
		{
			"Sid": "PreventDelete",
			"Effect": "Deny",
			"Principal": "*",
			"Action": "ecr:DeleteRepository",
			"Resource": "arn:aws:ecr:{{region}}:{{1234567890}}:repository/{{repository_name}}"
		},
		{
			"Sid": "AllowPull",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::{{1234567890}}:role/{{role_name}}"
			},
			"Action": [
				"ecr:BatchGetImage",
				"ecr:GetDownloadUrlForLayer",
                          "ecr:GetAuthorizationToken"
			],
			"Resource": "*"
		}
	]
}
```

**Amazon ECR の VPC エンドポイントポリシーを変更するには**

1. Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。

1. ナビゲーションペインで、**[Endpoints]** (エンドポイント) を選択します。

1. Amazon ECR の VPC エンドポイントをまだ作成していない場合は、「[Amazon ECR の VPC エンドポイントを作成する](#ecr-setting-up-vpc-create)」を参照してください。

1. ポリシーを追加する Amazon ECR VPC エンドポイントを選択し、画面の下部にある [**ポリシー**] タブを選択します。

1. [**ポリシーの編集**] を選択してポリシーを変更します。

1. [**保存**] を選択してポリシーを保存します。

## 共有サブネット
<a name="ecr-vpc-endpoint-shared-subnets"></a>

自分と共有されているサブネットで VPC エンドポイントを作成、説明、変更、または削除することはできません。ただし、VPC エンドポイントを使用することはできます。