Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memohon AWS Lambda Fungsi dengan Step Functions
Pelajari cara menggunakan Step Functions untuk menjalankan fungsi Lambda baik secara sinkron maupun asinkron sebagai bagian dari aplikasi tanpa server berbasis peristiwa.
Untuk belajar tentang berintegrasi dengan AWS servicesin Step Functions, lihat Integrasi layanan dan. Meneruskan parameter ke layanan API di Step Functions
Fitur utama integrasi Lambda yang Dioptimalkan
-
Payload
Bidang respons diuraikan dari Json yang melarikan diri ke Json. -
Jika respons berisi bidang
FunctionError
atau pengecualian dimunculkan dalam fungsi Lambda, tugas gagal.
Untuk informasi selengkapnya tentang mengelola input, output, dan hasil status, lihat Memproses input dan output di Step Functions.
Lambda yang Didukung APIs
-
-
Parameter yang Didukung
Contoh Alur Kerja
Berikut ini mencakup status Task
yang memanggil fungsi Lambda.
{
"StartAt":"CallLambda",
"States":{
"CallLambda":{
"Type":"Task",
"Resource":"arn:aws:states:::lambda:invoke",
"Parameters":{
"FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:MyFunction
"
},
"End":true
}
}
}
Berikut ini mencakup status Task
yang mengimplementasikan pola integrasi layanan callback.
{
"StartAt":"GetManualReview",
"States":{
"GetManualReview":{
"Type":"Task",
"Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
"Parameters":{
"FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:get-model-review-decision
",
"Payload":{
"model.$":"$.new_model",
"token.$":"$$.Task.Token"
},
"Qualifier":"prod-v1"
},
"End":true
}
}
}
Saat Anda menjalankan fungsi Lambda, eksekusi akan menunggu fungsi selesai. Jika Anda menjalankan fungsi Lambda dengan tugas panggilan balik, batas waktu detak jantung tidak mulai dihitung sampai setelah fungsi Lambda selesai mengeksekusi dan mengembalikan hasilnya. Selama fungsi Lambda dijalankan, batas waktu detak jantung tidak diberlakukan.
Dimungkinkan juga untuk memanggil Lambda secara asinkron menggunakan InvocationType
parameter, seperti yang terlihat pada contoh berikut:
catatan
Untuk pemanggilan fungsi Lambda yang asinkron, periode batas waktu detak jantung segera dimulai.
{
"Comment": "A Hello World example of the Amazon States Language using Pass states",
"StartAt": "Hello",
"States": {
"Hello": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:echo
",
"InvocationType": "Event"
},
"End": true
}
}
}
Ketika Task
hasilnya dikembalikan, output fungsi bersarang di dalam kamus metadata. Sebagai contoh:
{ "ExecutedVersion":"$LATEST", "Payload":"
FUNCTION OUTPUT
", "SdkHttpMetadata":{ "HttpHeaders":{ "Connection":"keep-alive", "Content-Length":"4", "Content-Type":"application/json", "Date":"Fri, 26 Mar 2021 07:42:02 GMT", "X-Amz-Executed-Version":"$LATEST", "x-amzn-Remapped-Content-Length":"0", "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010", "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0" }, "HttpStatusCode":200 }, "SdkResponseMetadata":{ "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3" }, "StatusCode":200 }
Atau, Anda dapat memanggil fungsi Lambda dengan menentukan ARN fungsi langsung di bidang “Sumber Daya”. Saat Anda menjalankan fungsi Lambda dengan cara ini, Anda tidak dapat .waitForTaskToken
menentukan, dan hasil tugas hanya berisi output fungsi.
{
"StartAt":"CallFunction",
"States":{
"CallFunction": {
"Type":"Task",
"Resource":"arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
",
"End": true
}
}
}
Anda dapat memanggil versi atau alias fungsi Lambda tertentu dengan menentukan opsi tersebut di ARN bidang. Resource
Lihat yang berikut dalam dokumentasi Lambda:
IAMkebijakan untuk menelepon AWS Lambda
Contoh template berikut menunjukkan bagaimana AWS Step Functions menghasilkan IAM kebijakan berdasarkan sumber daya dalam definisi mesin negara Anda. Untuk informasi selengkapnya, silakan lihat Bagaimana Step Functions menghasilkan IAM kebijakan untuk layanan terintegrasi dan Temukan pola integrasi layanan di Step Functions.
AWS Step Functions menghasilkan IAM kebijakan berdasarkan definisi mesin negara Anda. Untuk mesin negara dengan dua AWS Lambda tugas menyatakan bahwa panggilan function1
danfunction2
, kebijakan dengan lambda:Invoke
izin untuk dua fungsi harus digunakan.
Seperti yang ditunjukkan dalam contoh berikut.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"arn:aws:lambda:[[region]]
:[[accountId]]
:function:[[function1]]
",
"arn:aws:lambda:[[region]]
:[[accountId]]
:function:[[function2]]
"
]
}
]
}