Tutorial 3: Menerapkan kondisi jika-lain dalam alur kerja Anda - AWS Step Functions

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

Tutorial 3: Menerapkan kondisi jika-lain dalam alur kerja Anda

Anda dapat menerapkan kondisi if-else dalam alur kerja Anda dengan menggunakan state. Pilihan Ini menentukan jalur eksekusi alur kerja berdasarkan apakah kondisi tertentu mengevaluasi ke benar atau salah.

Dalam tutorial ini, Anda akan menambahkan logika kondisional untuk menentukan apakah jumlah kredit yang diterapkan dikembalikan oleh fungsi RandomNumberforCredit Lambda yang digunakan dalam Tutorial 2 melebihi batas ambang batas tertentu. Jika jumlahnya melebihi batas ambang batas, aplikasi memerlukan interaksi manusia untuk persetujuan. Jika tidak, aplikasi disetujui secara otomatis dan pindah ke langkah berikutnya.

Anda akan meniru langkah interaksi manusia dengan menjeda eksekusi alur kerja sampai token tugas dikembalikan. Untuk melakukan ini, Anda akan meneruskan token tugas ke integrasi AWS SDK yang akan Anda gunakan dalam tutorial ini, yaitu Amazon Simple Notification Service. Eksekusi alur kerja akan dijeda sampai menerima token tugas kembali dengan panggilan SendTaskSuccessAPI. Untuk informasi selengkapnya tentang menggunakan token tugas, lihatTunggu Panggilan Balik dengan Token Tugas.

Karena Anda telah menentukan langkah-langkah untuk persetujuan manusia dan persetujuan otomatis dalam prototipe alur kerja Anda, dalam tutorial ini, Anda terlebih dahulu membuat topik Amazon SNS yang menerima token callback. Kemudian, Anda membuat fungsi Lambda untuk mengimplementasikan fungsionalitas callback. Akhirnya, Anda memperbarui prototipe alur kerja Anda dengan menambahkan rincian integrasi iniLayanan AWS.

Langkah 1: Membuat topik Amazon SNS yang menerima token callback

Untuk mengimplementasikan langkah interaksi manusia, Anda akan memublikasikan topik Amazon Simple Notification Service dan meneruskan token tugas callback ke topik ini. Tugas callback akan menghentikan eksekusi alur kerja sampai token tugas dikembalikan dengan payload.

  1. Buka konsol Amazon SNS dan buat tipe topik Standar. Untuk informasi tentang membuat topik, lihat Membuat topik Amazon SNS di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.

  2. Tentukan nama topik sebagaiTaskTokenTopic.

  3. Pastikan untuk menyalin topik ARN dan menyimpannya dalam file teks. Anda memerlukan topik ARN saat menentukan integrasi layanan untuk status Wait for human approval. Berikut ini adalah contoh topik ARN:

    arn:aws:sns:us-east-2:123456789012:TaskTokenTopic
  4. Buat langganan berbasis email untuk topik tersebut dan kemudian konfirmasikan langganan Anda. Untuk informasi tentang berlangganan topik, lihat Membuat langganan topik di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.

Langkah 2: Buat fungsi Lambda untuk menangani callback

Untuk menangani fungsionalitas callback, Anda akan menentukan fungsi Lambda dan menambahkan topik Amazon SNS yang Anda buat di Langkah 1 sebagai pemicu fungsi ini. Saat Anda memublikasikan ke topik Amazon SNS dengan token tugas, fungsi Lambda dipanggil dengan payload pesan yang dipublikasikan.

Langkah 2.1: Buat fungsi Lambda untuk menangani callback

Dalam fungsi ini, Anda akan memproses permintaan persetujuan batas kredit dan mengembalikan hasil permintaan sebagai berhasil dengan panggilan SendTaskSuccessAPI. Fungsi Lambda ini juga akan mengembalikan token tugas yang diterimanya dari topik Amazon SNS.

Untuk mempermudah, fungsi Lambda yang digunakan untuk langkah interaksi manusia secara otomatis menyetujui tugas apa pun dan mengembalikan token tugas dengan SendTaskSuccess panggilan API. Anda dapat menamai fungsi Lambda sebagai. callback-human-approval

  1. Di tab atau jendela baru, buka konsol Lambda dan buat fungsi Node.js 16.x Lambda berjudul. callback-human-approval Untuk informasi tentang membuat fungsi Lambda menggunakan konsol, lihat Membuat fungsi Lambda di konsol di Panduan Pengembang. AWS Lambda

  2. Pada callback-human-approvalhalaman, ganti kode yang ada di area sumber Kode dengan kode berikut.

    // Sample Lambda function that will automatically approve any task whenever a message is published to an Amazon SNS topic by Step Functions. console.log('Loading function'); const AWS = require('aws-sdk'); const resultMessage = "Successful"; exports.handler = async (event, context) => { const stepfunctions = new AWS.StepFunctions(); let message = JSON.parse(event.Records[0].Sns.Message); let taskToken = message.TaskToken; console.log('Message received from SNS:', message); console.log('Task token: ', taskToken); // Return task token to Step Functions let params = { output: JSON.stringify(resultMessage), taskToken: taskToken }; console.log('JSON Returned to Step Functions: ', params); let myResult = await stepfunctions.sendTaskSuccess(params).promise(); console.log('State machine - callback completed..'); return myResult; };
  3. Jauhkan jendela ini terbuka dan lakukan langkah-langkah di bagian berikutnya untuk tindakan lebih lanjut.

Langkah 2.2: Tambahkan topik Amazon SNS sebagai pemicu untuk fungsi Lambda

Ketika Anda menambahkan topik Amazon SNS yang Anda buat di Langkah 1 dari tutorial ini sebagai pemicu untuk fungsi Lambda yang Anda buat di Langkah 2.1 dari tutorial ini, fungsi Lambda dipicu setiap kali Anda mempublikasikan ke topik Amazon SNS. Saat Anda memublikasikan ke topik Amazon SNS dengan token tugas, fungsi Lambda dipanggil dengan payload pesan yang dipublikasikan. Untuk informasi selengkapnya tentang mengonfigurasi pemicu untuk fungsi Lambda, lihat Mengonfigurasi pemicu di Panduan Pengembang. AWS Lambda

  1. Di bagian Ringkasan fungsi fungsi fungsi callback-human-approval Lambda, pilih Tambah pemicu.

  2. Dari daftar drop-down pemicu, pilih SNS sebagai pemicu.

  3. Untuk topik SNS, mulailah mengetik nama topik Amazon SNS yang Anda buat di Langkah 1 dari tutorial ini, dan pilih dari daftar dropdown yang muncul.

  4. Pilih Tambahkan.

  5. Jauhkan jendela ini terbuka dan lakukan langkah-langkah di bagian berikutnya untuk tindakan lebih lanjut.

Langkah 2.3: Berikan izin yang diperlukan untuk peran IAM fungsi Lambda

Anda harus memberikan fungsi callback-human-approval Lambda izin untuk mengakses Step Functions untuk mengembalikan token tugas bersama dengan panggilan API. SendTaskSucess

  1. Pada callback-human-approvalhalaman, pilih tab Konfigurasi, lalu pilih Izin.

  2. Di bawah Peran Eksekusi, pilih Nama peran untuk menavigasi ke halaman Peran AWS Identity and Access Management konsol.

  3. Untuk menambahkan izin yang diperlukan, pilih Tambahkan izin, lalu pilih Lampirkan kebijakan.

  4. Di kotak pencarian, ketik AWSStepFunctions dan kemudian tekan Enter.

  5. Pilih AWSStepFunctionsFullAccesslalu gulir ke bawah untuk memilih Lampirkan kebijakan. Ini menambahkan kebijakan yang berisi izin yang diperlukan untuk peran fungsi callback-human-approval Lambda.

Langkah 3: Perbarui alur kerja-tambahkan logika kondisi jika-lain dalam keadaan Choice

Di konsol Step Functions, tentukan logika kondisional untuk alur kerja Anda menggunakan state. Choice Jika output yang dikembalikan oleh fungsi RandomNumberforCredit Lambda kurang dari 5000, kredit yang diminta disetujui secara otomatis. Jika output kembali lebih besar dari atau sama dengan 5000, eksekusi alur kerja hasil untuk langkah interaksi manusia untuk persetujuan batas kredit.

Dalam Choice keadaan, Anda menggunakan operator perbandingan untuk membandingkan variabel input dengan nilai tertentu. Anda dapat menentukan variabel input sebagai input eksekusi saat memulai eksekusi mesin status atau menggunakan output dari langkah sebelumnya sebagai input untuk langkah saat ini. Secara default, output dari langkah disimpan dalam variabel yang disebutPayload. Untuk menggunakan nilai Payload variabel untuk perbandingan di Choice negara bagian, gunakan $ sintaks seperti yang ditunjukkan dalam prosedur berikut.

Untuk informasi tentang bagaimana informasi mengalir dari satu negara ke negara lain dan menentukan input dan output dalam alur kerja Anda, lihat Tutorial 7: Konfigurasikan input dan output dan. Pengolahan Input dan Output di Step Functions

catatan

Jika Choice negara menggunakan variabel masukan yang ditentukan dalam input eksekusi mesin negara untuk perbandingan, gunakan $.variable_name sintaks untuk melakukan perbandingan. Misalnya, untuk membandingkan variabel, sepertimyAge, gunakan sintaks$.myAge.

Karena dalam langkah ini, Choice negara akan menerima masukan dari status batas kredit Get, Anda akan menggunakan $ sintaks untuk konfigurasi Choice negara. Untuk mengeksplorasi bagaimana hasil eksekusi mesin negara berbeda ketika Anda menggunakan $.variable_name sintaks dalam konfigurasi Choice status untuk merujuk ke output dari langkah sebelumnya, lihat Debugging galat status Choice jalur tidak valid bagian dalam Tutorial 8.

Untuk menambahkan logika kondisi jika-lain menggunakan negara Choice
  1. Buka jendela konsol Step Functions yang berisi prototipe alur kerja yang Anda buat. Tutorial 1: Buat prototipe untuk mesin negara Anda

  2. Pilih Kredit yang diterapkan >= 5000? state dan di tab Configuration, tentukan logika kondisional sebagai berikut:

    1. Di bawah Aturan Pilihan, pilih ikon Edit di ubin Aturan #1 untuk menentukan aturan pilihan pertama.

    2. Pilih Tambahkan kondisi.

    3. Di kotak dialog Conditions for rule #1, untuk Variabel, masukkan$.

    4. Untuk Operator, pilih kurang dari.

    5. Untuk Nilai, pilih Jumlah konstan, dan kemudian masukkan 5000 di bidang di sebelah Nilai daftar dropdown.

    6. Pilih Simpan kondisi.

    7. Untuk Kemudian negara berikutnya adalah: daftar dropdown, pilih Auto-approve limit.

    8. Pilih Tambahkan aturan pilihan baru, dan kemudian tentukan aturan pilihan kedua ketika jumlah kredit lebih besar dari atau sama dengan 5000 dengan mengulangi substeps 2.b hingga 2.f. Untuk Operator, pilih lebih besar dari atau sama dengan.

    9. Untuk Kemudian negara berikutnya adalah: daftar dropdown, pilih Tunggu persetujuan manusia.

    10. Dalam Aturan default kotak, pilih ikon Edit untuk menentukan aturan pilihan default, dan kemudian pilih Tunggu persetujuan manusia dari Status default daftar dropdown. Anda menentukan aturan Default untuk menentukan status berikutnya untuk transisi ke jika tidak ada kondisi negara Choice mengevaluasi ke benar atau salah.

  3. Konfigurasikan status Tunggu persetujuan manusia sebagai berikut:

    1. Di tab Konfigurasi, untuk Topik, mulailah mengetik nama topik Amazon SNS TaskTokenTopic, dan pilih nama seperti yang muncul di daftar dropdown.

    2. Untuk Pesan, pilih Masukkan pesan dari daftar dropdown. Di bidang Pesan, Anda menentukan pesan yang ingin Anda publikasikan ke topik Amazon SNS. Untuk tutorial ini, Anda mempublikasikan token tugas sebagai pesan.

      Token tugas memungkinkan Anda menjeda alur kerja Step Functions tipe Standar sampai proses eksternal selesai dan token tugas dikembalikan. Saat Anda menentukan status Tugas sebagai tugas callback dengan menentukan pola integrasi .waitForTaskToken layanan, token tugas dibuat dan ditempatkan di objek konteks saat tugas dimulai. Objek konteks adalah struktur JSON internal yang tersedia selama eksekusi, dan berisi informasi tentang mesin negara Anda dan pelaksanaannya. Untuk informasi lebih lanjut tentang objek konteks, lihatObjek konteks.

    3. Di kotak yang muncul, masukkan pesan berikut sebagai:

      { "TaskToken.$": "$$.Task.Token" }
    4. Pilih kotak centang Tunggu callback.

    5. Pilih Selesai di kotak dialog yang muncul.

  4. Jauhkan jendela ini terbuka dan lanjutkan ke tutorial berikutnya untuk tindakan lebih lanjut.

Langkah selanjutnya

Dalam tutorial berikutnya, Anda akan belajar bagaimana melakukan beberapa tugas secara paralel.