Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan Tugas AWS Lambda
Topik
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 di AWS Flow Framework Anda untuk alur kerja Java
Ada tiga persyaratan untuk menggunakan tugas Lambda di AWS Flow Framework Anda untuk alur kerja Java:
-
Sebuah fungsi Lambda untuk mengeksekusi. Anda dapat menggunakan fungsi Lambda yang telah Anda tetapkan. Untuk informasi lebih lanjut tentang cara membuat fungsi Lambda, lihat AWS Lambda Developer Guide (Panduan Developer).
-
IAM role yang menyediakan akses untuk menjalankan fungsi Lambda dari alur kerja Amazon SWF Anda.
-
Kode untuk menjadwalkan tugas Lambda dari dalam alur kerja Anda.
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 menggunakanSourceArn
danSourceAccount
kunci 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:SourceAccount
nilai dan akun yang direferensikan dalamaws:SourceArn
nilai harus menggunakan ID akun yang sama bila digunakan dalam pernyataan kebijakan yang sama.
Dalam contoh kebijakan kepercayaan berikut, kami menggunakanSourceArn
kunci konteks untuk membatasi peran layanan IAM untuk hanya digunakan dalam eksekusi Amazon Simple Workflow Service miliksomeDomain
di 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 menggunakanSourceAccount
kunci 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 menggunakanAWSLambdaRolememberikan akses Amazon SWF guna memanggil fungsi Lambda
-
Pilih Roles (Peran), kemudian Create New Role (Buat Peran Baru).
-
Beri nama bagi peran Anda, misalnya
swf-lambda
dan pilih Next Step (Langkah Selanjutnya). -
Di bawah AWS Service Roles (Peran Layanan), pilih Amazon SWF, dan pilih Next Step (Langkah Berikutnya).
-
PadaLampirkan Kebijakanlayar, pilihAWSLambdaRoledari dalam daftar.
-
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
-
Pilih Policies (Kebijakan), kemudian Create Policy (Buat Kebijakan).
-
PilihSalinAWSKebijakan Terkeloladan pilihAWSLambdaRoledari dalam daftar. Sebuah kebijakan akan dibuat untuk Anda. Anda memiliki opsi untuk mengedit nama dan deskripsi kebijakan untuk menyesuaikan kebutuhan Anda.
-
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.
-
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 peranAWSLambdaRolekebijakan. sebaliknya, pilih kebijakan Anda sendiri saat membuat peran.
Untuk membuat peran Amazon SWF menggunakan kebijakan Lambda Anda
-
Pilih Roles (Peran), kemudian Create New Role (Buat Peran Baru).
-
Beri nama bagi peran Anda, misalnya
swf-lambda-function
dan pilih Next Step (Langkah Selanjutnya). -
Di bawah AWS Service Roles (Peran Layanan), pilih Amazon SWF, dan pilih Next Step (Langkah Berikutnya).
-
Pada layar Attach Policy (Lampirkan Kebijakan), pilih kebijakan khusus fungsi Lambda Anda dari daftar.
-
Pilih Next Step (Langkah Selanjutnya) dan kemudian Create Role (Buat Baru) setelah Anda meninjau peran tersebut.
Jadwalkan tugas Lambda untuk eksekusi
Setelah Anda menentukan IAM role yang mengizinkan Anda untuk memanggil fungsi Lambda, Anda dapat menjadwalkan mereka untuk eksekusi sebagai bagian dari alur kerja Anda.
catatan
Proses ini sepenuhnya ditunjukkan olehHelloLambdasampeldiAWS SDK for Java.
Untuk menjadwalkan tugas Lambda untuk eksekusi
-
Dalam penerapan alur kerja Anda, dapatkan instans
LambdaFunctionClient
dengan memanggilgetLambdaFunctionClient()
pada instansDecisionContext
.// Get a LambdaFunctionClient instance DecisionContextProvider decisionProvider = new DecisionContextProviderImpl(); DecisionContext decisionContext = decisionProvider.getDecisionContext(); LambdaFunctionClient lambdaClient = decisionContext.getLambdaFunctionClient();
-
Jadwal tugas menggunakan metode
scheduleLambdaFunction()
diLambdaFunctionClient
, dengan meneruskan metode nama fungsi Lambda yang Anda buat dan data input apa pun untuk tugas Lambda.// Schedule the Lambda function for execution, using your IAM role for access. String lambda_function_name = "The name of your Lambda function."; String lambda_function_input = "Input data for your Lambda task."; lambdaClient.scheduleLambdaFunction(lambda_function_name, lambda_function_input);
-
Di starter eksekusi alur kerja Anda, tambahkan peran lambda IAM ke opsi alur kerja default dengan menggunakan
StartWorkflowOptions.withLambdaRole()
, dan kemudian teruskan pilihan ketika memulai alur kerja.// Workflow client classes are generated for you when you use the @Workflow // annotation on your workflow interface declaration. MyWorkflowClientExternalFactory clientFactory = new MyWorkflowClientExternalFactoryImpl(sdk_swf_client, swf_domain); MyWorkflowClientExternal workflow_client = clientFactory.getClient(); // Give the ARN of an IAM role that allows SWF to invoke Lambda functions on // your behalf. String lambda_iam_role = "arn:aws:iam::111111000000:role/swf_lambda_role"; StartWorkflowOptions workflow_options = new StartWorkflowOptions().withLambdaRole(lambda_iam_role); // Start the workflow execution workflow_client.helloWorld("User", workflow_options);
MelihatHelloLambdasampel
Contoh yang menyediakan implementasi alur kerja yang menggunakan tugas Lambda disediakan di AWS SDK for Java. Untuk melihat dan/atau menjalankannya, download the source
Deskripsi lengkap tentang bagaimana membangun dan menjalankanHelloLambdasampel disediakan dalam file README disediakan denganAWS Flow Frameworkuntuk sampel Java.