Membuat Alur Kerja Tanpa Server

Dengan AWS Step Functions dan AWS Lambda

Dalam tutorial ini, Anda akan mempelajari cara menggunakan AWS Step Functions untuk merancang dan menjalankan alur kerja tanpa server yang mengoordinasikan beberapa fungsi AWS Lambda. AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server.

Dalam contoh kami, Anda adalah seorang pengembang yang telah diminta untuk membuat aplikasi tanpa server untuk mengotomatiskan penanganan tiket dukungan di pusat panggilan. Meski Anda dapat membuat satu fungsi Lambda memanggil fungsi lainnya, Anda mengkhawatirkan bahwa mengelola semua koneksi tersebut akan terasa menantang saat aplikasi pusat panggilan menjadi semakin canggih. Selain itu, setiap perubahan dalam alur aplikasi akan mengharuskan perubahan di beberapa tempat, dan Anda pada akhirnya bisa harus menuliskan kode yang sama berulang kali.

Untuk mengatasi tantangan ini, Anda memutuskan untuk menggunakan AWS Step Functions. Step Functions merupakan sebuah layanan pengaturan tanpa server yang memungkinkan Anda dengan mudah mengoordinasikan beberapa fungsi Lambda ke dalam alur kerja fleksibel yang mudah di-debug dan mudah diubah. Step Functions akan memastikan fungsi Lambda Anda bebas dari logika tambahan dengan memicu dan melacak setiap langkah aplikasi untuk Anda.

Dalam 10 menit ke depan, Anda akan membuat mesin status Step Functions untuk menguraikan proses pusat panggilan saat ini, membuat beberapa fungsi Lambda sederhana yang menyimulasikan tugas tim dukungan, dan meneruskan data di antara setiap fungsi Lambda untuk melacak kemajuan kasus dukungan. Selanjutnya, Anda akan melakukan beberapa pengujian alur kerja untuk mengamati bagaimana alur kerja merespons berbagai input. Terakhir, Anda akan menghapus sumber daya AWS yang Anda gunakan dalam tutorial.

Anda akan menggunakan AWS Step Functions dan AWS Lambda dalam tutorial ini. Layanan ini berada dalam AWS Tingkat Gratis.

Tutorial ini memerlukan akun AWS

Tidak ada biaya tambahan untuk Step Functions atau Lambda. Sumber daya yang Anda buat dalam tutorial ini memenuhi syarat untuk Tingkat Gratis. 

Selengkapnya tentang Tingkat Gratis >>


Langkah 1. Buat Mesin Status & Alur Kerja Tanpa Server

Langkah pertama Anda adalah merancang alur kerja yang menguraikan bagaimana Anda ingin tiket dukungan ditangani di pusat panggilan. Alur kerja menguraikan proses sebagai rangkaian tugas diskret yang dapat diulangi berkali-kali.

Anda dapat duduk bersama manajer pusat panggilan untuk membicarakan praktik terbaik untuk menangani kasus dukungan. Menggunakan alur kerja visual di Step Functions sebagai referensi intuitif, Anda menentukan alur kerja bersama-sama.

Kemudian, Anda akan merancang alur kerja Anda di AWS Step Functions. Alur kerja Anda akan memanggil satu fungsi AWS Lambda untuk membuat kasus dukungan, meminta fungsi lainnya untuk menugaskan kasus ke perwakilan dukungan untuk diselesaikan, dan sebagainya. Alur kerja juga akan meneruskan data di antara beberapa fungsi Lambda untuk melacak status kasus dukungan yang sedang dikerjakan.


a. Buka konsol AWS Step Functions. Pilih Tulis dengan snippet kode. Di kotak teks Nama, ketik CallCenterStateMachine.

01c

( klik untuk memperbesar )


b. Ganti konten jendela Definisi mesin status dengan definisi mesin status Amazon States Language (ASL) di bawah. Amazon States Language adalah sebuah bahasa terstruktur berbasis JSON yang digunakan untuk mendefinisikan mesin status Anda.

Mesin status ini menggunakan serangkaian status Tugas untuk membuka, menugaskan, dan bekerja pada sebuah kasus dukungan. Kemudian, status Pilihan digunakan untuk menentukan apakah kasus dapat ditutup atau tidak. Dua atau lebih status Tugas kemudian menutup atau mengeskalasi kasus dukungan sesuai kebutuhan.

 

{
  "Comment": "A simple AWS Step Functions state machine that automates a call center support session.",
  "StartAt": "Open Case",
  "States": {
    "Open Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Assign Case"
    }, 
    "Assign Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Work on Case"
    },
    "Work on Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Is Case Resolved"
    },
    "Is Case Resolved": {
        "Type" : "Choice",
        "Choices": [ 
          {
            "Variable": "$.Status",
            "NumericEquals": 1,
            "Next": "Close Case"
          },
          {
            "Variable": "$.Status",
            "NumericEquals": 0,
            "Next": "Escalate Case"
          }
      ]
    },
     "Close Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "End": true
    },
    "Escalate Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Next": "Fail"
    },
    "Fail": {
      "Type": "Fail",
      "Cause": "Engage Tier 2 Support."    }   
  }
}
03b

( klik untuk memperbesar )


c. Klik tombol segarkan untuk menampilkan definisi mesin status ASL sebagai alur kerja visual. Dalam skenario kami, Anda dapat dengan mudah memverifikasi bahwa proses diuraikan dengan benar dengan meninjau alur kerja visual dengan manajer pusat panggilan.

d. Klik Berikutnya.

03c

( klik untuk memperbesar )


Langkah 2. Buat Peran AWS Identity and Access Management (IAM)

AWS IAM adalah sebuah layanan web yang membantu Anda mengontrol akses ke sumber daya AWS dengan aman. Di langkah ini, Anda akan membuat peran IAM yang memungkinkan Step Functions mengakses Lambda.


a. Di jendela browser lainnya, buka AWS Management Console. Saat layar dimuat, ketik IAM di bilah pencarian, kemudian pilih IAM untuk membuka konsol layanan.

02a

( klik untuk memperbesar )


b. Klik Peran, kemudian klik Buat Peran.

02b

( klik untuk memperbesar )


c. Di layar Buat Peran, pilih Layanan AWS, pilih Step Functions, kemudian klik Berikutnya: Izin. Di layar berikutnya, klik Berikutnya: Tinjau.

02c

( klik untuk memperbesar )


d. Masukkan Nama peran sebagai step_functions_basic_execution dan pilih Buat peran. Di layar berikutnya, klik Berikutnya: Tinjau.

02d

( klik untuk memperbesar )


e. Peran Anda sudah dibuat dan akan muncul dalam daftar. Pilih nama peran Anda untuk melihatnya. 

02e

( klik untuk memperbesar )


f. Salin ARN Peran di layar berikutnya.

02f

( klik untuk memperbesar )


Langkah 3. Tambahkan Peran IAM ke Mesin Status

Berikutnya, Anda akan menambahkan ARN peran IAM yang Anda buat ke Mesin Status dalam AWS Step Functions.


a. Pilih tab browser dengan konsol Step Functions.

b. Salin ARN yang Anda salin di kotak centang ARN Peran IAM.

c. Klik Buat Mesin Status.

03a

( klik untuk memperbesar )


Langkah 4. Buat Fungsi AWS Lambda

Sekarang setelah Anda membuat mesin status, Anda dapat memutuskan bagaimana Anda ingin mesin ini melakukan pekerjaan. Anda dapat menghubungkan mesin status ke fungsi AWS Lambda dan layanan mikro lainnya yang sudah ada di lingkungan Anda, atau membuat yang baru. Dalam tutorial ini, Anda akan membuat beberapa fungsi Lambda sederhana yang menyimulasikan beberapa langkah untuk penanganan panggilan dukungan, seperti menugaskan kasus ke Perwakilan Dukungan Pelanggan.


a. Klik Layanan, ketik Lambda di kotak pencarian, kemudian pilih Lambda untuk membuka konsol layanan.

04a

( klik untuk memperbesar )


b. Klik Buat fungsi.

04b

( klik untuk memperbesar )


c. Pilih Tulis dari awal.

d. Konfigurasikan fungsi Lambda pertama Anda dengan pengaturan berikut:

NamaOpenCaseFunction.
RuntimeNode.js 4.3.
PeranBuat peran kustom.

Jendela IAM baru akan muncul.

e. Untuk Nama peran, biarkan tetap menjadi lambda_basic_execution dan klik Izinkan.
Anda akan otomatis dikembalikan ke konsol Lambda.

f. Klik Buat fungsi.

04c

( klik untuk memperbesar )


g. Ganti konten jendela Kode fungsi dengan kode berikut, kemudian klik Simpan.

exports.handler = (event, context, callback) => {
    // Create a support case using the input as the case ID, then return a confirmation message   
   var myCaseID = event.inputCaseID;
   var myMessage = "Case " + myCaseID + ": opened...";   
   var result = {Case: myCaseID, Message: myMessage};
   callback(null, result);    
};
04d

( klik untuk memperbesar )


h. Di bagian atas halaman, klik Fungsi.

04e

( klik untuk memperbesar )


i. Ulangi langkah 4b-4d untuk membuat 4 fungsi Lambda lainnya menggunakan peran IAM lambda_basic_execution yang Anda buat di langkah 4c.

Tentukan AssignCaseFunction sebagai:

exports.handler = (event, context, callback) => {    
    // Assign the support case and update the status message    
    var myCaseID = event.Case;    
    var myMessage = event.Message + "assigned...";    
    var result = {Case: myCaseID, Message: myMessage};
    callback(null, result);        
};

Tentukan WorkOnCaseFunction sebagai:

exports.handler = (event, context, callback) => {    
    // Generate a random number to determine whether the support case has been resolved, then return that value along with the updated message.
    var min = 0;
    var max = 1;    
    var myCaseStatus = Math.floor(Math.random() * (max - min + 1)) + min;
    var myCaseID = event.Case;
    var myMessage = event.Message;
    if (myCaseStatus == 1) {
        // Support case has been resolved    
        myMessage = myMessage + "resolved...";
    } else if (myCaseStatus == 0) {
        // Support case is still open
        myMessage = myMessage + "unresolved...";
    } 
    var result = {Case: myCaseID, Status : myCaseStatus, Message: myMessage};
    callback(null, result); 
};

Tentukan CloseCaseFunction sebagai:

exports.handler = (event, context, callback) => { 
    // Close the support case    
    var myCaseStatus = event.Status;    
    var myCaseID = event.Case;    
    var myMessage = event.Message + "closed.";    
    var result = {Case: myCaseID, Status : myCaseStatus, Message: myMessage};
    callback(null, result);
};

Tentukan EscalateCaseFunction sebagai:

exports.handler = (event, context, callback) => {    
    // Escalate the support case 
    var myCaseID = event.Case;    
    var myCaseStatus = event.Status;    
    var myMessage = event.Message + "escalating.";    
    var result = {Case: myCaseID, Status : myCaseStatus, Message: myMessage};
    callback(null, result);
};

Setelah selesai, Anda akan memiliki 5 fungsi AWS Lambda.

04f

( klik untuk memperbesar )


Langkah 5. Isi Alur Kerja Anda

Langkah berikutnya adalah mengisi status tugas di alur kerja Step Functions Anda dengan fungsi yang baru saja Anda buat.


a. Klik Layanan, ketik Langkah di kotak pencarian, kemudian pilih Step Functions untuk membuka konsol layanan.

05a

( klik untuk memperbesar )


b. Pada layar Mesin status, pilih CallCenterStateMachine dan klik Edit.

05b

( klik untuk memperbesar )


c. Di bagian Definisi mesin status, temukan status Kasus Terbuka yang diawali dengan Sumber Daya.

Ganti ARN dengan ARN OpenCaseFunction.

Jika Anda mengeklik ARN sampel, daftar fungsi AWS Lambda dalam akun Anda akan muncul dan Anda dapat memilihnya dari daftar.

05c

( klik untuk memperbesar )


d. Ulangi langkah sebelumnya untuk memperbarui ARN fungsi Lambda untuk status Tugas Tetapkan Kasus, Kasus yang Dikerjakan, Kasus Tertutup, dan Eskalasi Kasus di mesin status Anda, kemudian klik Simpan.

05d

( klik untuk memperbesar )


Langkah 6. Jalankan Alur Kerja Anda

Alur kerja tanpa server Anda kini siap dijalankan. Eksekusi mesin status merupakan instans alur kerja Anda, dan muncul setiap kalo mesin status Step Functions berjalan dan melakukan tugasnya. Setiap mesin status Step Functions dapat memiliki beberapa eksekusi simultan, yang dapat Anda mulai dari konsol Step Functions (yang akan Anda lakukan berikutnya), atau menggunakan AWS SDK, tindakan API Step Functions, atau AWS CLI. Eksekusi akan menerima input JSON dan menghasilkan output JSON.


a. Klik Mulai eksekusi.

06a

( klik untuk memperbesar )


b. Sebuah kotak dialog eksekusi baru akan muncul. Untuk memasukkan ID untuk kasus dukungan Anda, masukkan konten dari bawah di kotak dialog Eksekusi baru di jendela Input, kemudian klik Mulai eksekusi.

{
"inputCaseID": "001"
}
06b

( klik untuk memperbesar )


c. Saat alur kerja dijalankan, setiap langkah akan berubah warna di panelAlur kerja visual. Tunggu beberapa detik untuk menyelesaikan eksekusi. Kemudian, di panel Detail eksekusi, klik Input dan Output untuk melihat input dan hasil alur kerja Anda.

06c

( klik untuk memperbesar )


d. Step Functions memungkinkan Anda memeriksa setiap langkah eksekusi alur kerja Anda, termasuk input dan output setiap status. Klik setiap tugas di alur kerja Anda dan perluas bidang Input dan Output di bawah detail Langkah. Anda dapat melihat bahwa ID kasus yang Anda masukkan ke mesin status diteruskan dari setiap langkah ke langkah berikutnya, dan bahwa pesan diperbarui setelah setiap fungsi Lambda menyelesaikan pekerjaannya.

06d

( klik untuk memperbesar )


e. Gulir ke bawah ke bagian Riwayat kejadian eksekusi. Klik setiap langkah eksekusi untuk melihat bagaimana Step Functions memanggil fungsi Lambda Anda dan meneruskan data di antara fungsi.

06e

( klik untuk memperbesar )


f. Tergantung output WorkOnCaseFunction, alur kerja Anda mungkin diselesaikan dengan menyelesaikan kasus dukungan dan menutup tiket, atau mengeskalasi ke tingkat dukungan berikutnya. Anda dapat menjalankan kembali eksekusi beberapa kali untuk mengamati perilaku berbeda ini. Gambar ini menunjukkan eksekusi alur kerja dengan kasus dukungan yang dieskalasi, menyebabkan alur kerja keluar dengan status Gagal.

Dalam skenario dunia nyata, Anda mungkin memutuskan untuk melanjutkan mengerjakan kasus hingga kasus ini selesai, bukan keluar dari alur kerja Anda. Untuk melakukannya, Anda dapat menghapus status Gagal; dan mengedit Tugas Ekskalasi Kasus di mesin status untuk berputar kembali ke status Kasus Sedang Dikerjakan. Tidak ada perubahan yang dibutuhkan untuk fungsi Lambda Anda. Fungsi yang kita bangun untuk tutorial ini hanya berupa sampel, jadi kita akan bergerak ke langkah berikutnya dalam tutorial ini.

06f

( klik untuk memperbesar )


Langkah 7. Hentikan Sumber Daya Anda

Dalam langkah ini, Anda akan menghentikan sumber daya yang terkait dengan AWS Step Functions dan AWS Lambda.

Penting: Menghentikan sumber daya yang tidak digunakan secara aktif mengurangi biaya dan merupakan praktik terbaik. Tidak menghentikan sumber daya Anda dapat menimbulkan biaya.


a. Di bagian atas jendela konsol AWS Step Functions, klik pada Mesin status.

07a

( klik untuk memperbesar )


b. Dalam jendela Mesin status, pilih CallCenterStateMachine dan klik Hapus. Untuk mengonfirmasi Anda ingin menghapus mesin status, klik Hapus mesin status di kotak dialog. Mesin status Anda akan dihapus dalam beberapa menit setelah Step Functions mengonfirmasi bahwa setiap proses eksekusi telah selesai.

07b

( klik untuk memperbesar )


c. Berikutnya, Anda akan menghapus fungsi Lambda. Klik Layanan dalam menu AWS Management Console, kemudian pilih Lambda.

07c

( klik untuk memperbesar )


d. Dalam layar Fungsi, klik salah satu fungsi yang Anda buat untuk tutorial ini, kemudian pilih Tindakan lalu pilih Hapus. Konfirmasikan penghapusan dengan mengeklik Hapus lagi.

07d

( klik untuk memperbesar )


e. Terakhir, Anda akan menghapus peran IAM Anda. Klik Layanan dalam menu AWS Management Console, kemudian pilih IAM.

07e

( klik untuk memperbesar )


f. Pilih kedua peran IAM yang Anda buat untuk tutorial ini, kemudian klik Hapus peran. Konfirmasikan penghapusan dengan mengeklik Ya, Hapus pada kotak dialog.


Kini Anda dapat keluar dari AWS Management Console.

07f

( klik untuk memperbesar )


Selamat!

Kerja yang bagus! Anda baru saja membuat alur kerja tanpa server menggunakan AWS Step Functions yang memicu beberapa fungsi AWS Lambda. Alur kerja Anda akan mengoordinasikan semua fungsi untuk Anda menurut logika yang Anda tentukan, dan meneruskan data dari satu status ke status lainnya, yang artinya Anda tidak perlu menuliskan kode tersebut ke setiap fungsi individual.

Sekarang setelah Anda mempelajari cara merancang dan menjalankan alur kerja tanpa server, Anda dapat melanjutkan ke tutorial berikutnya, tempat Anda akan mempelajari cara menggunakan Step Functions untuk menangani kesalahan fungsi Lambda. Anda akan membuat mesin status dengan bidang Coba Ulang dan Ambil yang merespons kode respons dari mock API berdasarkan tipe pesan kesalahan, sebuah metode yang disebut penanganan kesalahan fungsi.