Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Panggil Lambda dengan Step Functions
Step Functions dapat mengontrol AWS layanan tertentu langsung dari Amazon States Language (ASL). Untuk mempelajari selengkapnya, lihat Bekerja dengan layanan yang lain dan Meneruskan parameter ke API layanan.
Bagaimana integrasi Lambda yang Dioptimalkan berbeda dari integrasi Lambda SDK AWS
-
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 Pengolahan Input dan Output di Step Functions.
AWS Lambda API yang didukung:
-
-
Parameter yang Didukung
Parameter Step Functions dalam dinyatakan dalam PascalCase
Bahkan jika API layanan asli ada di camelCase, misalnya startSyncExecution
tindakan API, Anda menentukan parameter PascalCase, seperti:. StateMachineArn
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. Misalnya:
{ "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 fungsi ARN 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 fungsi Lambda atau alias tertentu dengan menentukan pilihan tersebut di ARN di bidang Resource
. Lihat yang berikut dalam dokumentasi Lambda:
Untuk informasi tentang cara mengonfigurasi IAM izin saat menggunakan Step Functions dengan AWS layanan lain, lihatKebijakan IAM untuk layanan terintegrasi.