ECS サービスのロードバランサー設定が InvalidParameterException で変更できないときの対処方法

2023.09.01

困っていた内容

Fargate 起動タイプで ECS タスクを実行しています。 ECS サービスのロードバランサー設定を変更するため、AWS CLI のupdate-serviceコマンドを実行しましたがInvalidParameterExceptionというエラーが表示されます。どうしたら良いでしょうか。

$ aws ecs update-service \
  --cluster hato-ecs-cluster \
  --service hato-ecs-service \
  --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/hato-targetgroup/1234567890123456,containerName=hato-container,containerPort=80

An error occurred (InvalidParameterException) when calling the UpdateService operation: The provided target group arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/hato-targetgroup/1234567890123456 has target type 
instance, which is incompatible with the awsvpc network mode specified in the task definition.

どう対応すればいいの?

ターゲットグループの「ターゲットの種類」を確認してください。

Fargate 起動タイプの場合、ネットワークモードはawsvpcです。awsvpc ネットワークモードのタスクを含む ECS サービスは、ターゲットグループの種類にipを指定する必要があり、instanceを指定したターゲットグループの設定はInvalidParameterExceptionとなります。

現時点でターゲットグループの種類は、ターゲットグループ作成時にのみ指定可能なため、ターゲットグループを作り直すか、既存のipのターゲットグループを指定してください。

※ AWS マネジメントコンソールで指定する場合の例

参考資料

awsvpc ネットワークモードを使用するタスクを含むサービスの場合、サービスのターゲットグループを作成するときに、instance ではなく、ip をターゲットタイプとして選択する必要があります 。

Fargate を使用する場合、awsvpcネットワークモードが必要です。

ターゲットグループを作成した後で、ターゲットの種類を変更することはできません。

ターゲットグループを作成した後で、ターゲットタイプを変更することはできません。