Amazon ECS の動的ポートマッピングのセットアップ方法を教えてください。
最終更新日: 2022 年 4 月 26 日
Amazon Elastic Container Service (Amazon ECS) でコンテナインスタンスの動的ポートマッピングをセットアップしたいと考えています。
簡単な説明
Classic Load Balancer では、タスクの複数のコピーを同じインスタンスで実行することはできません。その代わり、Classic Load Balancer を使用するときには、コンテナインスタンスにポート番号を静的にマッピングする必要があります。ただし、Application Load Balancer は動的ポートマッピングを使用するため、同じコンテナインスタンスで 1 つのサービスから複数のタスクを実行できます。
注: Network Load Balancer は、動的ポートマッピングにも使用できます。「Network Load Balancer」と「Network Load Balancer の作成」を参照してください。
解決方法
ダイナミックポートマッピングを設定するには、次の手順を実行します。
- Application Load Balancer とターゲットグループを作成します。
重要: ターゲットグループの作成時にヘルスチェックトラフィックを正しくルーティングするには、ヘルスチェックの詳細設定を展開します。 ポートの場合、[トラフィックポート] を選択します。 - Amazon ECS コンソールを開いて、作成または更新するタスク定義のホストポートを 0 に設定します。アプリケーションのコンテナポートマッピングを必ず設定してください。
重要:host および awsvpc ネットワークモードは、動的ホストポートマッピングをサポートしていません。 - ロードバランサーからコンテナインスタンスへのインバウンドトラフィックを許可するルールを追加します。セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) は、ロードバランサーからエフェメラルポートの範囲でのインスタンスへのトラフィックを許可する必要があります。
注: エフェメラルポート範囲の詳細については、「PortMapping」を参照してください。 - Amazon ECS コンソールを開いて、作成した Application Load Balancer を使用するようにサービスを設定します 。
重要: ロードバランサーを追加できるのは、サービスの作成時のみです。サービスを作成した後、サービス定義で指定したターゲットグループの Amazon リソースネーム (ARN)、コンテナ名、またはコンテナポートを変更することはできません。既存のサービスのロードバランサー設定を追加、削除、または変更することはできません。サービスのタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートはタスク定義に残っている必要があります。詳細については、「Service load balancing (サービスロードバランシング) 」を参照してください。 - [Amazon Elastic Compute Cloud (Amazon EC2) コンソール] を開き、ナビゲーションペインで [ターゲットグループ] を選択します。ハイパーリンクされたターゲットグループの名前を選択します。作成したサービスのタスクに使用されているポートは [ターゲット] タブで確認できます。
動的ポートマッピングが正しく設定されていれば、ターゲットグループに登録済みのターゲットと、タスクに割り当てられているポートが表示されます。次のエフェメラルポートの範囲 (49153-65535 と 32768–61000) の登録済みターゲットにもタスクが表示されます。