Status tugas - AWS Step Functions

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

Status tugas

Status Task ("Type": "Task") mewakili satu unit kerja yang dilakukan oleh mesin status. Tugas melakukan pekerjaan dengan menggunakan aktivitas atau AWS Lambda fungsi, dengan mengintegrasikan dengan dukungan lain Layanan AWS, atau dengan menjalankan API pihak ketiga, seperti Stripe.

Bahasa Negara Amazon mewakili tugas dengan menyetel jenis status ke Task dan dengan menyediakan tugas dengan Nama Sumber Daya Amazon (ARN) aktivitas, fungsi Lambda, atau titik akhir API pihak ketiga. Definisi status Tugas berikut memanggil fungsi Lambda bernama. HelloFunction

"Lambda Invoke": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:HelloFunction:$LATEST" }, "End": true }

Tipe tugas

Step Functions mendukung jenis tugas berikut yang dapat Anda tentukan dalam definisi status Tugas:

Anda menentukan jenis tugas dengan memberikan ARN di Resource bidang definisi status Tugas. Contoh berikut menunjukkan sintaks Resource bidang. Semua jenis Tugas kecuali yang memanggil API pihak ketiga, gunakan sintaks berikut. Untuk informasi tentang sintaks Tugas HTTP, lihatPanggil API pihak ketiga.

Dalam definisi status Tugas Anda, ganti teks yang dicetak miring dalam sintaks berikut dengan informasi khusus sumber daya. AWS

arn:partition:service:region:account:task_type:name

Daftar berikut menjelaskan komponen individual dalam sintaks ini:

  • partitionadalah AWS Step Functions partisi yang digunakan, paling umumaws.

  • servicemenunjukkan yang Layanan AWS digunakan untuk menjalankan tugas, dan dapat menjadi salah satu dari nilai-nilai berikut:

    • states untuk aktivitas.

    • lambda untuk Fungsi Lambda. Jika Anda mengintegrasikan dengan yang lain Layanan AWS, misalnya, Amazon SNS atau Amazon DynamoDB, gunakan atau. sns dynamodb

  • regionadalah kode AWS Region di mana aktivitas Step Functions atau jenis mesin status, fungsi Lambda, atau AWS sumber daya lainnya telah dibuat.

  • accountadalah Akun AWS ID di mana Anda telah mendefinisikan sumber daya.

  • task_type adalah tipe tugas untuk dijalankan. Ini bisa menjadi salah satu nilai berikut:

  • name adalah nama sumber daya terdaftar (nama aktivitas, nama fungsi Lambda, atau tindakan API layanan).

catatan

Step Functions tidak mendukung referensi ARN di seluruh partisi atau wilayah. Misalnya, tidak aws-cn dapat memanggil tugas di aws partisi, dan sebaliknya.

Bagian berikut menyediakan detail selengkapnya tentang setiap tipe tugas.

Aktifitas

Aktivitas menunjukkan pekerja (proses atau thread), diimplementasikan dan di-hosting oleh Anda, yang melakukan tugas tertentu. Aktivitas hanya didukung oleh Alur Kerja standar, tidak Alur Kerja Ekspres.

Aktivitas ARN Resource menggunakan sintaksis berikut.

arn:partition:states:region:account:activity:name
catatan

Anda harus membuat aktivitas dengan Step Functions (menggunakan aksi API CreateActivity, atau konsol Step Functions) sebelum digunakan pertama kali.

Untuk informasi selengkapnya tentang cara membuat aktivitas dan mengimplementasikan pekerja, lihat Aktivitas.

Fungsi Lambda

Tugas Lambda menjalankan fungsi menggunakan. AWS Lambda Untuk menentukan fungsi Lambda, gunakan ARN dari fungsi Lambda di bidang Resource.

Bergantung pada jenis integrasi (Integrasi yang dioptimalkan atau integrasi AWS SDK) yang Anda gunakan untuk menentukan fungsi Lambda, sintaks bidang fungsi Lambda Anda bervariasi. Resource

Sintaks Resource bidang berikut adalah contoh integrasi yang dioptimalkan dengan fungsi Lambda.

"arn:aws:states:::lambda:invoke"

Sintaks Resource bidang berikut adalah contoh integrasi AWS SDK dengan fungsi Lambda.

"arn:aws:states:::aws-sdk:lambda:invoke"

Definisi Task status berikut menunjukkan contoh integrasi yang dioptimalkan dengan fungsi Lambda bernama. HelloWorld

"LambdaState": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:function:HelloWorld:$LATEST" }, "Next": "NextState" }

Setelah fungsi Lambda yang ditentukan di Resource bidang selesai, outputnya dikirim ke status yang diidentifikasi di Next bidang (” “). NextState

A didukung Layanan AWS

Ketika Anda mereferensikan sumber daya yang terhubung, Step Functions langsung memanggil tindakan API layanan yang didukung. Tentukan layanan dan tindakan di bidang Resource.

ARN Resource layanan yang terhubung menggunakan sintaksis berikut.

arn:partition:states:region:account:servicename:APIname
catatan

Untuk membuat koneksi sinkron ke sumber daya yang terhubung, tambahkan.sync ke entri APIname di ARN. Untuk informasi selengkapnya, lihat Bekerja dengan layanan yang lain.

Sebagai contoh:

{ "StartAt": "BATCH_JOB", "States": { "BATCH_JOB": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobDefinition": "preprocessing", "JobName": "PreprocessingBatchJob", "JobQueue": "SecondaryQueue", "Parameters.$": "$.batchjob.parameters", "RetryStrategy": { "attempts": 5 } }, "End": true } } }

Bidang status tugas

Selain bidang status umum, status Task mempunyai bidang berikut.

Resource (Wajib)

URI, terutama ARN yang secara unik mengidentifikasi tugas tertentu untuk mengeksekusi.

Parameters (Opsional)

Digunakan untuk menyampaikan informasi ke tindakan API dari sumber daya yang terhubung. Parameter dapat menggunakan campuran JSON statis dan JsonPath. Untuk informasi selengkapnya, lihat Meneruskan parameter ke API layanan.

Credentials (Opsional)

Menentukan peran target peran eksekusi mesin negara harus mengambil alih sebelum memanggil yang ditentukan. Resource Atau, Anda juga dapat menentukan nilai JsonPath atau fungsi intrinsik yang menyelesaikan ARN peran IAM saat runtime berdasarkan input eksekusi. Jika Anda menentukan nilai JsonPath, Anda harus awalan dengan notasi. $.

Untuk contoh menggunakan bidang ini di Task negara bagian, lihatContoh bidang Kredensial status tugas. Untuk contoh menggunakan bidang ini untuk mengakses AWS sumber daya lintas akun dari mesin status Anda, lihatTutorial: Mengakses sumber daya lintas akun AWS.

catatan

Bidang ini didukung oleh Tipe tugas yang menggunakan fungsi Lambda dan layanan yang didukung AWS.

ResultPath (Opsional)

Menentukan tempat (dalam input) untuk meletakkan hasil eksekusi tugas yang ditentukan di Resource. Input kemudian difilter sebagaimana ditentukan oleh bidang OutputPath (jika ada) sebelum digunakan sebagai output status. Untuk informasi selengkapnya, lihat Pemrosesan Input dan Output.

ResultSelector (Opsional)

Teruskan koleksi pasangan nilai kunci, tempat nilai-nilai bersifat statis atau dipilih dari hasil. Untuk informasi selengkapnya, lihat ResultSelector.

Retry (Opsional)

Array objek yang disebut Retriers, yang menentukan kebijakan percobaan ulang jika status menemukan kesalahan waktu aktif. Untuk informasi selengkapnya, lihat Nyatakan contoh mesin menggunakan Coba Ulang dan menggunakan Catch.

Catch (Opsional)

Array objek, disebut Catch yang menentukan status fallback. Status ini dijalankan jika status menemukan kesalahan waktu aktif dan kebijakan percobaan ulang habis atau tidak ditentukan. Untuk informasi selengkapnya, lihat Status Fallback.

TimeoutSeconds (Opsional)

Menentukan waktu maksimum aktivitas atau tugas dapat berjalan sebelum waktu habis dengan States.Timeout kesalahan dan gagal. Nilai batas waktu harus positif, bilangan bulat bukan nol. Nilai default-nya adalah 99999999.

Hitungan batas waktu dimulai setelah tugas dimulai, misalnya, kapan ActivityStarted atau LambdaFunctionStarted peristiwa dicatat dalam riwayat peristiwa eksekusi. Untuk Aktivitas, penghitungan dimulai saat GetActivityTask menerima token dan ActivityStarted dicatat dalam riwayat peristiwa eksekusi.

Saat tugas dimulai, Step Functions menunggu respons sukses atau gagal dari tugas atau pekerja aktivitas dalam TimeoutSeconds durasi yang ditentukan. Jika pekerja tugas atau aktivitas gagal merespons dalam waktu ini, Step Functions menandai eksekusi alur kerja sebagai gagal.

TimeoutSecondsPath (Opsional)

Jika Anda ingin memberikan nilai waktu habis dinamis dari input status menggunakan jalur referensi, gunakan TimeoutSecondsPath. Ketika diselesaikan, jalur referensi harus memilih bidang yang nilainya adalah bilangan bulat positif.

catatan

Suatu Task negara tidak dapat mencakup keduanya TimeoutSeconds danTimeoutSecondsPath.

HeartbeatSeconds (Opsional)

Menentukan frekuensi sinyal detak jantung yang dikirim oleh pekerja aktivitas selama pelaksanaan tugas. Detak jantung menunjukkan bahwa suatu tugas masih berjalan dan perlu lebih banyak waktu untuk menyelesaikannya. Detak jantung mencegah aktivitas atau tugas dari waktu habis dalam durasi. TimeoutSeconds

HeartbeatSecondsharus berupa nilai bilangan bulat positif, bukan nol kurang dari nilai TimeoutSeconds bidang. Nilai default-nya adalah 99999999. Jika lebih banyak waktu dari detik yang ditentukan berlalu antara detak jantung dari tugas, status Tugas gagal dengan kesalahan. States.Timeout

Untuk Aktivitas, penghitungan dimulai saat GetActivityTask menerima token dan ActivityStarted dicatat dalam riwayat peristiwa eksekusi.

HeartbeatSecondsPath (Opsional)

Jika Anda ingin memberikan nilai heartbeat secara dinamis dari input status menggunakan jalur referensi, gunakan HeartbeatSecondsPath. Ketika diselesaikan, jalur referensi harus memilih bidang yang nilainya adalah bilangan bulat positif.

catatan

Suatu Task negara tidak dapat mencakup keduanya HeartbeatSeconds danHeartbeatSecondsPath.

Status Task harus mengatur salah satu bidang End ke true jika status mengakhiri eksekusi, atau harus memberikan status di bidang Next yang dijalankan ketika status Task selesai.

Contoh definisi status tugas

Contoh berikut menunjukkan bagaimana Anda dapat menentukan definisi status Tugas berdasarkan kebutuhan Anda.

Interval waktu habis dan heartbeat status tugas

Ini adalah praktik terbaik untuk mengatur nilai waktu habis dan interval heartbeat untuk aktivitas yang berjalan lama. Hal ini dapat dilakukan dengan menentukan nilai batas waktu dan heartbeat, atau dengan mengaturnya secara dinamis.

Contoh notifikasi waktu habis dan heartbeat statis

Saat HelloWorld selesai, status berikutnya (di sini disebut NextState) akan dijalankan.

Jika tugas ini gagal diselesaikan dalam waktu 300 detik, atau tidak mengirim notifikasi heartbeat dalam interval 60 detik, tugas ditandai sebagai failed.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "HeartbeatSeconds": 60, "Next": "NextState" }

Contoh notifikasi waktu habis dan heartbeat tugas dinamis

Dalam contoh ini, ketika AWS Glue pekerjaan selesai, status berikutnya akan dijalankan.

Jika tugas ini gagal diselesaikan dalam interval yang ditetapkan secara dinamis oleh AWS Glue pekerjaan, tugas ditandai sebagaifailed.

"GlueJobTask": { "Type": "Task", "Resource": "arn:aws:states:::glue:startJobRun.sync", "Parameters": { "JobName": "myGlueJob" }, "TimeoutSecondsPath": "$.params.maxTime", "Next": "NextState" }

Contoh bidang Kredensial status tugas

Menentukan peran IAM hard-code ARN

Contoh berikut menentukan peran IAM target yang harus diasumsikan oleh peran eksekusi mesin status untuk mengakses fungsi Lambda lintas akun bernama. Echo Dalam contoh ini, peran target ARN ditentukan sebagai nilai hard-code.

{ "StartAt": "Cross-account call", "States": { "Cross-account call": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole" }, "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo" }, "End": true } } }

Menentukan JSONPath sebagai peran IAM ARN

Contoh berikut menentukan nilai JsonPath, yang akan menyelesaikan peran IAM ARN saat runtime.

{ "StartAt": "Lambda", "States": { "Lambda": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn.$": "$.roleArn" }, ... } } }

Menentukan fungsi intrinsik sebagai peran IAM ARN

Contoh berikut menggunakan fungsi States.Formatintrinsik, yang menyelesaikan peran IAM ARN saat runtime.

{ "StartAt": "Lambda", "States": { "Lambda": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)" }, ... } } }