Tambahkan logika kondisional ke alur kerja 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.

Tambahkan logika kondisional ke alur kerja Step Functions

Pada topik sebelumnya,Integrasikan layanan, Anda mengintegrasikan fungsi Lambda. Dalam topik ini Anda akan mengatur kondisi jika-lain di. Pilihan state Status pilihan menentukan jalur eksekusi alur kerja berdasarkan kondisi tertentu.

Anda akan menambahkan logika yang memilih jalur berdasarkan jumlah kredit yang diterapkan yang dikembalikan oleh fungsi RandomNumberforCredit Lambda. Jika nilainya berada dalam batas ambang batas, aplikasi kredit akan secara otomatis disetujui dan pindah ke langkah berikutnya. Jika nilai melebihi batas ambang batas, alur kerja akan memerlukan persetujuan manusia untuk melanjutkan alur kerja.

Anda akan meniru langkah interaksi manusia dengan menjeda eksekusi alur kerja hingga token tugas dikembalikan. Untuk melakukan ini, Anda akan meneruskan token tugas ke AWS SDKintegrasi dengan Amazon Simple Notification Service. Eksekusi alur kerja akan dijeda hingga menerima token tugas kembali dengan panggilan. SendTaskSuccessAPI Untuk informasi tentang mengintegrasikan dengan layanan lain menggunakan token tugas, lihat pola integrasi layanan Tunggu Callback dengan Task Token dalam.

Saat Anda membuat mesin status prototipe, Anda menentukan langkah persetujuan manusia dan persetujuan otomatis. Sekarang, Anda harus membuat SNS topik Amazon yang menerima token panggilan balik. Kemudian, Anda membuat fungsi Lambda untuk mengimplementasikan fungsionalitas callback. Terakhir, Anda memperbarui prototipe alur kerja Anda dengan menambahkan detailnya Layanan AWS integrasi.

Langkah 1: Buat SNS topik Amazon yang menerima token callback

Untuk menerapkan langkah interaksi manusia, Anda akan memublikasikan ke topik Layanan Pemberitahuan Sederhana Amazon dan meneruskan token tugas panggilan balik ke topik ini. Tugas callback akan menjeda eksekusi alur kerja hingga token tugas dikembalikan dengan muatan.

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

  2. Tentukan nama topik sebagaiTaskTokenTopic.

  3. Pastikan untuk menyalin topik ARN dan menyimpannya dalam file teks. Anda akan memerlukan topik ARN sambil menentukan integrasi layanan untuk status Tunggu persetujuan manusia. Berikut ini adalah contoh topikARN:

    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 ke 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 SNS Amazon yang Anda buat di Langkah 1 sebagai pemicu untuk fungsi ini. Saat Anda memublikasikan ke SNS topik Amazon dengan token tugas, fungsi Lambda dipanggil dengan muatan 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 SendTaskSuccessAPIpanggilan. Fungsi Lambda ini juga akan mengembalikan token tugas yang diterimanya dari topik AmazonSNS.

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

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

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

    // Lambda function that will automatically approve any task // in a message published to an Amazon SNS topic console.log('Loading function'); const AWS = require('aws-sdk'); const resultMessage = "Successful"; export const handler = async (event) => { 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. Biarkan jendela ini terbuka dan lakukan langkah-langkah di bagian berikutnya untuk tindakan lebih lanjut.

Langkah 2.2: Tambahkan SNS topik Amazon sebagai pemicu fungsi Lambda

Saat Anda memublikasikan ke SNS topik Amazon dengan token tugas, fungsi Lambda dipanggil dengan muatan pesan yang dipublikasikan. Untuk informasi selengkapnya tentang mengonfigurasi pemicu untuk fungsi Lambda, lihat Mengonfigurasi pemicu di AWS Lambda Panduan Pengembang.

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

  2. Dari daftar drop-down pemicu, pilih SNSsebagai pemicu.

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

  4. Pilih Tambahkan.

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

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

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

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

  2. Di bawah Peran eksekusi, pilih nama Peran untuk menavigasi ke AWS Identity and Access Management halaman Peran konsol.

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

  4. Di kotak pencarian, ketik lalu AWSStepFunctions tekan Enter.

  5. Pilih AWSStepFunctionsFullAccessdan kemudian 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 if-else dalam status Pilihan

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

Di Choice negara bagian, 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 keadaan ke negara lain dan menentukan input dan output dalam alur kerja Anda, lihat Konfigurasikan input dan output dan. Memproses input dan output

catatan

Jika Choice status menggunakan variabel input 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 pada langkah ini, Choice status akan menerima masukan dari status batas kredit Dapatkan, Anda akan menggunakan $ sintaks untuk konfigurasi Choice status. 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 Mendebug kesalahan status Pilihan jalur yang tidak valid bagian dalam Tutorial 8.

Untuk menambahkan logika kondisi if-else menggunakan status Choice
  1. Buka jendela konsol Step Functions yang berisi prototipe alur kerja yang Anda buat. Buat mesin status

  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. Dalam kotak dialog Ketentuan untuk aturan #1, untuk Variabel, masukkan$.

    4. Untuk Operator, pilih kurang dari.

    5. Untuk Nilai, pilih Konstanta angka, lalu masukkan 5000 di bidang di sebelah Nilai daftar dropdown.

    6. Pilih Simpan kondisi.

    7. Untuk Kemudian status selanjutnya adalah: daftar dropdown, pilih Batas persetujuan otomatis.

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

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

    10. Di kotak Aturan default, pilih ikon Edit untuk menentukan aturan pilihan default, lalu pilih Tunggu persetujuan manusia dari daftar tarik-turun status default. Anda menentukan aturan Default untuk menentukan status berikutnya yang akan dialihkan jika tidak ada kondisi status Pilihan yang dievaluasi menjadi benar atau salah.

  3. Konfigurasikan status Tunggu persetujuan manusia sebagai berikut:

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

    2. Untuk Pesan, pilih Masukkan pesan dari daftar tarik-turun. Di bidang Pesan, Anda menentukan pesan yang ingin Anda terbitkan ke SNS topik Amazon. Untuk tutorial ini, Anda menerbitkan token tugas sebagai pesan.

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

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

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

    5. Pilih Selesai di kotak dialog yang muncul.

  4. Biarkan jendela ini terbuka dan lanjutkan ke topik berikutnya.

Langkah selanjutnya

Pada topik berikutnya, Tentukan tugas paralel Anda akan belajar bagaimana melakukan banyak tugas secara paralel.