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 (AmazonEC2), Amazon Elastic Container Service (AmazonECS), atau bahkan perangkat seluler.

Gambaran Umum

Masuk AWS Step Functions Aktivitas adalah cara untuk mengaitkan kode yang berjalan di suatu tempat (dikenal sebagai pekerja aktivitas) dengan tugas tertentu di mesin negara. Anda dapat membuat aktivitas menggunakan konsol Step Functions, atau dengan memanggil CreateActivity. Ini menyediakan Amazon Resource Name (ARN) untuk status tugas Anda. Gunakan ini ARN untuk melakukan polling status tugas untuk pekerjaan 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 instans Amazon, dan AWS Lambda fungsi, perangkat seluler: aplikasi apa pun yang dapat membuat HTTP koneksi, 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 Step Functions dengan menggunakanGetActivityTask, dan mengirimkan ARN untuk aktivitas terkait. GetActivityTaskmengembalikan respon termasuk input (string JSON input untuk tugas) dan taskToken(identifier 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.

APIsTerkait 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. Catat aktivitasnyaARN.

  2. Referensikan bahwa ARN dalam status tugas aktivitas dalam definisi dan set mesin status AndaTimeoutSeconds.

  3. Menerapkan pekerja aktivitas yang melakukan polling untuk pekerjaan dengan menggunakanGetActivityTask, merujuk aktivitas tersebut. ARN

  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. Ketika 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 aktivitas ARN dan wilayah 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: