Jalankan tugas Amazon ECS atau Fargate dengan Step Functions - AWS Step Functions

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

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

Untuk belajar tentang berintegrasi dengan AWS servicesin Step Functions, lihat Integrasi layanan dan. Meneruskan parameter ke layanan API di Step Functions

Fitur utama integrasi ECS Amazon/Fargate yang Dioptimalkan
  • Pola Jalankan Tugas (.sync) integrasi didukung.

  • ecs:runTaskdapat mengembalikan respons HTTP 200, tetapi memiliki Failures bidang yang tidak kosong sebagai berikut:

    • Request Response: Kembalikan respons dan jangan gagal tugas. Ini sama dengan tidak ada optimasi.

    • Jalankan Token Job atau Tugas: Jika Failures bidang yang tidak kosong ditemukan, tugas gagal dengan AmazonECS.Unknown kesalahan.

ECSAmazon/Fargate yang didukung APIs

Parameter di Step Functions dinyatakan dalam PascalCase

Bahkan jika layanan asli API adacamelCase, misalnya API tindakanstartSyncExecution, Anda menentukan parameter di PascalCase, seperti:StateMachineArn.

Meneruskan Data ke ECS Tugas Amazon

Untuk belajar tentang berintegrasi dengan AWS servicesin Step Functions, lihat Integrasi layanan dan. Meneruskan parameter ke layanan API di Step Functions

Anda dapat menggunakan overrides untuk mengganti perintah default untuk penampung, dan meneruskan input ke ECS tugas Amazon Anda. Lihat ContainerOverride. Dalam contoh, kita telah menggunakan JsonPath untuk meneruskan nilai ke Task dari input ke Task status.

Berikut ini mencakup Task status yang menjalankan ECS tugas Amazon dan menunggu 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", "Parameters": { "Cluster": "cluster-arn", "TaskDefinition": "job-id", "Overrides": { "ContainerOverrides": [ { "Name": "container-name", "Command.$": "$.commands" } ] } }, "End": true } } }

Baris "Command.$": "$.commands" di ContainerOverrides meneruskan perintah dari input status ke kontainer.

Untuk contoh sebelumnya, masing-masing perintah akan diteruskan sebagai pembatalan kontainer jika input untuk eksekusi adalah sebagai berikut.

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

Berikut ini mencakup Task status yang menjalankan ECS tugas Amazon, dan kemudian menunggu token tugas dikembalikan. Lihat Tunggu Callback dengan Task Token.

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

IAMkebijakan untuk memanggil AmazonECS/AWS Fargate

Contoh template berikut menunjukkan bagaimana AWS Step Functions menghasilkan IAM kebijakan berdasarkan sumber daya dalam definisi mesin negara Anda. Untuk informasi selengkapnya, silakan lihat Bagaimana Step Functions menghasilkan IAM kebijakan untuk layanan terintegrasi dan Temukan pola integrasi layanan di Step Functions.

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 (AmazonECS) yang dimulai oleh Step Functions, terlepas dari "*" IAM kebijakan tersebut.

Run a Job (.sync)

Sumber daya statis

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]: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]]: [[accountId]]: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]]: [[accountId]]: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]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] } ] }

Sumber daya dinamis

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

Jika ECS tugas Amazon 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 CloudWatch Peristiwa IAM entitas pemanggil, yang dalam hal ini adalah Step Functions.