はじめに
旬は逃していますが、1か月ほど前に、ECSでIPv6のアドレスのみが使えるアップデートが発表されました。
ただ、こちらを実現しようとすると、結構引っかかる部分があったため、備忘録もかねてまとめました。
調査の背景は折りたたみ
ALB等を使わずにFargateでECSを利用しようとすると、
- 通信させようと思った場合にパブリックIPv4アドレスがコンテナ1つ1つに必要となってしまう
という課題がありました。
これの何が課題かというと、パブリックIPv4アドレスは有料化されており、パブリックIP1つにつき月額約500円の費用が掛かるためです。NATゲートウェイ等を立ててもいいのですが、それはそれで費用掛かりますし。ただインターネット通信させたいだけなのに。
個人的には、パブリックIPv4アドレスの有料化のアナウンスが入ってから、このアップデートをずっと待っていたのですが、1年半かけてようやく発表された、という感じです。
まあその1年半の間にAWSへの興味が薄れてアップデートを追えてなかったとかいう話は置いておいて
VPC:IPv6専用サブネットを追加
ECSをIPv6アドレスのみで使用するにあたり、最初にやることは専用のサブネットを作ることです。IPv6のみのアドレスが存在するサブネットをECSで指定することで、IPv6アドレスのみのコンテナになります。
サブネット作成時に、「IPv4 CIDRがありません」を選択すると、IPv6のみのアドレスのサブネットが作成できます。(事前に、VPCの設定でIPv6アドレスは割り当てておく必要があります)
EFS:IPv6アドレスのマウントポイントを追加
ECSでボリュームとしてEFSを利用する場合は、EFSのマウントターゲットとしてIPv6アドレスでアクセスできるようにしておく必要があります。昔作ったものはIPv4のみとなっていました。変更もできそうではありましたが、既存への影響が怖かったので新規で作成しました。IPアドレスタイプは、とりあえずデュアルスタックにしとくのが無難な気がします。
ECR:デュアルスタックエンドポイントを使用
こちらは設定とかではありませんが、ECSでイメージの指定先をECRとする場合は、デュアルスタックエンドポイントを使用する必要があります。
ECRの画面に、URIをコピーしてくれるリンクがあるのですが、これを使用するとデュアルスタックエンドポイントにならないので注意が必要です。

ECS
タスク定義
ここまでくれば、あとはECSの設定のみです。
タスク定義では、イメージURIのところをデュアルスタックエンドポイントを使用するようにします。
サービス
サービスの作成のネットワークの設定で、IPv6のサブネットのみを使用するように設定変更します。パブリックIPの割当(=パブリックIPv4アドレスの割当)はチェックを外しておきましょう。
動作確認
ここまでの設定を実施して、サービスを起動した際に、タスクのネットワーキングの項目にIPv6アドレスのみが使用されていることが確認できれば完了です!
おわりに
参考になった部分がありましたら幸いです。私もECSにおけるIPv6アドレスは使い始めたばかりなので、また何か気づいたことがあれば記事にしていきます。




