Amazon Elastic Compute Cloud (Amazon EC2) コンテナインスタンスで実行される Amazon Elastic Container Service (Amazon ECS) タスクに、静的 IP アドレスまたは Elastic IP アドレスを使用したいです。
解決策
静的 IP アドレスまたは Elastic IP アドレスを Amazon ECS タスクに直接追加することはできません。
代わりに、次のいずれかの手順を実行します。
- アウトバウンドトラフィックの静的 IP アドレス用に NAT ゲートウェイを作成します。
注: ダウンストリームユーザーが静的 IP アドレスを必要とする場合は、コンテナインスタンスを NAT ゲートウェイのあるプライベートサブネットに配置します。次に、IP アドレスの許可リストで NAT ゲートウェイの IP アドレスを使用します。
- インバウンドトラフィックの静的 IP アドレスでは、ネットワークモードにホストとブリッジを使用します。次に、タスクをホストする Amazon EC2 コンテナインスタンスに Elastic IP アドレスを関連付けます。
タスクが複数のコンテナインスタンスに分散している場合は、次の解決策を実行してインバウンドトラフィックに静的 IP アドレスを使用します。
注: 次の解決策は、ネットワークモードがホスト、ブリッジ、awsvpc のいずれかである Amazon ECS 最適化 Amazon Linux Amazon マシンイメージ (AMI) を使用するタスクを対象としています。
ターゲットグループを作成する
ターゲットグループを作成します。[ターゲットタイプの選択] で [インスタンス] を選択し、[プロトコル] で [TCP] を選択します。
重要: サービスのタスク定義で awsvpc ネットワークモードを使用している場合は、[ターゲットタイプの選択] で [IP アドレス] を選択します。
Network Load Balancer がターゲットグループを使用するように設定する
注: ロードバランサーのセキュリティグループルールでは、コンテナインスタンスまたはタスクの Elastic ネットワークインターフェイスへのアウトバウンドトラフィックを、トラフィックおよびヘルスチェック用のポートで許可する必要があります。かかるルールでは、クライアントからのインバウンドトラフィックをリスナー用ポートで許可する必要もあります。動的ポートマッピングを設定する場合、セキュリティグループはエフェメラルポート (通常は 32768 ~ 65535) でのアウトバウンドトラフィックを許可する必要があります。
ターゲットグループを Network Load Balancer にアタッチし、次の設定を行います。
- [IP アドレスタイプ] で [IPv4] を選択します。
- [VPC] では、コンテナインスタンスの仮想プライベートクラウド (VPC) を選択します。
(オプション) Network Load Balancer ノードでクロスゾーン負荷分散を有効にして、すべてのアベイラビリティーゾーンの登録済みターゲットにトラフィックを分散します。
Amazon ECS サービスを作成する
Amazon ECS サービスを作成し、クラスターに登録されている EC2 インスタンスでタスクを起動します。サービス定義で作成した Network Load Balancer とターゲットグループを指定します。
コンテナインスタンスまたはタスクのネットワークインターフェイス用セキュリティグループでは、トラフィックポートとヘルスチェック用のポートでロードバランサーからのインバウンドトラフィックを許可する必要があります。また、動的ポートマッピングを使用する場合は、セキュリティグループはロードバランサーからのインバウンドトラフィックを、エフェメラルポート範囲で許可する必要があります。
サービスでタスクが開始すると、Amazon ECS はサービス定義内のコンテナインスタンスまたは IP アドレスとポートをターゲットグループに登録します。次に、ロードバランサーはトラフィックをそのコンテナインスタンスまたは IP アドレスにルーティングします。ロードバランサーの静的 IP アドレスをタスクの固定エントリポイントとして使用します。
関連情報
負荷分散により、Amazon ECS サービスのトラフィックを分散する
Amazon ECS で Network Load Balancer を使用する