Polling untuk status pekerjaan dengan Lambda dan AWS Batch - AWS Step Functions

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

Polling untuk status pekerjaan dengan Lambda dan AWS Batch

Contoh proyek ini menciptakan sebuah AWS Batch poller pekerjaan. Ini mengimplementasikan sebuah AWS Step Functions mesin negara yang menggunakan AWS Lambda untuk membuat loop Wait status yang memeriksa AWS Batch pekerjaan.

Proyek sampel ini membuat dan mengonfigurasi semua sumber daya sehingga alur kerja Step Functions Anda akan mengirimkan AWS Batch pekerjaan, dan akan menunggu pekerjaan itu selesai sebelum berakhir dengan sukses.

catatan

Anda juga dapat menerapkan pola ini tanpa menggunakan fungsi Lambda. Untuk informasi tentang pengendalian AWS Batch langsung, lihatMengintegrasikan layanan dengan Step Functions.

Proyek sampel ini menciptakan mesin status, dua fungsi Lambda, dan AWS Batch mengantri, dan mengonfigurasi izin terkaitIAM.

Untuk informasi lebih lanjut tentang caranya AWS Step Functions dapat mengontrol lainnya AWS layanan, lihatMengintegrasikan layanan dengan Step Functions.

Langkah 1: Buat mesin negara

  1. Buka Konsol Step Functions dan pilih Buat mesin status.

  2. Ketik Job Poller di kotak pencarian, lalu pilih Job Poller dari hasil pencarian yang dikembalikan.

  3. Pilih Next untuk melanjutkan.

  4. Pilih Jalankan demo untuk membuat read-only dan ready-to-deploy alur kerja, atau pilih Bangun di atasnya untuk membuat definisi mesin status yang dapat diedit yang dapat Anda buat dan kemudian terapkan.

    Proyek contoh ini menyebarkan sumber daya berikut:

    • Tiga fungsi Lambda untuk mengirimkan AWS Batch pekerjaan, dapatkan status saat ini dari yang dikirimkan AWS Batch pekerjaan, dan status penyelesaian pekerjaan akhir.

    • Sesi AWS Batch pekerjaan

    • Sesi AWS Step Functions mesin status

    • Terkait AWS Identity and Access Management (IAM) peran

    Gambar berikut menunjukkan grafik alur kerja untuk proyek sampel Job Poller:

    Grafik alur kerja dari proyek sampel Job Poller.
  5. Pilih Gunakan templat untuk melanjutkan pilihan Anda.

Langkah selanjutnya tergantung pada pilihan Anda sebelumnya:

  1. Jalankan demo - Anda dapat meninjau mesin status sebelum membuat proyek hanya-baca dengan sumber daya yang digunakan oleh AWS CloudFormation untuk Anda Akun AWS.

    Anda dapat melihat definisi mesin status, dan ketika Anda siap, pilih Deploy dan jalankan untuk menyebarkan proyek dan membuat sumber daya.

    Penyebaran dapat memakan waktu hingga 10 menit untuk membuat sumber daya dan izin. Anda dapat menggunakan tautan Stack ID untuk memantau kemajuan AWS CloudFormation.

    Setelah penerapan selesai, Anda akan melihat mesin status baru Anda di konsol.

  2. Bangun di atasnya - Anda dapat meninjau dan mengedit definisi alur kerja. Anda mungkin perlu menetapkan nilai untuk placeholder dalam proyek sampel sebelum mencoba untuk menjalankan alur kerja kustom Anda.

catatan

Biaya standar mungkin berlaku untuk layanan yang diterapkan ke akun Anda.

Langkah 2: Jalankan mesin negara

Setelah semua sumber daya disediakan dan digunakan, kotak dialog Mulai eksekusi ditampilkan dengan contoh input yang mirip dengan berikut ini.

{ "jobName": "my-job", "jobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/SampleJobDefinition-343f54b445d5312:1", "jobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/SampleJobQueue-4d9d696031e1449", "wait_time": 60 }
catatan

wait_time menginstruksikan status Wait untuk loop setiap 60 detik.

  • Dalam kotak dialog Mulai eksekusi, lakukan hal berikut:

    1. (Opsional) Masukkan nama eksekusi khusus untuk mengganti default yang dihasilkan.

      Non- ASCII nama dan logging

      Step Functions menerima nama untuk mesin negara, eksekusi, aktivitas, dan label yang berisi ASCII non-karakter. Karena karakter seperti itu tidak akan berfungsi dengan Amazon CloudWatch, kami sarankan hanya menggunakan ASCII karakter sehingga Anda dapat melacak metrik. CloudWatch

    2. (Opsional) Dalam Input kotak, masukkan nilai masukan sebagaiJSON. Anda dapat melewati langkah ini jika Anda menjalankan demo.

    3. Pilih Mulai Eksekusi.

    Konsol Step Functions akan mengarahkan Anda ke halaman Detail Eksekusi di mana Anda dapat memilih status dalam tampilan Grafik untuk menjelajahi informasi terkait di Detail langkah panel.

    Misalnya, untuk melihat perubahan status AWS Batch pekerjaan dan hasil perulangan eksekusi Anda, pilih tab Output.

    Gambar berikut menunjukkan grafik status eksekusi dalam tampilan Grafik. Ini juga menunjukkan output eksekusi untuk langkah yang dipilih di Output tab.

    Output eksekusi untuk langkah yang dipilih bernama Get Final Job Status dalam tampilan Grafik.

Contoh Kode Mesin Status

Mesin negara bagian dalam proyek sampel ini terintegrasi dengan AWS Lambda untuk mengirimkan AWS Batch pekerjaan. Jelajahi contoh mesin status ini untuk melihat bagaimana Step Functions mengontrol Lambda dan AWS Batch.

Untuk informasi lebih lanjut tentang caranya AWS Step Functions dapat mengontrol lainnya AWS layanan, lihatMengintegrasikan layanan dengan Step Functions.

{ "Comment": "An example of the Amazon States Language that runs an AWS Batch job and monitors the job until it completes.", "StartAt": "Submit Job", "States": { "Submit Job": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPol-SubmitJobFunction-jDaYcl4cx55r", "ResultPath": "$.guid", "Next": "Wait X Seconds" }, "Wait X Seconds": { "Type": "Wait", "SecondsPath": "$.wait_time", "Next": "Get Job Status" }, "Get Job Status": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "Next": "Job Complete?", "InputPath": "$.guid", "ResultPath": "$.status" }, "Job Complete?": { "Type": "Choice", "Choices": [ { "Variable": "$.status", "StringEquals": "FAILED", "Next": "Job Failed" }, { "Variable": "$.status", "StringEquals": "SUCCEEDED", "Next": "Get Final Job Status" } ], "Default": "Wait X Seconds" }, "Job Failed": { "Type": "Fail", "Cause": "AWS Batch Job Failed", "Error": "DescribeJob returned FAILED" }, "Get Final Job Status": { "Type": "Task", "Resource": "arn:aws::lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "InputPath": "$.guid", "End": true } } }