Panggil Lambda dengan Step Functions - AWS Step Functions

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
  • PayloadBidang 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 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.