

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Step Functions で Amazon ECS または Fargate タスクを実行する
<a name="connect-ecs"></a>

Step Functions を Amazon ECS または Fargate と統合してタスクを実行および管理する方法を説明します。Amazon ECS では、タスクは計算の基本的な単位です。タスクは、コンテナイメージ、CPU とメモリの制限、ネットワーク設定、その他のパラメータなど、Docker コンテナの実行方法を指定するタスク定義によって定義されます。このページでは、使用可能な Amazon ECS API アクションが一覧表示され、Step Functions を使用して Amazon ECS タスクにデータを渡す方法に関する手順が提供されます。

Step Functions での AWSサービスとの統合については、[ サービスとの統合](integrate-services.md)「」および「」を参照してください[Step Functions でサービス API にパラメータを渡す](connect-parameters.md)。

**最適化された Amazon ECS/Fargate 統合の主な機能**  
[ジョブの実行 (.sync)](connect-to-resource.md#connect-sync) 統合パターンがサポートされています。
`ecs:runTask` は、HTTP 200 のレスポンスを返すことができますが、次のように、空でない `Failures` フィールドがあります。  
**リクエストレスポンス**: レスポンスを返し、タスクは失敗しません。これは、非最適化統合と同じです。
**[ジョブを実行する]**: 空でない `Failures` フィールドが検出された場合、`AmazonECS.Unknown` エラーが発生し、タスクは失敗します。

## 最適化された Amazon ECS/Fargate API
<a name="connect-ecs-api"></a>
+ [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) は、指定されたタスク定義を使用して新しいタスクを開始します。

**Step Functions のパラメータは PascalCase で表されます。**  
ネイティブサービス API が、API アクション `startSyncExecution` などの camelCase である場合でも、`StateMachineArn` などの PascalCase でパラメータを指定します。

## Amazon ECS タスクにデータを渡す
<a name="connect-ecs-pass-to"></a>

Step Functions での AWSサービスとの統合については、[ サービスとの統合](integrate-services.md)「」および「」を参照してください[Step Functions でサービス API にパラメータを渡す](connect-parameters.md)。

`overrides` を使用することで、コンテナのデフォルトコマンドを上書きし、入力を Amazon ECS タスクに渡すことができます。[https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html) を参照してください。この例では、JsonPath を使用して、入力の `Task` の値を `Task` 状態に渡します。

以下には、Amazon ECS タスクを実行し、完了するまで待機する `Task` 状態が含まれます。

```
{
 "StartAt": "Run an ECS Task and wait for it to complete",
 "States": {
   "Run an ECS Task and wait for it to complete": {
     "Type": "Task",
     "Resource": "arn:aws:states:::ecs:runTask.sync",
     "Arguments": {
                "Cluster": "cluster-arn",
                "TaskDefinition": "job-id",
                "Overrides": {
                    "ContainerOverrides": [
                        {
                            "Name": "container-name",
                            "Command": "{% $state.input.commands %}" 
                        }
                    ]
                }
            },
     "End": true
    }
  }
}
```

`ContainerOverrides` の `Command` 行は状態の入力からコンテナにコマンドを渡します。​

前述のステートマシンの例では、次の入力が与えられた場合、各コマンドはコンテナのオーバーライドとして渡されます。

```
{
  "commands": [
    "test command 1",
    "test command 2",
    "test command 3"
  ]
}
```

以下には Amazon ECS タスクを実行する `Task` 状態が含まれ、その後タスクトークンが返されるまで待機します。「[タスクトークンのコールバックまで待機する](connect-to-resource.md#connect-wait-token)」を参照してください。

```
{  
   "StartAt":"Manage ECS task",
   "States":{  
      "Manage ECS task":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken",
         "Arguments":{  
            "LaunchType":"FARGATE",
            "Cluster":"cluster-arn",
            "TaskDefinition":"job-id",
            "Overrides":{  
               "ContainerOverrides":[  
                  {  
                     "Name":"container-name",
                     "Environment":[  
                        {  
                           "Name" : "TASK_TOKEN_ENV_VARIABLE",
                           "Value" : "{% $states.context.Task.Token %}"
                        }
                     ]
                  }
               ]
            }
         },
         "End":true
      }
   }
}
```

## Amazon ECS/AWS Fargate を呼び出すための IAM ポリシー
<a name="ecs-iam"></a>

次のサンプルテンプレートは、 がステートマシン定義のリソースに基づいて IAM ポリシーAWS Step Functionsを生成する方法を示しています。詳細については、「[Step Functions が統合サービスの IAM ポリシーを生成する方法](service-integration-iam-templates.md)」および「[Step Functions でサービス統合パターンを検出する](connect-to-resource.md)」を参照してください。

`TaskId` の値は、タスクが送信されるまで不明なため、Step Functions は、権限の高い `"Resource": "*"` ポリシーを作成します。

**注記**  
`"*"` IAM ポリシーにもかかわらず、Step Functions によってスタートした Amazon Elastic Container Service (Amazon ECS) タスクを停止できるだけです。

------
#### [ Run a Job (.sync) ]

静的リソース**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

動的リソース**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask",
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

静的リソース**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        }
    ]
}
```

動的リソース**

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": "*"
        }
    ]
}
```

------

スケジュールされた Amazon ECS タスクでタスク実行ロールの使用、タスクロール、またはタスクロールの上書きが必要な場合、タスク実行ロール、タスクロール、またはタスクロール上書きごとに `iam:PassRole` アクセス許可を、呼び出すエンティティ、この場合は Step Functions の CloudWatch Events IAM ロールに追加する必要があります。