📝

Step Functions から ECS RunTask で Fargate を使用する時の注意点

2022/03/07に公開

Step Functions から ECS RunTask で Fargate を使用する際、以下のエラーにハマったので、注意点と解決方法を紹介します。

エラー

Ecs.InvalidParameterException
原因

Network Configuration must be provided when networkMode 'awsvpc' is specified. (Service: Ecs, Status Code: 400, Request ID: aaaaa-bbbbb-ccccc-11111-22222)

原因

以下が原因です。

Network Configuration must be provided when networkMode 'awsvpc' is specified.

Step Functions コンソールで、ECS RunTask を選択した際、デフォルトでは以下の設定が記述されています。

{
  "LaunchType": "FARGATE",
  "Cluster": "arn:aws:ecs:REGION:ACCOUNT_ID:cluster/MyECSCluster",
  "TaskDefinition": "arn:aws:ecs:REGION:ACCOUNT_ID:task-definition/MyTaskDefinition:1"
}

上記に、クラスターやタスク定義の ARN を入力するだけではエラーとなりました。

解決策

エラーメッセージに記載されている通り、ネットワーク構成を追記しました。

{
  "LaunchType": "FARGATE",
  "Cluster": "arn:aws:ecs:REGION:ACCOUNT_ID:cluster/MyECSCluste",
  "TaskDefinition": "arn:aws:ecs:REGION:ACCOUNT_ID:task-definition/MyTaskDefinition:1",
  "NetworkConfiguration": {
    "AwsvpcConfiguration": {
      "AssignPublicIp": "ENABLED" | "DISABLED",
      "SecurityGroups": [
        "security-group-id"
      ],
      "Subnets": [
        "subnet-id"
      ]
    }
  }
}

上記で実行した結果、タスクが起動することを確認できました。

ちょっとした注意点

Step Functions のパラメーターは、パスカルケースで記載する必要があります。

公式ドキュメントより

Step Functions 内のパラメータは、PascalCase の中で表されます。ネイティブサービスAPIが camelCase であってもそれはかわりません。

CLI や SDK などで、キャメルケースだとしても、Step Functions ではパスカルケースで記述する必要があるようです。
地味にハマったので気を付けましょう。

まとめ

今回は、Step Functions から ECS RunTask で Fargate を使用する時の注意点を紹介しました。
参考になれば幸いです。

Discussion