

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

# AWS PrivateLink と Network Load Balancer を使用して、Amazon ECS 上のコンテナ アプリケーションにプライベートにアクセスします
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer"></a>

*Amazon Web Services、Kirankumar Chandrashekar*

## 概要
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-summary"></a>

このパターンは、Network Load Balancer の背後にある Amazon Elastic Container Service (Amazon ECS) の Docker コンテナアプリケーションをプライベートでホストし、AWS PrivateLink を使用してアクセスする方法を示しています。その後、専用ネットワークで、Amazon Web Services（AWS） のクラウド上のサービスに安全にアクセスできるようになります。Amazon Relational Database Service (Amazon RDS) を使用して、Amazon ECS で実行される高可用性 (HA) アプリケーション用のリレーショナルデータベースをホストします。アプリケーションに永続的なストレージが必要な場合、Amazon Elastic File System (Amazon EFS) が使用されます。

Dockerアプリケーションを実行する Amazon ECS サービスは、フロントエンドに Network Load Balancer を備えており、AWS PrivateLink経由でアクセスできる仮想プライベートクラウド（VPC）エンドポイントと関連付けることができます。この VPC エンドポイントサービスは、VPC エンドポイントを使用して他の VPC と共有できます。

Amazon EC2 Auto Scaling の代わりに、[AWS Fargate ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) を使用することもできます。詳細については、「[AWS Fargate、AWS PrivateLink、Network Load Balancerを使用して Amazon ECS でコンテナアプリケーションにプライベートにアクセス](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html?did=pg_card)」を参照してください。

## 前提条件と制限事項
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Linux、macOSまたは Windows にインストールし、設定されている「[AWS コマンドラインインターフェイス (AWS CLI) バージョン 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」
+ Linux、macOSまたは Windows にインストールし設定された「[Docker](https://www.docker.com/)」
+ Docker 上で動作するアプリケーション

## アーキテクチャ
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-architecture"></a>

![AWS PrivateLink を使って Network Load Balancer の背後にある Amazon ECS 上のコンテナアプリにアクセスします。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/a316bf46-24db-4514-957d-abc60f8f6962/images/573951ed-74bb-4023-9d9c-43e77e4f8eda.png)


 

**テクノロジースタック**
+ Amazon CloudWatch
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ Amazon EC2 Auto Scaling
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon ECS
+ Amazon RDS
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Lambda
+ AWS PrivateLink
+ AWS Secrets Manager
+ Application Load Balancer
+ Network Load Balancer
+ VPC

*自動化とスケール*
+ 「[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)」を使用することで、「[インフラストラクチャをコード](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html)」として使用してこのパターンを作成できます。

## ツール
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-tools"></a>
+ 「[Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)」— Amazon Elastic Compute Cloud (Amazon EC2) は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。
+ [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) — Amazon EC2 Auto Scaling は、アプリケーションの負荷を処理するために適切な数の Amazon EC2 インスタンスを利用できるようにします。
+ 「[Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)」— Amazon Elastic Container Service (Amazon ECS) は、クラスター上のコンテナーの実行、停止、管理を簡単にする、拡張性の高い高速なコンテナー管理サービスです。
+ 「[Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)」— Amazon Elastic Container Registry (Amazon ECR) は、セキュリティ、スケーラビリティ、信頼性を備えた AWS マネージドコンテナイメージレジストリサービスです。
+ 「[Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)」— Amazon Elastic File System (Amazon EFS)は、AWS クラウドサービスやオンプレミスのリソースで使用できる、シンプルでスケーラブルな、フルマネージドされた伸縮自在な NFS ファイルシステムを提供します。
+ 「[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)」– Lambda は、サーバーのプロビジョニングや管理を行わずにコードを実行するためのコンピューティング サービスです。
+ 「[Amazon RDS](https://docs.aws.amazon.com/rds/)」— Amazon Relational Database Service (Amazon RDS) は、AWS クラウドでのリレーショナルデータベースのセットアップ、運用、スケールをより簡単にするウェブサービスです。
+ 「[Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)」— Amazon Simple Storage Service (Amazon S3)は、インターネット用のストレージです。Web スケールのコンピューティングを開発者が容易にできるように設計されています。
+ 「[AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)」— Secrets Manager は、Secrets Manager に API 呼び出しを提供してプログラムでシークレットを取得することで、コード内のハードコーディングされた認証情報 (パスワードを含む) を置き換えるのに役立ちます。
+ 「[Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)」— Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。
+ 「[Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)」— Elastic Load Balancing は、受信するアプリケーションまたはネットワーク トラフィックを、複数のアベイラビリティーゾーン内の Amazon EC2 インスタンス、コンテナ、IP アドレスなどの複数のターゲットに分散します。
+ 「[Docker](https://www.docker.com/)」— Docker を使用すると、開発者はあらゆるアプリケーションを軽量でポータブルな自給自足のコンテナとして簡単に梱包、出荷、および実行できます。

## エピック
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-epics"></a>

### ネットワークコンポーネントの作成
<a name="create-networking-components"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 

### ロードバランサーの作成
<a name="create-the-load-balancers"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Network Load Balancer を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 
| Application Load Balancer を作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 

### Amazon EFS ファイルシステムを作成する
<a name="create-an-amazon-efs-file-system"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EFS ファイルシステムを作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 
| サブネットのターゲットをマウントします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 
| サブネットがターゲットとしてマウントされていることを確認します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 

### S3 バケットを作成する
<a name="create-an-s3-bucket"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | Amazon S3 コンソールを開き、必要に応じてアプリケーションの静的アセットを保存する S3 バケットを作成します。 | クラウド管理者 | 

### Secrets Manager シークレットを作成する
<a name="create-a-secrets-manager-secret"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Secrets Manager シークレットを暗号化するために、AWS KMS キーを作成します。 | AWS Key Management Service (AWS KMS) コンソールを開き、KMS キーを作成します。 | クラウド管理者 | 
|  Amazon RDS パスワードを保存する Secrets Manager シークレットを作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者  | 

### Amazon RDS DB インスタンスの作成
<a name="create-an-amazon-rds-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| DB サブネットグループを作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 
| Amazon RDS DB インスタンスを作成します。 | プライベートサブネット内に Amazon RDS インスタンスを作成して設定します。HA のため、**[マルチ AZ]** がオンになっていることを確認してください。 | クラウド管理者 | 
| Amazon RDS インスタンスにデータをロードします。 | アプリケーションに必要なリレーショナルデータを Amazon RDS インスタンスにロードします。このプロセスは、アプリケーションのニーズや、データベーススキーマの定義方法や設計方法により、異なっています。 | クラウド管理者、DBA | 

### Amazon ECS コンポーネントの作成
<a name="create-the-amazon-ecs-components"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EKS クラスターを作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 
| Docker イメージを作成します。 | *[関連リソース]* セクションの指示に従い、Docker イメージを作成します。 | クラウド管理者 | 
| Amazon ECR リポジトリを作成します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者、DevOps エンジニア | 
| Amazon ECR レジストリに対し、Docker CLI を認証します。 | Amazon ECR リポジトリ用の Docker クライアントを認証するには、AWS CLI で `aws ecr get-login-password` コマンドを実行します。 | クラウド管理者 | 
| Docker イメージを Amazon ECR リポジトリにプッシュします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | クラウド管理者 | 
| Amazon ECS タスク定義を作成します。 | Amazon ECS で Docker コンテナを実行するには、タスク定義が必要です。 [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html)タスク定義の設定方法については、*[関連リソース]* のセクションのタスク定義の作成を参照してください。Amazon ECR にプッシュした Docker イメージを必ず提供してください。 | クラウド管理者 | 
| Amazon ECS サービスを作成する  | 前に作成した ECS クラスターを使用して Amazon ECS サービスを作成します。 、起動タイプとして必ず Amazon EC2 を選択し、前の手順で作成したタスク定義と Application Load Balancer のターゲットグループを選択してください。 | クラウド管理者 | 

### Amazon EC2 Auto Scaling グループの作成
<a name="create-an-amazon-ec2-auto-scaling-group"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 起動設定を作成します。 | Amazon EC2 コンソールを開き、起動設定を作成します。ユーザーデータに、EC2 インスタンスが必要な ECS クラスターに参加できるようにするコードが含まれていることを確認します。必要なコードの例として、*[関連リソース]* セクションを参照してください。 | クラウド管理者 | 
| Amazon EC2 Auto Scaling グループを作成します。 | Amazon EC2 コンソールに戻り、**[Auto Scaling]** で **[Auto Scaling グループ]** を選択します。Amazon EC2 Auto Scaling をセットアップします。プライベートサブネットが選択されていることを確認し、前に作成した設定を開始します。 | クラウド管理者 | 

### AWS PrivateLinkの設定
<a name="set-up-aws-privatelink"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS PrivateLink エンドポイントを設定します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html)詳細については、[関連リソース] セクションを参照してください。 | クラウド管理者 | 

### VPC エンドポイントの作成
<a name="create-a-vpc-endpoint"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC エンドポイントを作成します。 | 前に作成した AWS PrivateLink エンドポイント用の VPC エンドポイントを作成します。VPC エンドポイントの完全修飾ドメイン名 (FQDN) は、AWS PrivateLink エンドポイント FQDN を指します これにより、DNS エンドポイントがアクセスできる VPC エンドポイントサービスへの耐障害性のあるネットワークインタフェースが作成されます。 | クラウド管理者 | 

### Lambda 関数を作成する
<a name="create-the-lambda-function"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Lambda 関数を作成します。 | AWS Lambda コンソールで、Lambda関数を作成して、Network Load Balancer のターゲットとして Application Load Balancer IPアドレスを更新します。詳細については、ブログ記事「[AWS Lambda を使用してアプリケーションロードバランサーで静的 IP アドレスを有効化する](https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/)」を参照してください。 | アプリ開発者 | 

## 関連リソース
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-resources"></a>

ロードバランサーの作成
+ [Amazon ECS の Network Load Balancer を使用する](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/nlb.html)
+ [Network Load Balancer を作成する](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)
+ [Amazon ECS 用の Application Load Balancer を使用する](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/alb.html)
+ 「[Application Load Balancer の作成](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)」

Amazon EFS ファイルシステムを作成する
+ [Amazon EFS ファイルシステムを作成する](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html)
+ 「[Amazon EFS でマウントターゲットを作成](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)」

S3 バケットを作成する
+ [S3 バケットを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#creating-bucket)

Secrets Manager シークレットの作成
+ 「[AWS KMS でキーを作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)」
+ 「[AWS Secrets Manager でシークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)」

Amazon RDS インスタンスの作成
+ 「[Amazon RDS DB インスタンスの作成](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)」

**Amazon ECS コンポーネントの作成**
+ 「[Amazon ECS クラスターの作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-ec2-cluster-console-v2.html)」
+ 「[Docker イメージの作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html)」
+ 「[Amazon ECR リポジトリの作成](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)」
+ 「[Amazon ECR リポジトリで Docker を認証](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)」
+ 「[イメージを Amazon ECR リポジトリにプッシュ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)」
+ 「[Amazon ECS タスク定義の作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)」
+ 「[Amazon ECS サービスの作成](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.html)」

Amazon EC2 Auto Scaling グループを作成します。
+ 「[起動設定を作成する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-config.html)」
+ [起動設定を使用して Auto Scaling グループを作成する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg.html)
+ 「[Amazon EC2 ユーザーデータを使用してコンテナインスタンスをブートストラップする](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html)」

**AWS PrivateLinkの設定：**
+ 「[VPC エンドポイントサービス (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)」

VPC エンドポイントの作成
+ 「[インターフェイス VPC エンドポイント (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)」

Lambda 関数の作成
+ [Lambda 関数を作成する](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)

その他のリソース
+ 「[Application Load Balancer に静的 IP アドレスを使用](https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/)」
+ 「[AWS PrivateLink を介したサービスへの安全なアクセス](https://d1.awsstatic.com/whitepapers/aws-privatelink.pdf)」