説明
外部からのリクエストを複数のタスクに分散する ECS サービスには、適切なトラフィックの入口が必要です。ロードバランサーを使わずタスクのアドレスを直接指定すると、タスクの置き換えや障害への対応が難しくなることがあります。
想定される影響
リクエストが特定のタスクに集中したり、終了したタスクに送られたりして、サービスの可用性が低下するおそれがあります。
対処方法
必要に応じてサービスの LoadBalancers に対象グループ、コンテナー名、ポートを指定し、リスナーとヘルスチェックを設定してください。リクエストを受け付けないワーカー用サービスでは、ロードバランサーが不要な場合もあります。
例
この抜粋では sample-app のポート 80 を対象グループに接続します。タスク定義のコンテナー名とポートに合わせてください。
変更前
yaml
Resources:
ECSService:
Type: AWS::ECS::Service
Properties:
Cluster: !Ref ECSCluster
TaskDefinition: !Ref ECSTaskDefinition
DesiredCount: 2
変更後
yaml
Resources:
ECSService:
Type: AWS::ECS::Service
Properties:
Cluster: !Ref ECSCluster
TaskDefinition: !Ref ECSTaskDefinition
DesiredCount: 2
LoadBalancers:
- TargetGroupArn: !Ref TargetGroup
ContainerName: sample-app
ContainerPort: 80