ECS Managed Instance 上で動く ECS Task からインターネットへの通信を行う方法
※著者が独自に検証した内容を記載しております。実際の動作はお試しいただくか AWS サポートに確認を行ってください。
こちらの記事で「assignPublicIp=ENABLE が利用できるのは Fargate の awsvpc モードのみ」と書きました。
では、直接 Public IP がアタッチできない ECS Managed Instance 上の ECS Task がインターネットへ通信を行うにはどのようにすれば良いでしょうか。
最初にまとめ
① ECS Managed Instance を Private Subnet に配置し、NatGateway / Nat Instance を経由する
② IP アドレス自動割り当てを有効化した Public Subunet に ECS Managed Instance を起動し、ECS Task を host モードで起動する
① NatGateway / Nat Instance の利用
こちらは一番多く取られる構成なので詳細は書きませんが、インターネットへの経路を NatGateway / Nat Instance に向けることで外部へのエンドポイントを統一化できます。
また NatGateway / Nat Instance には Elastic IP を付与することができるため、インターネットに通信が出て行く時の送信元 IP アドレスを固定することができます。
② IP アドレス自動割り当てと host モードの利用
こちらは明確に「やれる」と書いてあるわけではありません。以下のドキュメントを読み取ると実施できる可能性があり、実際試したところ通信が可能でした。
When using a public subnet, you can optionally assign a public IP address to the Amazon ECS Managed Instance primary ENI by enabling IPv4 public addressing for the subnet. For more information, see Modify the IP addressing attributes of your subnet in Amazon VPC User Guide. A task can only have one ENI that's associated with it at a time.
パブリックサブネットを使用する場合は、サブネットのIPv4パブリックアドレスを有効にすることで、オプションでAmazon ECSマネージドインスタンスのプライマリENIにパブリックIPアドレスを割り当てることができます。詳細については、Amazon VPCユーザーガイドの「サブネットのIPアドレス属性を変更する」を参照してください。タスクには、一度に関連付けることができるENIは1つだけです。
Considerations for awsvpc mode
Assigning a public IP address to the task ENI using assignPublicIp when running a standalone task (RunTask) or creating or updating a service (CreateService/UpdateService) is not supported.
awsvpcモードに関する考慮事項
スタンドアロンタスク(RunTask)を実行するとき、またはサービスを作成または更新するとき(CreateService/UpdateService)に、AssignPublicIPを使用してタスクENIにパブリックIPアドレスを割り当てることはサポートされていません。
ただし明言されていないため、想定していない動作の可能性があります。こちらを採用する際は実際に検証する & AWS サポートへの確認をしましょう。
実際の設定
-
ECS Managed Instance を起動する Subnet にて、[アクション]-[サブネットの設定を編集]します

-
IPアドレスの自動割り当て設定のパブリック IPv4 アドレスの自動割り当てを有効化をチェックし、保存

-
ECS Task 定義で、
"networkMode": "host"に設定
"networkMode": "host",
- ECS Service の
ネットワーキング設定にて、上記パブリック IPv4 アドレスの自動割り当てを有効化した Subnet を選択します。

考慮点
- host モードで起動するため、複数の同じ ECS Task を同じ ECS Managed Instance 上で起動することができない。
- ECS Managed Instance に割り振られるパブリック IPv4 アドレスを固定できない。インスタンスが再起動すると別のパブリック IPv4 アドレスが割り振られる。
まとめ
① NatGateway / Nat Instance の利用
② IP アドレス自動割り当てと host モードの利用
| IPアドレスの固定 | インスタンスあたりに起動できる、同じ定義の ECS Task | コスト | |
|---|---|---|---|
| ① | できる | 複数の ECS Task が起動可能 | Nat Gateway / Nat Instance のコスト、運用コストが掛かる |
| ② | できない、インスタンスが入れ替わると IP も変わる | 1つの ECS Task のみ起動可能 | ECS Managed Instance 料金のみ |
Discussion