Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Temukan pola integrasi layanan di Step Functions

Mode fokus
Temukan pola integrasi layanan di 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.

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

AWS Step Functions terintegrasi dengan layanan langsung di Amazon States Language. Anda dapat mengendalikan layanan AWS ini menggunakan tiga pola integrasi layanan:

  • Memanggil layanan dan memungkinkan Step Functions maju ke status berikutnya segera setelah mendapat respons HTTP.

  • Memanggil layanan dan membuat Step Functions menunggu tugas untuk diselesaikan.

  • Memanggil layanan dengan token tugas dan membuat Step Functions menunggu sampai token tersebut dikembalikan dengan muatan.

Masing-masing pola integrasi layanan ini dikendalikan oleh cara Anda membuat URI di bidang "Resource" ketentuan tugas Anda.

Untuk informasi tentang konfigurasi AWS Identity and Access Management (IAM) untuk layanan terintegrasi, lihat. Bagaimana Step Functions menghasilkan kebijakan IAM untuk layanan terintegrasi

Dukungan pola integrasi

Alur Kerja Standar dan Alur Kerja Ekspres mendukung integrasi yang sama tetapi bukan pola integrasi yang sama.

  • Alur Kerja Standar mendukung integrasi Respons Permintaan. Layanan tertentu mendukung Run a Job (.sync), atau Wait for Callback (. waitForTaskToken), dan keduanya dalam beberapa kasus. Lihat tabel integrasi yang dioptimalkan berikut untuk detailnya.

  • Alur Kerja Ekspres hanya mendukung integrasi Respons Permintaan.

Untuk membantu memutuskan di antara kedua jenis, lihatMemilih jenis alur kerja di Step Functions.

AWS Integrasi SDK dalam Step Functions

Layanan terintegrasi Minta Respons Jalankan Pekerjaan - .sync Tunggu Callback -. waitForTaskToken
Lebih dari dua ratus layanan Standar & Ekspres Tidak didukung Standar

Integrasi yang dioptimalkan dalam Step Functions

Layanan terintegrasi Minta Respons Jalankan Pekerjaan - .sync Tunggu Callback -. waitForTaskToken
Amazon API Gateway Standar & Ekspres Tidak didukung Standar
Amazon Athena Standar & Ekspres Standar Tidak didukung
AWS Batch Standar & Ekspres Standar Tidak didukung
Amazon Bedrock Standar & Ekspres Standar Standar
AWS CodeBuild Standar & Ekspres Standar Tidak didukung
Amazon DynamoDB Standar & Ekspres Tidak didukung Tidak didukung
Amazon ECS/Fargate Standar & Ekspres Standar Standar
Amazon EKS Standar & Ekspres Standar Standar
Amazon EMR Standar & Ekspres Standar Tidak didukung
Amazon EMR on EKS Standar & Ekspres Standar Tidak didukung
Amazon EMR Serverless Standar & Ekspres Standar Tidak didukung
Amazon EventBridge Standar & Ekspres Tidak didukung Standar
AWS Glue Standar & Ekspres Standar Tidak didukung
AWS Glue DataBrew Standar & Ekspres Standar Tidak didukung
AWS Lambda Standar & Ekspres Tidak didukung Standar
AWS Elemental MediaConvert Standar & Ekspres Standar Tidak didukung
Amazon SageMaker AI Standar & Ekspres Standar Tidak didukung
Amazon SNS Standar & Ekspres Tidak didukung Standar
Amazon SQS Standar & Ekspres Tidak didukung Standar
AWS Step Functions Standar & Ekspres Standar Standar

Minta Tanggapan

Ketika Anda menentukan layanan di string "Resource" status tugas Anda, dan Anda hanya menyediakan sumber daya, Step Functions akan menunggu respons HTTP lalu maju ke status berikutnya. Step Functions tidak akan menunggu tugas selesai.

Contoh berikut menunjukkan cara Anda dapat memublikasikan topik Amazon SNS.

"Send message to SNS": { "Type":"Task", "Resource":"arn:aws:states:::sns:publish", "Parameters": { "TopicArn":"arn:aws:sns:us-east-1:123456789012:myTopic", "Message":"Hello from Step Functions!" }, "Next":"NEXT_STATE" }

Contoh ini mereferensikan API Publikasikan Amazon SNS. Alur kerja berlangsung ke status berikutnya setelah memanggil API Publish.

Tip

Untuk menerapkan alur kerja sampel yang menggunakan pola integrasi layanan Request Response, lihat Mengintegrasikan layanan dalam tutorial memulai dalam panduan ini, atau dalam modul Request Response di Workshop. AWS Step Functions

Jalankan Tugas (.sync)

Untuk layanan terintegrasi seperti AWS Batch dan Amazon ECS, Step Functions dapat menunggu permintaan selesai sebelum melanjutkan ke status berikutnya. Untuk membuat Step Functions menunggu, tentukan bidang "Resource" di ketentuan status tugas Anda dengan sufiks .sync yang ditambahkan setelah URI sumber daya.

Misalnya, saat mengirimkan AWS Batch pekerjaan, gunakan "Resource" bidang dalam definisi mesin status seperti yang ditunjukkan dalam contoh ini.

"Manage Batch task": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/testJobDefinition", "JobName": "testJob", "JobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/testQueue" }, "Next": "NEXT_STATE" }

Saat bagian .sync ditambahkan ke sumber daya Amazon Resource Name (ARN), ini berarti bahwa Step Functions menunggu tugas selesai. Setelah memanggil AWS Batch submitJob, alur kerja dijeda. Ketika tugas selesai, Step Functions maju ke status berikutnya. Untuk informasi lebih lanjut, lihat AWS Batch contoh proyek:Kelola pekerjaan batch dengan AWS Batch and Amazon SNS.

Jika tugas menggunakan ini (.sync) pola integrasi layanan dibatalkan, dan Step Functions tidak dapat membatalkan tugas, Anda mungkin dikenakan biaya tambahan dari layanan terintegrasi. Sebuah tugas dapat dibatalkan jika:

  • Eksekusi mesin status dihentikan.

  • Cabang tatus Paralel yang berbeda gagal dengan kesalahan yang tidak tertangkap.

  • Perulangan dari Status Peta gagal dengan kesalahan yang tidak tertangkap.

Step Functions akan membuat upaya terbaik untuk membatalkan tugas. Misalnya, jika tugas states:startExecution.sync Step Functions dibatalkan, tugas tersebut akan memanggil tindakan API StopExecution Step Functions. Namun, ada kemungkinan bahwa Step Functions akan dapat membatalkan tugas. Alasan tersebut termasuk, namun tidak terbatas pada:

  • Peran eksekusi IAM Anda tidak memiliki izin untuk membuat panggilan API yang sesuai.

  • Terjadi pemadaman layanan sementara.

Saat Anda menggunakan pola integrasi .sync layanan, Step Functions menggunakan polling yang menggunakan kuota dan peristiwa yang ditetapkan untuk memantau status pekerjaan. Untuk .sync pemanggilan dalam akun yang sama, Step Functions menggunakan EventBridge peristiwa dan polling APIs yang Anda tentukan dalam status. Task Untuk .sync pemanggilan lintas akun, Step Functions hanya menggunakan polling. Misalnya, untukstates:StartExecution.sync, Step Functions melakukan polling pada DescribeExecutionAPI dan menggunakan kuota yang Anda tetapkan.

Tip

Untuk menerapkan alur kerja contoh yang menggunakan pola integrasi.sync, lihat Menjalankan Job (.sync) di Workshop. AWS Step Functions

Untuk melihat daftar dukungan layanan terintegrasi yang menunggu tugas selesai (.sync), lihat Mengintegrasikan layanan dengan Step Functions.

catatan

Integrasi layanan yang menggunakan .waitForTaskToken pola .sync atau memerlukan izin IAM tambahan. Untuk informasi selengkapnya, lihat Bagaimana Step Functions menghasilkan kebijakan IAM untuk layanan terintegrasi.

Dalam beberapa kasus, Anda mungkin ingin Step Functions melanjutkan alur kerja Anda sebelum pekerjaan selesai sepenuhnya. Anda dapat mencapai ini dengan cara yang sama seperti saat menggunakan pola integrasi Tunggu Callback dengan Task Token layanan. Untuk melakukan ini, berikan token tugas ke pekerjaan Anda, lalu kembalikan menggunakan panggilan SendTaskFailureAPI SendTaskSuccessatau. Step Functions akan menggunakan data yang Anda berikan dalam panggilan tersebut untuk menyelesaikan tugas, berhenti memantau pekerjaan, dan melanjutkan alur kerja.

Tunggu Callback dengan Task Token

Tugas panggilan balik menyediakan cara untuk menjeda alur kerja sampai token tugas dikembalikan. Tugas mungkin perlu menunggu persetujuan seseorang, mengintegrasikan dengan pihak ketiga, atau memanggil sistem warisan. Untuk tugas seperti ini, Anda dapat menjeda Step Functions hingga eksekusi alur kerja mencapai kuota layanan satu tahun (lihat,Kuota terkait throttling status), dan menunggu proses eksternal atau alur kerja selesai. Untuk situasi ini Step Functions memungkinkan Anda meneruskan token tugas ke integrasi layanan AWS SDK, dan juga ke beberapa integrasi layanan yang Dioptimalkan. Tugas akan terjeda sampai menerima token tugas yang dikembalikan dengan panggilan SendTaskSuccess atau SendTaskFailure.

Jika Task status yang menggunakan token tugas panggilan balik habis, token acak baru akan dihasilkan. Anda dapat mengakses token tugas dari objek Context.

catatan

Token tugas harus berisi setidaknya satu karakter, dan tidak dapat melebihi 1024 karakter.

Untuk menggunakan .waitForTaskToken integrasi AWS SDK, API yang Anda gunakan harus memiliki bidang parameter untuk menempatkan token tugas.

catatan

Anda harus meneruskan token tugas dari kepala sekolah dalam akun yang sama. AWS Token tidak akan berfungsi jika Anda mengirimnya dari kepala sekolah di akun yang berbeda. AWS

Tip

Untuk menerapkan contoh alur kerja yang menggunakan pola integrasi token tugas callback, lihat Callback with Task Token di Workshop. AWS Step Functions

Untuk melihat daftar dukungan layanan terintegrasi yang menunggu token tugas (.waitForTaskToken), lihat Mengintegrasikan layanan dengan Step Functions.

Contoh Token Tugas

Dalam contoh ini, alur kerja Step Functions perlu diintegrasikan dengan layanan mikro eksternal untuk melakukan pemeriksaan kredit sebagai bagian dari alur kerja persetujuan. Step Functions memublikasikan pesan Amazon SQS yang mencakup token tugas sebagai bagian dari pesan. Sistem eksternal terintegrasi dengan Amazon SQS, dan menarik pesan dari antrean. Ketika selesai, sistem eksternal mengembalikan hasil dan token tugas asli. Step Functions kemudian dilanjutkan dengan alur kerjanya.

Tugas SQS menunggu token tugas untuk dikembalikan

Bidang "Resource" dari ketentuan tugas yang mereferensikan Amazon SQS termasuk .waitForTaskToken yang ditambahkan ke akhir.

"Send message to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken", "Parameters": { "QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue", "MessageBody": { "Message": "Hello from Step Functions!", "TaskToken.$": "$$.Task.Token" } }, "Next": "NEXT_STATE" }

Hal tersebut memberitahu Step Functions untuk menjeda dan menunggu token tugas. Bila Anda menentukan sumber daya menggunakan .waitForTaskToken, token tugas dapat diakses di bidang "Parameters" ketentuan status Anda dengan penunjukan jalur khusus ($$.Task.Token). Awal $$. menunjukkan bahwa jalur mengakses objek Context, dan mendapatkan token tugas untuk tugas saat ini dalam eksekusi yang sedang berjalan.

Setelah selesai, layanan eksternal akan memanggil SendTaskSuccess atau SendTaskFailure termasuk dengan taskToken. Baru setelah itu alur kerja berlanjut ke status berikutnya.

catatan

Untuk menghindari menunggu tanpa batas waktu jika proses gagal untuk mengirim token tugas dengan SendTaskSuccess atau SendTaskFailure, lihat Konfigurasikan Batas Waktu Heartbeat untuk Tugas Menunggu.

Dapatkan Token dari objek Context

Objek Context adalah objek JSON internal yang berisi informasi tentang eksekusi Anda. Seperti input status, objek konteks dapat diakses dengan jalur dari bidang "Parameters" selama eksekusi. Ketika diakses dari dalam ketentuan tugas, objek konteks mencakup informasi tentang eksekusi tertentu, termasuk token tugas.

{ "Execution": { "Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName", "Input": { "key": "value" }, "Name": "executionName", "RoleArn": "arn:aws:iam::123456789012:role...", "StartTime": "2019-03-26T20:14:13.192Z" }, "State": { "EnteredTime": "2019-03-26T20:14:13.192Z", "Name": "Test", "RetryCount": 3 }, "StateMachine": { "Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName", "Name": "name" }, "Task": { "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W" } }

Anda dapat mengakses token tugas dengan menggunakan jalur khusus dari dalam bidang "Parameters" dari ketentuan tugas Anda. Untuk mengakses input atau objek Konteks, pertama-tama Anda menentukan bahwa parameter akan menjadi jalur dengan menambahkan a .$ ke nama parameter. Berikut ini menentukan node dari kedua input dan objek Context dalam "Parameters" spesifikasi.

"Parameters": { "Input.$": "$", "TaskToken.$": "$$.Task.Token" },

Pada kedua kasus, menambahkan .$ ke nama parameter memberitahu Step Functions untuk mengharapkan jalur. Pada kasus pertama, "$" adalah jalur yang mencakup seluruh input. Dalam kasus kedua, $$. menentukan bahwa jalur akan mengakses objek Context, dan $$.Task.Token menetapkan parameter ke nilai token tugas dalam objek Context dari eksekusi yang sedang berjalan.

Dalam contoh Amazon SQS, .waitForTaskToken di bidang "Resource" memberitahu Step Functions untuk menunggu token tugas yang akan dikembalikan. Parameter "TaskToken.$": "$$.Task.Token" meneruskan token tersebut sebagai bagian dari pesan Amazon SQS.

"Send message to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken", "Parameters": { "QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue", "MessageBody": { "Message": "Hello from Step Functions!", "TaskToken.$": "$$.Task.Token" } }, "Next": "NEXT_STATE" }

Untuk informasi selengkapnya tentang objek Konteks, lihat Mengakses data eksekusi dari objek Context di Step Functions di Memproses input dan output bagian dalam panduan ini.

Konfigurasikan Batas Waktu Heartbeat untuk Tugas Menunggu

Tugas yang menunggu token tugas akan menunggu hingga eksekusi mencapai kuota layanan satu tahun (lihat, Kuota terkait throttling status). Untuk menghindari eksekusi yang macet, Anda dapat mengonfigurasi interval batas waktu heartbeat dalam ketentuan mesin status Anda. Gunakan bidang HeartbeatSeconds untuk menentukan interval batas waktu.

{ "StartAt": "Push to SQS", "States": { "Push to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken", "HeartbeatSeconds": 600, "Parameters": { "MessageBody": { "myTaskToken.$": "$$.Task.Token" }, "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/push-based-queue" }, "ResultPath": "$.SQS", "End": true } } }

Dalam ketentuan mesin status ini, tugas mendorong pesan ke Amazon SQS dan menunggu proses eksternal untuk memanggil kembali dengan token tugas yang disediakan. Bidang "HeartbeatSeconds": 600 menetapkan interval batas waktu heartbeat hingga 10 menit. Tugas akan menunggu token tugas yang akan dikembalikan dengan salah satu tindakan API ini:

Jika tugas menunggu tidak menerima token tugas yang valid dalam periode 10 menit, tugas tersebut akan gagal dengan nama kesalahan States.Timeout.

Untuk informasi selengkapnya, lihat Buat contoh pola callback dengan Amazon SQS, Amazon SNS, dan Lambda proyek sampel tugas panggilan balik.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.