Tugas AWS Lambda - Amazon Simple Workflow Service

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

Tugas AWS Lambda

Tentang AWS Lambda

AWS Lambda adalah layanan komputasi terkelola penuh yang menjalankan kode Anda untuk merespons kejadian yang dihasilkan oleh kode kustom atau dari berbagai layanan AWS seperti Amazon S3, DynamoDB, Amazon Kinesis, Amazon SNS, dan Amazon Cognito. Untuk informasi selengkapnya tentang Lambda, lihat Panduan Developer AWS Lambda.

Amazon Simple Workflow Service menyediakan tugas Lambda sehingga Anda dapat menjalankan fungsi Lambda untuk menggantikan, atau digunakan bersama kegiatan Amazon SWF tradisional.

penting

Akun AWS Anda akan dikenakan biaya untuk eksekusi Lambda (permintaan) yang dieksekusi oleh Amazon SWF atas nama Anda. Untuk detail tentang harga Lambda, lihat https://aws.amazon.com/lambda/pricing/.

Manfaat dan pembatasan dalam menggunakan tugas Lambda

Ada sejumlah manfaat menggunakan tugas Lambda dibandingkan menjalankan kegiatan Amazon SWF tradisional:

  • Tugas Lambda tidak perlu didaftarkan atau diversikan seperti tipe aktivitas Amazon SWF.

  • Anda dapat menggunakan fungsi Lambda yang ada yang telah Anda tetapkan dalam alur kerja Anda.

  • Fungsi Lambda dipanggil langsung oleh Amazon SWF; Anda tidak perlu menerapkan program pekerja untuk mengeksekusi fungsi seperti yang harus Anda lakukan pada kegiatan tradisional.

  • Lambda menyediakan metrik dan pencatatan untuk melacak dan menganalisis eksekusi fungsi Anda.

Ada juga sejumlah batasan mengenai tugas Lambda yang harus Anda sadari:

  • Tugas Lambda hanya dapat dijalankan di wilayah AWS yang menyediakan dukungan untuk Lambda. Lihat Wilayah dan Titik Akhir Lambda di Referensi Umum Amazon Web Services untuk detail tentang wilayah yang saat ini didukung untuk Lambda.

  • Tugas Lambda saat ini didukung hanya oleh SWF HTTP API dasar dan di AWS Flow Framework untuk Java. Saat ini tidak ada dukungan untuk tugas Lambda di AWS Flow Framework untuk Ruby.

Menggunakan tugas Lambda dalam alur kerja Anda

Untuk menggunakan tugas Lambda dalam alur kerja Amazon SWF Anda, Anda akan perlu:

  1. Mengatur IAM role agar memberikan izin bagi Amazon SWF untuk memanggil fungsi Lambda.

  2. Melampirkan IAM role ke alur kerja Anda.

  3. Memanggil fungsi Lambda Anda selama eksekusi alur kerja.

Mengatur IAM role

Sebelum Anda dapat memanggil fungsi Lambda dari Amazon SWF Anda harus menyediakan IAM role yang menyediakan akses ke Lambda dari Amazon SWF. Anda dapat:

  • memilih peran yang telah ditentukan,AWSLambdaRole, untuk memberikan izin bagi alur kerja Anda guna memanggil fungsi Lambda apa pun yang terkait dengan akun Anda.

  • menentukan kebijakan dan peran terkait milik Anda untuk memberikan izin bagi alur kerja untuk memanggil fungsi Lambda tertentu, yang ditentukan oleh Amazon Resource Names (ARN) fungsi.

Batasi izin pada peran IAM

Anda dapat membatasi izin pada peran IAM yang Anda berikan kepada Amazon SWF dengan menggunakanSourceArndanSourceAccountkunci konteks dalam kebijakan kepercayaan sumber daya Anda. Kunci ini membatasi penggunaan kebijakan IAM sehingga hanya digunakan dari eksekusi Amazon Simple Workflow Service yang termasuk dalam ARN domain yang ditentukan. Jika Anda menggunakan kedua kunci konteks kondisi global,aws:SourceAccountnilai dan akun yang direferensikan dalamaws:SourceArnnilai harus menggunakan ID akun yang sama bila digunakan dalam pernyataan kebijakan yang sama.

Dalam contoh kebijakan kepercayaan berikut, kami menggunakanSourceArnkunci konteks untuk membatasi peran layanan IAM untuk hanya digunakan dalam eksekusi Amazon Simple Workflow Service miliksomeDomaindi akun,123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:swf:*:123456789012:/domain/someDomain" } } } ] }

Dalam contoh kebijakan kepercayaan berikut, kami menggunakanSourceAccountkunci konteks untuk membatasi peran layanan IAM untuk hanya digunakan dalam eksekusi Amazon Simple Workflow Service di akun,123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" } } } ] }

Menyediakan akses bagi Amazon SWF untuk memanggil setiap peran Lambda

Anda dapat menggunakan peran yang telah ditentukan,AWSLambdaRole, untuk memberikan alur kerja Amazon SWF Anda kemampuan untuk memanggil fungsi Lambda apa pun yang terkait dengan akun Anda.

Untuk menggunakanAWSLambdaRoleuntuk memberikan akses Amazon SWF guna memanggil fungsi Lambda
  1. Buka Amazon IAM console (Konsol Amazon IAM).

  2. Pilih Roles (Peran), kemudian Create New Role (Buat Peran Baru).

  3. Beri nama bagi peran Anda, misalnya swf-lambda dan pilih Next Step (Langkah Selanjutnya).

  4. Di bawah AWS Service Roles (Peran Layanan), pilih Amazon SWF, dan pilih Next Step (Langkah Berikutnya).

  5. PadaLampirkan Kebijakanlayar, pilihAWSLambdaRoledari daftar.

  6. Pilih Next Step (Langkah Selanjutnya) dan kemudian Create Role (Buat Baru) setelah Anda meninjau peran tersebut.

Menentukan IAM role untuk menyediakan akses guna memanggil fungsi Lambda tertentu

Jika Anda ingin menyediakan akses untuk memanggil fungsi Lambda tertentu dari alur kerja Anda, Anda perlu menentukan kebijakan IAM Anda sendiri.

Untuk membuat kebijakan IAM untuk menyediakan akses ke fungsi Lambda tertentu
  1. Buka Amazon IAM console (Konsol Amazon IAM).

  2. Pilih Policies (Kebijakan), kemudian Create Policy (Buat Kebijakan).

  3. PilihSalinAWSKebijakan Terkeloladan pilihAWSLambdaRoledari daftar. Sebuah kebijakan akan dibuat untuk Anda. Anda memiliki opsi untuk mengedit nama dan deskripsi kebijakan untuk menyesuaikan kebutuhan Anda.

  4. Di bidang Sumber Daya di Dokumen Kebijakan, tambahkan ARN dari satu atau beberapa fungsi Lambda Anda. Sebagai contoh:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111111000000:function:hello_lambda_function" ] } ] }
    catatan

    Untuk keterangan lengkap tentang cara menentukan sumber daya di IAM role, lihat Gambaran Umum Kebijakan IAM di Menggunakan IAM.

  5. Pilih Create Policy (Buat Kebijakan) untuk menyelesaikan pembuatan kebijakan Anda.

Anda kemudian dapat memilih kebijakan ini saat membuat IAM role baru, dan menggunakan peran tersebut untuk memberikan akses panggilan ke alur kerja Amazon SWF Anda. Prosedur ini sangat mirip dengan membuat peran denganAWSLambdaRolesebagai gantinya, pilih kebijakan Anda sendiri saat membuat peran.

Untuk membuat peran Amazon SWF menggunakan kebijakan Lambda Anda
  1. Buka Amazon IAM console (Konsol Amazon IAM).

  2. Pilih Roles (Peran), kemudian Create New Role (Buat Peran Baru).

  3. Beri nama bagi peran Anda, misalnya swf-lambda-function dan pilih Next Step (Langkah Selanjutnya).

  4. Di bawah AWS Service Roles (Peran Layanan), pilih Amazon SWF, dan pilih Next Step (Langkah Berikutnya).

  5. Pada layar Attach Policy (Lampirkan Kebijakan), pilih kebijakan khusus fungsi Lambda Anda dari daftar.

  6. Pilih Next Step (Langkah Selanjutnya) dan kemudian Create Role (Buat Baru) setelah Anda meninjau peran tersebut.

Lampirkan IAM role ke alur kerja Anda

Setelah Anda menentukan IAM role Anda, Anda harus melampirkannya ke alur kerja yang akan menggunakan IAM role untuk memanggil fungsi Lambda yang dapat diakses oleh Amazon SWF.

Ada dua tempat di mana Anda dapat melampirkan peran ke alur kerja Anda:

  • Selama pendaftaran tipe alur kerja. Peran ini kemudian dapat digunakan sebagai peran Lambda default untuk setiap eksekusi tipe alur kerja tersebut.

  • Saat memulai eksekusi alur kerja. Peran ini hanya akan digunakan selama eksekusi alur kerja ini (dan di seluruh eksekusi).

Untuk menyediakan peran Lambda default bagi tipe alur kerja
  • Saat meneleponRegisterWorkflowKetik, aturdefaultLambdaRolebidang ke ARN peran yang telah Anda tetapkan.

Untuk menyediakan peran Lambda yang akan digunakan selama eksekusi alur kerja
  • Saat meneleponStartWorkflowEksekusi, atur bidang LambdaRole ke ARN peran yang telah Anda tetapkan.

catatan

jika akun meneleponRegisterWorkflowJenis atauStartWorkflowEksekusi tidak memiliki izin untuk menggunakan peran yang diberikan, maka panggilan akan mengalami kegagalan denganOperationNotPermittedFault.

Panggil fungsi Lambda Anda dari alur kerja Amazon SWF

Anda dapat menggunakanScheduleLambdaFunctionDecisionJenis data atribut untuk mengidentifikasi fungsi Lambda yang akan dipanggil selama eksekusi alur kerja.

Selama panggilan keRespondDecisionTaskCompleted, berikanScheduleLambdaFunctionDecisionAtribut ke daftar keputusan Anda. Misalnya:

{ "decisions": [{ "ScheduleLambdaFunctionDecisionAttributes": { "id": "lambdaTaskId", "name": "myLambdaFunctionName", "input": "inputToLambdaFunction", "startToCloseTimeout": "30" }, }], }

Atur parameter berikut:

  • id dengan pengidentifikasi untuk tugas Lambda. id ini harus berupa string dari karakter 1-256 dan tidak boleh berisi karakter : (titik dua), / (garis miring), | (bar vertikal), atau karakter kontrol (\u0000 - \u001f and \u007f - \u009f), maupun arn string literal.

  • nama dengan nama fungsi Lambda Anda. Alur kerja Amazon SWF Anda harus disediakan dengan IAM role yang memberikan akses bagi alur kerja untuk memanggil fungsi Lambda. Nama yang disediakan harus mengikuti batasan untukFunctionNameparameter seperti dalam tindakan Lambda Invoke.

  • input dengan input data opsional untuk fungsi. Jika diatur, ini harus mengikuti batasan untukClientContextparameter seperti dalam tindakan Lambda Invoke.

  • startToCloseWaktu habisdengan periode maksimum opsional, dalam hitungan detik, bahwa fungsi dapat mengambil untuk mengeksekusi sebelum tugas gagal dengan pengecualian batas waktu. Nilai NONE dapat digunakan untuk menentukan durasi tidak terbatas.

Untuk informasi selengkapnya, lihat Menerapkan Tugas AWS Lambda