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 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 danMeneruskan parameter ke API layanan di Step Functions.
Fitur utama dari integrasi Amazon ECS/Fargate yang Dioptimalkan
-
Pola Jalankan Tugas (.sync) integrasi didukung.
ecs:runTask
dapat mengembalikan respons HTTP 200, tetapi memilikiFailures
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 denganAmazonECS.Unknown
kesalahan.
Amazon ECS/Fargate yang dioptimalkan APIs
-
RunTask
memulai tugas baru menggunakan ketentuan tugas yang ditentukan.
Parameter di Step Functions 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
Untuk mempelajari tentang mengintegrasikan dengan AWS layanan di Step Functions, lihat Integrasi layanan danMeneruskan parameter ke API layanan di Step Functions.
Anda dapat menggunakan overrides
untuk menimpa perintah default untuk kontainer, dan meneruskan input ke tugas-tugas Amazon ECS Anda. Lihat ContainerOverride
. 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.
{
"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
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 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 (Amazon ECS) yang dimulai oleh Step Functions, terlepas dari Kebijakan IAM "*"
.
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.