プライベート Elastic Beanstalk 環境のネットワーク設定で VPC エンドポイントをトラブルシューティングする方法を教えてください。
完全にプライベートな AWS Elastic Beanstalk 環境でネットワークの問題をトラブルシューティングしたいと考えています。
簡単な説明
完全プライベート環境では以下の設定が行われ、同じ Amazon Virtual Private Cloud (Amazon VPC) 内からのみウェブアプリケーションにアクセスできます。
- ロードバランサーの可視性: プライベート
- ロードバランサーのサブネット: 両方ともプライベートサブネット
- インスタンスのパブリック IP: 無効
- インスタンスのサブネット: 両方ともプライベートサブネット
VPC 上のすべての通信は、設定された VPC エンドポイント経由で行われます。また、VPC 内のすべての通信は、ルートテーブル内のローカルルート経由で行われます。ネットワーク設定が原因で環境で発生する可能性のある一般的なエラーは次のとおりです。
- Amazon Elastic Compute Cloud (Amazon EC2) インスタンスは Elastic Beanstalk との通信に失敗しました。通信障害は、VPC の設定上の問題、または EC2 インスタンスの障害が原因です。VPC 設定を確認して、環境を再起動してみてください。
- インスタンスは、許可されたコマンドタイムアウト時間内に応答しませんでした。
解決方法
完全にプライベートな Elastic Beanstalk 環境を作成する場合は、必ず次の設定が行われていることを確認してください。
- VPC には、異なるアベイラビリティーゾーンに 2 つ以上のプライベートサブネットが必要です。
- VPC では DNS ホスト名と DNS 解決が有効になっている必要があります。これらを有効にすると、パブリックサービスエンドポイントをインターフェイスの VPC エンドポイントにマッピングする DNS エントリが VPC に追加されます。
- VPC 外の AWS のサービスと VPC 内のインスタンスがこれらのエンドポイントを介して通信できるように、VPC エンドポイントを作成する必要があります。
VPC エンドポイントを確認する
標準の Elastic Beanstalk 環境を正常に作成するには、次の VPC エンドポイントが必要です。
- com.amazonaws.your-region.elasticbeanstalk (Elastic Beanstalk インターフェイスエンドポイント)
- com.amazonaws.your-region.elasticbeanstalk-health (Elastic Beanstalk ヘルスインターフェイスエンドポイント)
- com.amazonaws.your-region.cloudformation (AWS CloudFormation インターフェイスエンドポイント)
- com.amazonaws.your-region.logs (ログインターフェイスエンドポイント)
- com.amazonaws.your-region.sqs (Amazon Simple Queue Service (Amazon SQS) インターフェイスエンドポイント)
- com.amazonaws.your-region.s3 (Amazon Simple Storage Service (Amazon S3) ゲートウェイエンドポイント)
64 ビット Amazon Linux 2 で動作する Docker プラットフォームで実行される環境には、次の追加の VPC エンドポイントが必要です。
- com.amazonaws.your-region.ecr.dkr
- com.amazonaws.your-region.ecr.api
64 ビット Amazon Linux 2 上で動作する Amazon Elastic Container Service (Amazon ECS) プラットフォームで実行される環境には、次の追加の VPC エンドポイントが必要です。
- com.amazonaws.your-region.ecs
- com.amazonaws.your-region.ecr.api
- com.amazonaws.your-region.ecr.dkr
注: お使いの Docker 環境と Multi-Docker 環境が正しく動作することを確認するには、プライベート Docker イメージを提供してください。
セキュリティグループを確認する
インターフェイス VPC エンドポイントを作成するときは、VPC エンドポイントのサブネットとセキュリティグループを選択する必要があります。必ずプライベートサブネットと適切なインバウンドルールを持つセキュリティグループを選択してください。
インターフェイス VPC エンドポイントにアタッチされているセキュリティグループには、ポート 443 (HTTPS) のインバウンドルールが必要です。
インバウンドルール:
タイプ | プロトコル | ポート範囲 | 送信元 |
HTTPS | TCP | 443 | クライアントの IP アドレス (注記を参照) |
注: VPC エンドポイントを経由する受信トラフィックを保護するには、ソースにクライアントの IP アドレスまたはネットワークのみを指定することを検討してください。
また、インスタンスに関連付けられているセキュリティグループが、次のように、ロードバランサーのセキュリティグループからの HTTP トラフィックを許可していることを確認します。
インバウンドルール:
タイプ | プロトコル | ポート範囲 | 送信元 |
HTTP | TCP | 80 | ロードバランサーのセキュリティグループ |
ロードバランサーに関連付けられているセキュリティグループが、次のように、インバウンドルール内のすべての HTTP トラフィックを許可していることを確認します。
インバウンドルール:
タイプ | プロトコル | ポート範囲 | 送信元 |
HTTP | TCP | 80 | 0.0.0.0/0 |
注: 前述のセキュリティグループのいずれについても、送信トラフィックを制限する必要はありません。
ルートテーブルエントリを確認する
ゲートウェイエンドポイントを作成するときに、ルートテーブルを選択できます。必ず VPC のプライベートサブネットに関連付けられているルートテーブルを選択してください。プライベートサブネットに関連付けられているルートテーブルには、各ゲートウェイ VPC エンドポイントのルートが必要です。例えば、Amazon Simple Storage Service (Amazon S3) または Amazon DynamoDB に関連付けられたゲートウェイ VPC エンドポイントごとにルートが必要です。
ルートテーブルのエントリ:
送信先 | ターゲット |
172.xx.x.0/16 | ローカル |
pl-63a5xxx | vpce-04xxx |
VPC エンドポイントポリシーを確認する
VPC エンドポイントポリシーでは、Elastic Beanstalk 環境がサービスにプライベートで通信できるようにする必要があります。インターフェイスまたはゲートウェイエンドポイントを作成するときに、エンドポイントポリシーをアタッチできます。エンドポイントポリシーは、どの AWS プリンシパルが VPC エンドポイントを使用してエンドポイントサービスにアクセスできるかを制御します。AWS プリンシパルには、AWS アカウント、AWS Identity and Access Management (IAM) ユーザー、IAM ロールが含まれます。エンドポイントの作成時にエンドポイントポリシーを指定しない場合、エンドポイントはデフォルトでフルアクセス権を持ちます。
以下は、Elastic Beanstalk を使用する場合に S3 エンドポイントに必要な S3 ゲートウェイ VPC エンドポイントの最小ポリシーの例です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EBBucketAccess", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:DeleteObject", "s3:PutBucketPolicy", "s3:PutObjectVersionAcl" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*", "arn:aws:s3:::cloudformation*/*" ] } ] }
関連情報

関連するコンテンツ
- 質問済み 5年前lg...
- 質問済み 5年前lg...
- 質問済み 8日前lg...
- 質問済み 5年前lg...