AWS PrivateLink と Network Load Balancer ECS を使用して Amazon でコンテナアプリケーションにプライベートにアクセスする - AWS 規範ガイダンス

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

AWS PrivateLink と Network Load Balancer ECS を使用して Amazon でコンテナアプリケーションにプライベートにアクセスする

作成者: Kirankumar Chandrashekar (AWS)

環境:本稼働

テクノロジー: コンテナとマイクロサービス、ネットワーキング、セキュリティ、アイデンティティ、コンプライアンス、ウェブとモバイルアプリ

ワークロード:その他すべてのワークロード

AWS サービス: Amazon EC2、Amazon EC2 Auto Scaling 、Amazon EC2 Container Registry、Amazon EFS、Amazon RDS、Amazon VPC、Amazon ECS、Elastic Load Balancing (ELB)、AWSLambda

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

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

Amazon EC2 Auto Scaling グループの代わりに AWS Fargate を使用することもできます。詳細については、AWS「Fargate、、AWS PrivateLinkおよび Network Load Balancer ECSを使用して Amazon でコンテナアプリケーションをプライベートにアクセスする」を参照してください。                         

前提条件

AWS PrivateLink を使用して、Network Load Balancer のECS背後にある Amazon のコンテナアプリケーションにアクセスします。

テクノロジースタック

  • 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

自動化とスケール

  • Amazon EC2 – Amazon Elastic Compute Cloud (Amazon EC2) は、AWSクラウドでスケーラブルなコンピューティング容量を提供します。

  • Amazon EC2 Auto Scaling – Amazon EC2 Auto Scaling は、アプリケーションの負荷を処理するために使用できる Amazon EC2インスタンスの数が適切であることを確認するのに役立ちます。

  • Amazon ECS – Amazon Elastic Container Service (Amazon ECS) は、クラスター上のコンテナの実行、停止、管理を容易にする、スケーラブルで高速なコンテナ管理サービスです。

  • Amazon ECR – Amazon Elastic Container Registry (Amazon ECR) は、安全でスケーラブル、信頼性の高いマネージドAWSコンテナイメージレジストリサービスです。

  • Amazon EFS – Amazon Elastic File System (Amazon EFS) は、AWSクラウドサービスやオンプレミスリソースで使用できる、シンプルでスケーラブルなフルマネージド型のElastic NFS File System を提供します。

  • AWS Lambda – Lambda は、サーバーのプロビジョニングや管理を行わずにコードを実行するためのコンピューティングサービスです。

  • Amazon RDS – Amazon Relational Database Service (Amazon RDS) は、AWSクラウドでのリレーショナルデータベースのセットアップ、運用、スケーリングを容易にするウェブサービスです。

  • Amazon S3」— Amazon Simple Storage Service (Amazon S3)は、インターネット用のストレージです。Web スケールのコンピューティングを開発者が容易にできるように設計されています。

  • AWS Secrets Manager – Secrets Manager は、Secrets Manager にプログラムでシークレットを取得するためのAPI呼び出しを提供することで、パスワードを含むコード内のハードコードされた認証情報を置き換えるのに役立ちます。

  • Amazon VPC – Amazon Virtual Private Cloud (Amazon VPC) は、定義した仮想ネットワークにAWSリソースを起動するのに役立ちます。

  • Elastic Load Balancing – Elastic Load Balancing は、Amazon EC2インスタンス、コンテナ、IP アドレスなどの複数のターゲットに受信アプリケーションまたはネットワークトラフィックを複数のアベイラビリティーゾーンに分散します。

  • Docker」— Docker を使用すると、開発者はあらゆるアプリケーションを軽量でポータブルな自給自足のコンテナとして簡単に梱包、出荷、および実行できます。

タスク説明必要なスキル

を作成しますVPC。

  1. AWS マネジメントコンソールにサインインし、Amazon VPCコンソールを開きます。の作成 VPCを選択し、 VPC とその他の を選択します。 

  2. の名前を入力しVPC、適切なCIDRブロック範囲を選択します。 

  3. 2 つのアベイラビリティーゾーン、2 つのパブリックサブネットと 4 つのプライベートサブネットを指定します。2 つのプライベートサブネットは Amazon ECSタスク用で、2 つのプライベートサブネットは Amazon RDS データベース用です。

  4. アベイラビリティーゾーンごとに 1 つのNATゲートウェイを指定します。 

  5. Create VPCを選択します。

クラウド管理者
タスク説明必要なスキル

Network Load Balancer を作成します。

  1. Amazon EC2コンソールを開き、 を含むAWSリージョンを選択しますVPC。 

  2. [ロードバランシング] で [ロードバランサー] を選択し、[ロードバランサーの作成] を選択します。 

  3. [Network Load Balancer] を選択し、[作成] を選択します。 

  4. ロードバランサーの設定ページで、Network Load Balancer とリスナーを設定します。重要:Network Load Balancer のスキームは必ず社内として選択してください。 

  5. 該当するセキュリティ設定を選択し、セキュリティグループとターゲットグループを設定します。インスタンスまたは IPルーティングの設定セクションのターゲットタイプとしてを選択します。ターゲットを登録しないようにしてください。 

  6. すべての設定を行ったら、次へ:レビューを選択して、作成を選択します。

クラウド管理者

Application Load Balancer を作成します。

  1. Amazon EC2コンソールで、 を含むのと同じリージョンを選択しますVPC。

  2. [ロードバランシング] で [ロードバランサー] を選択し、[ロードバランサーの作成] を選択します。

  3. [Application Load Balancer] を選択し、[作成] を選択します。 

  4. Application Load Balancer とそのリスナーを設定します。重要:Application Load Balancer のスキームは必ず社内として選択してください。 

  5. 該当するセキュリティ設定を選択し、セキュリティグループとターゲットグループを設定します。インスタンスまたは IPルーティングの設定セクションのターゲットタイプとしてを選択します。ターゲットを登録しないようにしてください。 

  6. すべての設定を行ったら、次へ:レビューを選択して、作成を選択します。

クラウド管理者
タスク説明必要なスキル

Amazon EFS ファイルシステムを作成します。

  1. Amazon EFSコンソールを開き、ファイルシステムの作成 を選択します。 

  2. ファイルシステムの作成ダイアログボックスで、ファイルシステムの名前を入力し、 を選択しますVPC。 

  3. [作成] を選択してファイルシステムを作成します。 

  4. Amazon EFS ファイルシステムをセットアップおよび設定します。

クラウド管理者

サブネットのターゲットをマウントします。

  1. Amazon EFSコンソールに戻り、ファイルシステム を選択します。ファイルシステムページには、アカウントの Amazon EFS ファイルシステムが表示されます。 

  2. 作成したファイルシステムを選択し、[管理] を選択すると、[アベイラビリティーゾーン] が表示されます。マウントターゲットを追加するには、[マウントターゲットの追加] を選択し、作成した 4 つのプライベートサブネットを追加します。

クラウド管理者

サブネットがターゲットとしてマウントされていることを確認します。

  1. Amazon EFSコンソールで、ファイルシステム を選択します。 

  2. [Network(ネットワーク)]を選択して、既存のマウントターゲットのリストを表示します。作成した 4 つのサブネットがこれらに含まれていることを確認してください。

クラウド管理者
タスク説明必要なスキル

S3 バケットを作成する。

Amazon S3 コンソールを開き、必要に応じてアプリケーションの静的アセットを保存する S3 バケットを作成します。

クラウド管理者
タスク説明必要なスキル

Secrets Manager シークレットを暗号化するAWSKMSキーを作成します。

AWS Key Management Service (AWS KMS) コンソールを開き、KMSキーを作成します。

クラウド管理者

Amazon RDSパスワードを保存する Secrets Manager シークレットを作成します。

  1. AWS Secrets Manager コンソールを開き、新しいシークレットの保存 を選択して新しいシークレットを作成します。 

  2. 作成したKMSキーを選択し、新しいシークレットを保存します。

クラウド管理者
タスク説明必要なスキル

DB サブネットグループを作成します。

  1. Amazon RDSコンソールを開き、サブネットグループ を選択します。 

  2. [DB サブネットグループの作成] を選択し、DB サブネットグループ用の名前と説明を入力します。 

  3. 前にVPC作成した を選択し、アベイラビリティーゾーンとサブネットを選択します。次に [作成] を選択します。

クラウド管理者

Amazon RDSインスタンスを作成します。

プライベートサブネット内に Amazon RDSインスタンスを作成して設定します。HA のため、[マルチ AZ] がオンになっていることを確認してください。

クラウド管理者

Amazon RDSインスタンスにデータをロードします。

アプリケーションに必要なリレーショナルデータを Amazon RDSインスタンスにロードします。このプロセスは、アプリケーションのニーズや、データベーススキーマの定義方法や設計方法により、異なっています。

クラウド管理者 DBA
タスク説明必要なスキル

ECS クラスターを作成します。

  1. Amazon ECSコンソールを開き、クラスター を選択します。

  2. クラスターの作成 を選択し、必要な仕様に従ってECSクラスターを設定します。

クラウド管理者

Docker イメージを作成します。

[関連リソース] セクションの指示に従い、Docker イメージを作成します。

クラウド管理者

Amazon ECR リポジトリを作成します。

  1. Amazon ECRコンソールで、リポジトリ を選択します。 

  2. [リポジトリの作成] を選択し、リポジトリの一意の名前を入力します。 

  3. 必要に応じてAWSKMS暗号化を含め、仕様に従ってリポジトリを設定します。

クラウド管理者、 DevOps エンジニア

Amazon ECRリポジトリの Docker クライアントを認証します。

Amazon ECRリポジトリの Docker クライアントを認証するには、 AWS でaws ecr get-login-password「 コマンド」を実行しますCLI。

クラウド管理者

Docker イメージを Amazon ECRリポジトリにプッシュします。

  1. プッシュする Docker イメージを特定し、 AWS で docker images コマンドを実行しますCLI。 

  2. Amazon ECRレジストリ、リポジトリ、およびオプションのイメージタグ名の組み合わせを使用してイメージにタグを付けます。 

  3. docker push コマンドを実行することで、Docker イメージをプッシュします。 

  4. 必要なすべてのイメージについても同様のステップを繰り返します。

クラウド管理者

Amazon ECSタスク定義を作成します。

Amazon で Docker コンテナを実行するには、タスク定義が必要ですECS。 

  1. Amazon ECSコンソールに戻り、タスク定義 を選択し、新しいタスク定義の作成 を選択します。 

  2. [互換性の選択] ページで、タスクで使用する起動タイプを選択し、[次のステップ] を選択します。

タスク定義の設定については、「関連リソースの作成」セクションの「タスク定義の作成」を参照してください。重要: Amazon にプッシュした Docker イメージを必ず指定してくださいECR。

クラウド管理者

Amazon ECSサービスを作成します。

前に作成したECSクラスターを使用して Amazon ECSサービスを作成します。起動タイプEC2として Amazon を選択し、前のステップで作成したタスク定義と Application Load Balancer のターゲットグループを選択します。

クラウド管理者
タスク説明必要なスキル

起動設定を作成します。

Amazon EC2コンソールを開き、起動設定を作成します。ユーザーデータに、EC2インスタンスが目的のECSクラスターに参加できるようにするコードがあることを確認してください。必要なコードの例として、関連リソースセクションを参照してください。

クラウド管理者

Amazon EC2 Auto Scaling グループを作成します。

Amazon EC2コンソールに戻り、Auto ScalingAuto Scaling グループ を選択します。Amazon EC2 Auto Scaling グループを設定します。プライベートサブネットが選択されていることを確認し、前に作成した設定を開始します。

クラウド管理者
タスク説明必要なスキル

AWS PrivateLink エンドポイントを設定します。

  1. Amazon VPCコンソールで、AWS PrivateLink エンドポイントを作成します。 

  2. このエンドポイントを Network Load Balancer に関連付けます。これにより、Amazon でホストされているアプリケーションが顧客にプライベートにECS利用可能になります。 

詳細については、[関連リソース] セクションを参照してください。

クラウド管理者
タスク説明必要なスキル

VPC エンドポイントを作成します。

以前に作成したVPCエンドポイントのAWS PrivateLink エンドポイントを作成します。VPC エンドポイントの完全修飾ドメイン名 (FQDN) はAWS PrivateLink エンドポイント を指しますFQDN。これにより、VPCエンドポイントがアクセスできるDNSエンドポイントサービスへのエラスティックネットワークインターフェイスが作成されます。

クラウド管理者
タスク説明必要なスキル

Lambda 関数を作成します。

AWS Lambda コンソールで、Lambda 関数を作成してApplication Load Balancer の IP アドレスを Network Load Balancer のターゲットとして更新します。詳細については、[関連リソース] セクションの「Application Load Balancer の静的 IP アドレスを使用」ブログ記事を参照してください。

アプリ開発者

ロードバランサーの作成

Amazon EFS ファイルシステムを作成します。

S3 バケットの作成

Secrets Manager シークレットの作成

Amazon RDSインスタンスを作成します。

Amazon ECSコンポーネントを作成します。

Amazon EC2 Auto Scaling グループを作成します。

をセットアップするAWS PrivateLink:

VPCエンドポイントを作成する:

Lambda 関数の作成

その他のリソース