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

Proyek sampel ini menciptakan poller AWS Batch pekerjaan. Ini mengimplementasikan mesin AWS Step Functions status yang digunakan 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 mengendalikan AWS Batch secara langsung, lihatMengintegrasikan layanan lain dengan Step Functions.

Proyek sampel ini membuat mesin status, dua fungsi Lambda, dan AWS Batch antrian, dan mengonfigurasi izin terkait. IAM

Untuk informasi selengkapnya tentang AWS Step Functions cara mengontrol AWS layanan lain, lihatMengintegrasikan layanan lain dengan Step Functions.

Langkah 1: Buat mesin negara bagian dan sumber daya penyediaan

  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. Step Functions mencantumkan yang AWS layanan digunakan dalam proyek sampel yang Anda pilih. Ini juga menunjukkan grafik alur kerja untuk proyek sampel. Menyebarkan proyek ini ke Anda Akun AWS atau menggunakannya sebagai titik awal untuk membangun proyek Anda sendiri. Berdasarkan cara Anda ingin melanjutkan, pilih Jalankan demo atau Bangun di atasnya.

    Proyek contoh ini menyebarkan sumber daya berikut:

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

    • Sebuah AWS Batch pekerjaan

    • Mesin AWS Step Functions negara

    • Peran terkait AWS Identity and Access Management (IAM)

    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.

  6. Lakukan salah satu hal berikut ini:

    • Jika Anda memilih Build on it, Step Functions akan membuat prototipe alur kerja, tetapi tidak menyebarkan sumber daya dalam definisi alur kerja, sehingga Anda dapat terus membangun prototipe alur kerja Anda.

      Di Workflow StudioMode desain, Anda dapat menambahkan status ke dalam prototipe alur kerja Anda. Atau, Anda dapat beralih ke Mode kode untuk menggunakan editor kode terintegrasi untuk mengedit definisi Amazon States Language (ASL) mesin status Anda dari konsol Step Functions.

      penting

      Anda mungkin perlu memperbarui placeholder Amazon Resource Name (ARN) untuk sumber daya yang digunakan dalam proyek sampel sebelum Anda dapat menjalankan alur kerja Anda.

    • Jika Anda memilih Jalankan demo, Step Functions akan membuat proyek hanya-baca yang menggunakan AWS CloudFormation templat untuk menyebarkan AWS sumber daya dalam templat tersebut ke templat Anda. Akun AWS Anda dapat melihat definisi mesin status dengan memilih mode Kode.

      Pilih Deploy dan jalankan untuk menyebarkan proyek dan membuat sumber daya.

      Perhatikan bahwa penerapan dapat memakan waktu hingga 10 menit untuk sumber daya dan IAM izin dibuat. Saat sumber daya Anda sedang digunakan, Anda dapat membuka tautan AWS CloudFormation Stack ID untuk melihat sumber daya mana yang sedang disediakan.

      Setelah semua sumber daya dibuat, Anda akan melihat proyek di halaman mesin Negara di konsol.

      penting

      Biaya standar mungkin berlaku untuk setiap layanan yang digunakan dalam CloudFormation templat.

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) Untuk mengidentifikasi eksekusi Anda, Anda dapat menentukan nama, atau menggunakan nama eksekusi default yang dihasilkan.

      catatan

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

    2. (Opsional) Dalam kotak Input, masukkan nilai input dalam JSON format untuk menjalankan alur kerja Anda.

      Jika Anda memilih untuk Menjalankan demo, Anda tidak perlu memberikan input eksekusi apa pun.

      catatan

      Jika proyek demo yang Anda gunakan berisi data input eksekusi yang telah diisi sebelumnya, gunakan input tersebut untuk menjalankan mesin status.

    3. Pilih Mulai Eksekusi.

    4. Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda. Halaman ini dikenal sebagai halaman Detail Eksekusi. Di halaman ini, Anda dapat meninjau hasil eksekusi saat eksekusi berlangsung atau setelah selesai.

      Untuk meninjau hasil eksekusi, pilih status individual pada tampilan Grafik, lalu pilih tab individual di Detail langkah panel untuk melihat detail setiap status termasuk input, output, dan definisi masing-masing. Untuk detail tentang informasi eksekusi yang dapat Anda lihat di halaman Rincian Eksekusi, lihatHalaman Detail Eksekusi - Ikhtisar antarmuka.

    Misalnya, untuk melihat perubahan status AWS Batch pekerjaan Anda 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 Graoh.

Contoh Kode Mesin Status

Mesin negara 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 selengkapnya tentang AWS Step Functions cara mengontrol AWS layanan lain, lihatMengintegrasikan layanan lain 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 } } }