Application Load Balancer を使用して、Amazon Elastic Container Service (Amazon ECS) および、単一インスタンスで複数のタスクコピーを実行するターゲットグループに対し、動的ポートマッピングを設定しようとしています。
簡単な説明
新しい Application Load Balancer と新しい Amazon ECS サービスを作成する際に、動的ポートマッピングを設定できます。または、AWS コマンドラインインターフェイス (AWS CLI) を使用すると、既存の Application Load Balancer と Amazon ECS サービスに対する動的ポートマッピングを設定できます。
動的ポートマッピングに Network Load Balancer を使用する方法については、「Amazon ECS で Network Load Balancer を使用する」を参照してください。
注: Application Load Balancer は、動的ポートマッピングを使用して同じコンテナインスタンス上の単一サービスから複数のタスクを実行します。Classic Load Balancer では、同じインスタンスでタスクの複数のコピーを実行することはありません。Classic Load Balancer を使用する場合は、コンテナインスタンスのポート番号を静的にマッピングする必要があります。
解決策
注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
新しい Application Load Balancer を使用して新しい Amazon ECS サービス用の動的ポートマッピングを設定する
Amazon ECS 用の Application Load Balancer およびターゲットグループを作成します。
Amazon ECS コンソールを開き、作成または更新する必要があるタスク定義でホストポートを 0 に設定します。次に、コンテナの port mappings タスク定義パラメータを、アプリケーションに合わせて設定します。ネットワークモード host および awsvpc では、動的ホストポートマッピングをサポートしていません。
ロードバランサーからコンテナインスタンスへのインバウンドトラフィックを受け入れるルールを追加します。セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) では、Application Load Balancer からインスタンスへのトラフィックをエフェメラルポート範囲で受け入れる必要があります。エフェメラルポート範囲の詳細については、「PortMapping」を参照してください。
次に、Amazon ECS コンソールを使用して、新しい Amazon ECS サービスが作成した Application Load Balancer を使用するように設定します。
AWS CLI を使用して既存の Application Load Balancer と Amazon ECS サービスに動的ポートマッピングを設定する
重要: サービスタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートは、タスク定義に保持する必要があります。詳細については、「サービス負荷分散」を参照してください。
既存のサービスを更新するには、AWS CLI コマンド update-service を使用して設定を変更するか、既存の Amazon ECS サービス用の Application Load Balancer を追加します。
aws ecs update-service --cluster example-cluster-name --service example-service-name --load-balancers "{\"containerName\": \"example-container-name\", \"containerPort\": example-container-port-number, \"targetGroupArn\": \"example-target-group-arn\"}"
注: example-cluster-name、example-service-name、example-container-name をそれぞれ実際の値に置き換えてください。example-container-port-number を実際のコンテナのポート番号に、example-target-group-arn をターゲットグループの Amazon リソースネーム (ARN) に置き換えてください。
ポートマッピングが正しく設定されていることを確認する
次の手順を実行します。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
- ナビゲーションペインで [ターゲットグループ] を選択します。
- ターゲットグループのハイパーリンク名を選択します。
- [ターゲット] タブを参照し、作成したサービスのタスクが正しいポートを使用していることを確認します。
動的ポートマッピングが正しく設定されている場合は、ターゲットグループに登録されているターゲットおよび、タスクに割り当てられたポートが表示されます。次のエフェメラルポート範囲内の登録済みターゲットに関するタスクも表示されます。
- 49153 ~ 65535
- 32768 ~ 61000
関連情報
Elastic Load Balancing について