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

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

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

作成者: Kirankumar Chandrashekar (AWS)

このパターンは、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  を使用することもできます。詳細については、「AWS Fargate、AWS PrivateLink、Network Load Balancerを使用して Amazon ECS でコンテナアプリケーションにプライベートにアクセス」を参照してください。

前提条件

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

テクノロジースタック

  • 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 クラウドサービスやオンプレミスのリソースで使用できる、シンプルでスケーラブルな、フルマネージドされた伸縮自在な NFS ファイルシステムを提供します。

  • 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 (VPC の作成)] を選択します。

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

Network Load Balancer を作成します。

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

  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 シークレットを暗号化するために、AWS KMS キーを作成します。

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 DB インスタンスを作成します。

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

クラウド管理者

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

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

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

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

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

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

クラウド管理者

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

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

クラウド管理者

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

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

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

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

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

Amazon ECR レジストリに対し、Docker CLI を認証します。

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

クラウド管理者

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

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

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

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

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

クラウド管理者

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

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

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

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

重要

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

クラウド管理者

Amazon ECS サービスを作成する

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

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

起動設定を作成します。

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

クラウド管理者

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

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

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

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

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

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

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

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

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

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

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

Lambda 関数を作成します。

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

アプリ開発者

ロードバランサーの作成

Amazon EFS ファイルシステムの作成

S3 バケットの作成

Secrets Manager シークレットの作成

Amazon RDS インスタンスの作成

Amazon ECS コンポーネントの作成

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

AWS PrivateLinkの設定:

VPC エンドポイントの作成

Lambda 関数の作成

その他のリソース