Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pelajari tentang Aktivitas di Step Functions
Dengan aktivitas Step Functions, Anda dapat mengatur tugas di mesin status tempat pekerjaan aktual dilakukan oleh pekerja yang berjalan di luar Step Functions. Misalnya Anda dapat menjalankan program pekerja di Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS) Service Elastic Container (Amazon ECS), atau bahkan perangkat seluler.
Gambaran Umum
Dalam AWS Step Functions, aktivitas adalah cara untuk mengaitkan kode yang berjalan di suatu tempat (dikenal sebagai pekerja aktivitas) dengan tugas tertentu di mesin status. Anda dapat membuat aktivitas menggunakan konsol Step Functions, atau dengan memanggil CreateActivity
. Ini menyediakan Amazon Resource Name (ARN) untuk status tugas Anda. Gunakan ARN ini untuk melakukan poll pada status tugas untuk bekerja di pekerja aktivitas Anda.
catatan
Aktivitas tidak memiliki versi dan diharapkan kompatibel dengan versi yang lebih lama. Jika Anda harus membuat perubahan yang tidak kompatibel dengan versi yang lebih lama, buat aktivitas baru di Step Functions menggunakan nama yang unik.
Pekerja aktivitas dapat berupa aplikasi yang berjalan pada EC2 instance Amazon, AWS Lambda
fungsi, perangkat seluler: aplikasi apa pun yang dapat membuat koneksi HTTP, dihosting di mana saja. Ketika Step Functions mencapai status tugas aktivitas, alur kerja menunggu agar pekerja aktivitas melakukan polling untuk tugas. Pekerja aktivitas melakukan polling pada Step Functions dengan menggunakan GetActivityTask
, dan mengirim ARN untuk aktivitas terkait. GetActivityTask
mengembalikan respons termasuk input
(string input JSON untuk tugas) dan taskToken
(pengidentifikasi unik untuk tugas). Setelah pekerja aktivitas menyelesaikan pekerjaannya, laporan keberhasilan atau kegagalan dapat diberikan menggunakan SendTaskSuccess
atau SendTaskFailure
. Kedua panggilan ini menggunakan taskToken
yang disediakan oleh GetActivityTask
untuk mengaitkan hasilnya dengan tugas tersebut.
APIs Terkait dengan Tugas Kegiatan
Step Functions menyediakan APIs untuk membuat dan mencantumkan aktivitas, meminta tugas, dan untuk mengelola aliran mesin status Anda berdasarkan hasil pekerja Anda.
Berikut ini adalah Step Functions APIs yang terkait dengan kegiatan:
catatan
Polling untuk tugas aktivitas dengan GetActivityTask
dapat menyebabkan latensi dalam beberapa implementasi. Lihat Menghindari latensi saat melakukan polling untuk tugas kegiatan.
Menunggu tugas aktivitas Selesai
Konfigurasikan berapa lama status menunggu dengan mengatur TimeoutSeconds
dalam ketentuan tugas. Agar tugas tetap aktif dan menunggu, kirim heartbeat secara berkala dari pekerja aktivitas Anda menggunakan SendTaskHeartbeat
dalam waktu yang dikonfigurasi di TimeoutSeconds
. Dengan mengonfigurasi durasi waktu habis yang panjang dan mengirim heartbeat secara aktif, aktivitas di Step Functions dapat menunggu hingga satu tahun untuk menyelesaikan eksekusi.
Misalnya, jika Anda memerlukan alur kerja yang menunggu outcome proses yang panjang, lakukan hal berikut:
-
Buat aktivitas menggunakan konsol tersebut, atau dengan menggunakan
CreateActivity
. Perhatikan ARN aktivitas. -
Referensikan bahwa ARN di status tugas aktivitas dalam ketentuan mesin status dan atur
TimeoutSeconds
. -
Implementasikan pekerja aktivitas yang melakukan polling untuk bekerja menggunakan
GetActivityTask
, yang mereferensikan ARN aktivitas tersebut. -
Gunakan
SendTaskHeartbeat
secara berkala dalam waktu yang Anda tetapkan diHeartbeatSeconds
dalam ketentuan tugas mesin status Anda untuk menjaga tugas dari waktu habis. -
Mulai eksekusi mesin status Anda.
-
Mulai proses pekerja aktivitas Anda.
Eksekusi berhenti di status tugas aktivitas dan menunggu pekerja aktivitas Anda untuk melakukan polling untuk tugas. Setelah taskToken
disediakan untuk pekerja aktivitas Anda, alur kerja Anda akan menunggu untuk SendTaskSuccess
atau SendTaskFailure
untuk memberikan status. Jika eksekusi tidak menerima salah satu dari hal ini atau panggilan SendTaskHeartbeat
sebelum waktu dikonfigurasi dalam TimeoutSeconds
, eksekusi akan gagal dan riwayat eksekusi akan berisi peristiwa ExecutionTimedOut
.
Contoh: Pekerja Aktivitas di Ruby
Contoh kode pekerja aktivitas berikut mengimplementasikan pola konsumen-produsen dengan jumlah thread yang dapat dikonfigurasi untuk poller dan pekerja aktivitas. Utas poller terus-menerus melakukan polling panjang tugas aktivitas di Step Functions. Saat tugas aktivitas diambil, tugas tersebut akan diteruskan melalui antrean pemblokiran terbatas untuk diambil oleh thread aktivitas.
-
Untuk informasi lebih lanjut, lihat Referensi API AWS SDK for Ruby.
-
Untuk mengunduh kode ini dan sumber daya terkait, lihat repositori step-functions-ruby-activity-worker
di. GitHub
Kode berikut adalah titik masuk utama untuk contoh ini pekerja aktivitas Ruby.
require_relative '
../lib/step_functions/activity
' credentials = Aws::SharedCredentials.new region = 'us-west-2
' activity_arn = 'ACTIVITY_ARN
' activity = StepFunctions::Activity.new( credentials: credentials, region: region, activity_arn: activity_arn, workers_count: 1, pollers_count: 1, heartbeat_delay: 30 ) # Start method block contains your custom implementation to process the input activity.start do |input| { result: :SUCCESS, echo: input['value'] } end
Anda harus menentukan ARN dan wilayah aktivitas Anda. Kode ini mencakup default yang dapat Anda atur, seperti jumlah utas dan penundaan detak jantung.
Item | Deskripsi |
---|---|
|
Jalur relatif ke kode pekerja aktivitas contoh berikut. |
|
AWS Wilayah aktivitas Anda. |
|
Jumlah thread untuk pekerja aktivitas Anda. 10 hingga 20 thread harusnya sudah cukup untuk sebagian besar implementasi. Semakin lama waktu yang dibutuhkan aktivitas yang untuk memproses, semakin banyak thread yang dibutuhkan. Sebagai perkiraan, kalikan jumlah aktivitas proses per detik dengan latensi pemrosesan aktivitas persentil ke-99, dalam detik. |
|
Jumlah thread untuk poller Anda. 10 hingga 20 thread harusnya sudah cukup untuk sebagian besar implementasi. |
|
Penundaan dalam detik antara heartbeat. |
input |
Logika implementasi aktivitas Anda. |
Langkah Berikutnya
Untuk tampilan yang lebih detail dalam pembuatan mesin status yang menggunakan pekerja aktivitas, lihat: