Pelajari tentang Aktivitas 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.

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:

  1. Buat aktivitas menggunakan konsol tersebut, atau dengan menggunakan CreateActivity. Perhatikan ARN aktivitas.

  2. Referensikan bahwa ARN di status tugas aktivitas dalam ketentuan mesin status dan atur TimeoutSeconds.

  3. Implementasikan pekerja aktivitas yang melakukan polling untuk bekerja menggunakan GetActivityTask, yang mereferensikan ARN aktivitas tersebut.

  4. Gunakan SendTaskHeartbeat secara berkala dalam waktu yang Anda tetapkan di HeartbeatSeconds dalam ketentuan tugas mesin status Anda untuk menjaga tugas dari waktu habis.

  5. Mulai eksekusi mesin status Anda.

  6. 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.

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

require_relative

Jalur relatif ke kode pekerja aktivitas contoh berikut.

region

AWS Wilayah aktivitas Anda.

workers_count

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.

pollers_count

Jumlah thread untuk poller Anda. 10 hingga 20 thread harusnya sudah cukup untuk sebagian besar implementasi.

heartbeat_delay

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: