

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

# Memanggil AWS Lambda fungsi dengan Step Functions
<a name="connect-lambda"></a>

Pelajari cara menggunakan Step Functions untuk menjalankan fungsi Lambda baik secara sinkron maupun asinkron sebagai bagian dari aplikasi tanpa server berbasis peristiwa.

Untuk mempelajari tentang mengintegrasikan dengan AWS layanan di Step Functions, lihat [Integrasi layanan ](integrate-services.md) dan[Meneruskan parameter ke API layanan di Step Functions](connect-parameters.md).

**Fitur utama integrasi Lambda yang Dioptimalkan**  
`Payload`Bidang respons diuraikan dari Json yang melarikan diri ke Json.
Jika pengecualian dimunculkan dalam fungsi Lambda, Tugas akan gagal. Untuk contoh praktis, lihat[Menangani kondisi kesalahan di mesin status Step Functions](tutorial-handling-error-conditions.md). 

## Lambda yang Dioptimalkan APIs
<a name="connect-lambda-api"></a>
+ [https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)

## Contoh Alur Kerja
<a name="connect-lambda-api-examples"></a>

Berikut ini mencakup status `Task` yang memanggil fungsi Lambda.

```
{  
   "StartAt":"CallLambda",
   "States":{  
      "CallLambda":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:MyFunction"
         },
         "End":true
      }
   }
}
```

Berikut ini mencakup status `Task` yang mengimplementasikan pola integrasi layanan [callback](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"GetManualReview",
   "States":{  
      "GetManualReview":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:get-model-review-decision",
            "Payload":{  
               "model":"{% $states.input.my-model %}",
               "TaskToken": "{% $states.context.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:

```
{

  "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",
      "Arguments": {
        "FunctionName": "arn:aws:lambda:region:account-id:function:echo",
        "InvocationType": "Event"
      },
      "End": true
    }
  }
}
```

**catatan**  
Untuk pemanggilan fungsi Lambda yang asinkron, periode batas waktu detak jantung segera dimulai.

 Ketika `Task` hasilnya dikembalikan, output fungsi bersarang di dalam kamus metadata. 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
}
```

## Sumber daya fungsi yang ditentukan secara langsung
<a name="w2aac33c40c13"></a>

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:region:account-id:function:HelloFunction",
         "End": true
      }
   }
}
```

Dengan bentuk integrasi ini, fungsi dapat berhasil namun mengirim respons yang berisi `FunctionError` bidang. Dalam skenario itu, alur kerja Tugas akan gagal.

Anda dapat memanggil versi fungsi Lambda atau alias tertentu dengan menentukan pilihan tersebut di ARN di bidang `Resource`. Lihat yang berikut dalam dokumentasi Lambda:
+ [AWS Lambdapembuatan versi](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html)
+ [AWS Lambdaalias](https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html)

## Kebijakan IAM untuk menelepon AWS Lambda
<a name="lambda-iam"></a>

Contoh templat berikut menunjukkan cara AWS Step Functions menghasilkan kebijakan IAM berdasarkan sumber daya dalam definisi mesin status Anda. Untuk informasi selengkapnya, lihat [Bagaimana Step Functions menghasilkan kebijakan IAM untuk layanan terintegrasi](service-integration-iam-templates.md) dan [Temukan pola integrasi layanan di Step Functions](connect-to-resource.md).

Dalam contoh berikut, mesin status dengan dua status AWS Lambda tugas yang memanggil `function1` dan`function2`, kebijakan yang dibuat otomatis menyertakan `lambda:Invoke` izin untuk kedua fungsi.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:123456789012:function:myFn1",
                "arn:aws:lambda:us-east-1:123456789012:function:myFn2"
            ]
        }
    ]
}
```