VPCとプライベートサブネット(インターネットゲートウェイが接続されていない)で作成されたインスタンスをECSクラスターに追加するのに苦労しています。
今のところ、これを行うことができた唯一の方法は、パブリックIPを追加し、NATインスタンス/ゲートウェイを構成することでした。
プライベートサブネットでECSクラスターをどのように使用しますか?
ECSとECRの両方でPrivateLinksが利用可能になりました
PrivateLinksを使用すると、パブリックIPなしでEC2インスタンスとFargate to ECSクラスターを登録して操作でき、ECRからイメージにアクセスすることもできます。
必要なエンドポイント:
EC2起動タイプ:
com.amazonaws.region.ecs-agent
com.amazonaws.region.ecs-telemetry
com.amazonaws.region.ecs
ファーゲート発射タイプ:
ECRとcloudwatchエンドポイントが必要です(後述)
EC2起動タイプ:
com.amazonaws.region.ecr.dkr
com.amazonaws.region.ecr.api
com.amazonaws.region.s3 (S3 gateway endpoint)
ファーゲート発射タイプ:
com.amazonaws.region.ecr.dkr
com.amazonaws.region.s3 (S3 gateway endpoint)
さらに、awslogsドライバーを使用する場合は、 cloudwatch endpoint も追加します。 com.amazonaws.Region.logs.
A ECSのVPCエンドポイントが利用可能になりました 。まだ正式には発表されていません(AWSのパブリックコンテナロードマップで 状態「近日公開」 )。
特に明記されていない限り、22$/month
( PrivateLinkコストus-east
の3つのアベイラビリティーゾーンの場合、トラフィックコストなし)の最低コストがかかります。
この質問に答えるのは難しいです。 ECSは、文字通りEc2インスタンスを設定に対して起動します。パブリックIPのないサブネットでそれらを起動すると、それらはありません。 NAT、VPNなど、それらに到達するためのインフラストラクチャが整っている必要があります。ECSクラスターの特別な構成はありません。 EC2インスタンスに到達できる場合は、ECSインスタンスに到達できるはずです。
ECSにインスタンスを登録するには、インスタンスからの外部接続が必要です。
プライベートサブネット上のインスタンスからの発信接続にはNATが必要ですが、パブリックIPは必要ありません。
ECSは、状態を管理するためにサービスに接続する必要がある各サーバーでコンテナーを起動します。このため、プライベートサブネット上のインスタンスは、NATを介して外部に接続する必要があります。
クラスター作成ウィザードを使用して、AmazonECSコンソールからプライベートサブネットにAmazonElastic Container Service(Amazon ECS)クラスターを作成しました。ただし、コンテナインスタンスがECSクラスターに登録されていません。この問題を解決するにはどうすればよいですか?
eCSコンソールを介してプライベートサブネットでECSクラスターを起動しているときに見た異常な動作。このクラスターで起動されたインスタンスは、プライベートサブネットに存在するのではなく、パブリックIPを保持していました。
プライベートサブネットでクラスター作成ウィザードを使用してAmazonECSコンソールでクラスターを作成した場合、コンテナーインスタンスはパブリックIPアドレスで起動されます。その結果、コンテナインスタンスはECSエンドポイントと通信できないため、ECSクラスターに登録できません。
eCSクラスターが起動されると、CloudFormationスタックが作成され、AutoScalingグループとAutoScaling LaunchConfigurationが作成されます。これには、デフォルトで次のプロパティが設定されています:associatePublicIpAddress。これにより、インスタンスの起動時にパブリックIPが関連付けられます。
パブリックIPアドレスなしでコンテナインスタンスを起動するように環境を再構成するには、次の手順を実行します。
これを行うには2つの方法があります—
1。 ECSコンソールを使用して空のクラスターを作成してから、自動スケーリンググループを手動で作成し、構成を起動して空のクラスターに接続します。しかし、クラスターを作成するための一部の人々(私のような!)にとっては長いアプローチのように思えるかもしれません。心配はいりません。いくつかのコマンドを使用して同じことを行う簡単な方法があります。これが2番目の選択肢です-
2。 ecs-cliを使用して、オプション—no-associate-public-ip-address
とecs-cli up
コマンドを提供するクラスターを作成します。以前にecs-cliを使用したことがない場合は、3つの簡単な手順で見つめることができます-
1. Open the AWS CloudFormation console.
2. In the Stack Name column, select the stack that includes the cluster that you previously created.
3. Choose the Template tab.
4. Copy the template, and then paste it into a code editor.
5. In the AWS::AutoScaling::LaunchConfiguration section of the template, change the AssociatePublicIpAddress property to false.
.。
6。 [インスタンスの詳細の構成]ページで、次の手順を実行します。
.。
e。パブリックインターネットからインスタンスにアクセスできるようにするかどうかに応じて、[パブリックIPの自動割り当て]フィールドを設定します。インスタンスにインターネットからアクセスできる必要がある場合は、[パブリックIPの自動割り当て]フィールドが[有効]に設定されていることを確認します。そうでない場合は、このフィールドを無効に設定します。
ECR、S3、ECS、およびCloudwatch for ECSタスクawslogsログドライバー(使用する場合)へのVPCエンドポイントを作成することを忘れないでください。
NATは、AWSが1時間あたりおよびGBの使用量ごとに料金を請求するため、NATを使用せずに使用するだけで多くの費用がかかる可能性があります。高可用性のために各AZに1つある場合、複数回のコストがかかります。
また、クラスターをプライベートサブネットにデプロイすることで、ECSインスタンスへのパブリックリクエストをブロックしようとしましたが、後でNATサーバー/ゲートウェイが必要であることがわかりました。これには1日約1ドルかかります。
ECSインスタンスへの危険なスニッフィング要求をブロックするだけの場合は、ECSインスタンスをパブリックサブネットに保持したまま、セキュリティグループを更新できます。 1日あたり30ドル節約できます。