

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Jalankan tugas Amazon ECS atau Fargate dengan Step Functions
<a name="connect-ecs"></a>

Pelajari cara mengintegrasikan Step Functions dengan Amazon ECS atau Fargate untuk menjalankan dan mengelola tugas. Di Amazon ECS, tugas adalah unit dasar perhitungan. Tugas didefinisikan oleh definisi tugas yang menentukan bagaimana wadah Docker harus dijalankan, termasuk image kontainer, batas CPU dan memori, konfigurasi jaringan, dan parameter lainnya. Halaman ini mencantumkan tindakan Amazon ECS API yang tersedia dan memberikan petunjuk tentang cara meneruskan data ke tugas Amazon ECS menggunakan Step Functions.

Untuk mempelajari tentang mengintegrasikan dengan AWS layanan di Step Functions, lihat [Integrasi layanan ](integrate-services.md) dan[Meneruskan parameter ke API layanan di Step Functions](connect-parameters.md).

**Fitur utama ECS/Fargate integrasi Amazon yang Dioptimalkan**  
Pola [Jalankan Tugas (.sync)](connect-to-resource.md#connect-sync) integrasi didukung.
`ecs:runTask`dapat mengembalikan respons HTTP 200, tetapi memiliki `Failures` bidang yang tidak kosong sebagai berikut:  
**Request Response**: Kembalikan respons dan jangan gagal tugas, yang sama dengan integrasi yang tidak dioptimalkan.
**Jalankan Token Job atau Tugas**: Jika `Failures` bidang yang tidak kosong ditemukan, tugas gagal dengan `AmazonECS.Unknown` kesalahan.

## Amazon yang dioptimalkan ECS/Fargate APIs
<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) memulai tugas baru menggunakan ketentuan tugas yang ditentukan.

**Parameter Step Functions dalam dinyatakan dalam PascalCase**  
Bahkan jika API layanan asli ada di camelCase, misalnya `startSyncExecution` tindakan API, Anda menentukan parameter PascalCase, seperti:. `StateMachineArn`

## Meneruskan Data ke Tugas Amazon ECS
<a name="connect-ecs-pass-to"></a>

Untuk mempelajari tentang mengintegrasikan dengan AWS layanan di Step Functions, lihat [Integrasi layanan ](integrate-services.md) dan[Meneruskan parameter ke API layanan di Step Functions](connect-parameters.md).

Anda dapat menggunakan `overrides` untuk menimpa perintah default untuk kontainer, dan meneruskan input ke tugas-tugas Amazon ECS Anda. Lihat [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html). Dalam contoh, kita telah menggunakan JsonPath untuk meneruskan nilai ke `Task` dari input ke `Task` status.

Berikut ini mencakup status `Task` yang menjalankan tugas Amazon ECS dan menunggunya sampai selesai.

```
{
 "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
    }
  }
}
```

Baris `Command` di `ContainerOverrides` meneruskan perintah dari input status ke kontainer.

Dalam contoh mesin state sebelumnya, diberikan masukan berikut, masing-masing perintah akan diteruskan sebagai penimpaan kontainer:

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

Berikut ini mencakup status `Task` yang menjalankan tugas Amazon ECS, dan kemudian menunggu token tugas untuk dikembalikan. Lihat [Tunggu Callback dengan Task Token](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
      }
   }
}
```

## Kebijakan IAM untuk memanggil Amazon ECS/ AWS Fargate
<a name="ecs-iam"></a>

Contoh templat berikut menunjukkan cara AWS Step Functions menghasilkan kebijakan IAM berdasarkan sumber daya dalam definisi mesin status Anda. Untuk informasi selengkapnya, lihat [Bagaimana Step Functions menghasilkan kebijakan IAM untuk layanan terintegrasi](service-integration-iam-templates.md) dan [Temukan pola integrasi layanan di Step Functions](connect-to-resource.md).

Karena nilai untuk `TaskId` tidak diketahui sampai tugas diajukan, Step Functions membuat kebijakan `"Resource": "*"` lebih istimewa.

**catatan**  
Anda hanya dapat menghentikan tugas Amazon Elastic Container Service (Amazon ECS) yang dimulai oleh Step Functions, terlepas dari Kebijakan IAM `"*"`.

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

*Sumber daya statis*

```
{
    "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"
            ]
        }
    ]
}
```

*Sumber daya dinamis*

```
{
    "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) ]

*Sumber daya statis*

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

*Sumber daya dinamis*

****  

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

------

Jika tugas Amazon ECS terjadwal Anda memerlukan penggunaan peran eksekusi tugas, peran tugas, atau penggantian peran tugas, Anda harus menambahkan `iam:PassRole` izin untuk setiap peran eksekusi tugas, peran tugas, atau penggantian peran tugas ke peran IAM CloudWatch Peristiwa entitas pemanggil, yang dalam hal ini adalah Step Functions.