

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

# Siapkan pemanggilan asinkron dari fungsi Lambda backend
<a name="set-up-lambda-integration-async"></a>

Dalam integrasi Lambda non-proxy (kustom), fungsi Lambda backend dipanggil secara sinkron secara default. Ini adalah perilaku yang diinginkan untuk sebagian besar operasi REST API. Beberapa aplikasi, bagaimanapun, memerlukan pekerjaan yang harus dilakukan secara asinkron (sebagai operasi batch atau operasi latensi panjang), biasanya oleh komponen backend terpisah. Dalam hal ini, fungsi Lambda backend dipanggil secara asinkron, dan metode REST API front-end tidak mengembalikan hasilnya.

[Anda dapat mengonfigurasi fungsi Lambda agar integrasi non-proxy Lambda dipanggil secara asinkron dengan menentukan sebagai jenis pemanggilan Lambda. `'Event'`](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html) Ini dilakukan sebagai berikut:

## Konfigurasikan pemanggilan asinkron Lambda di konsol API Gateway
<a name="asynchronous-invocation-console-examples"></a>

Agar semua pemanggilan menjadi asinkron:
+ Dalam **permintaan Integrasi**, tambahkan `X-Amz-Invocation-Type` header dengan nilai statis`'Event'`.

Bagi klien untuk memutuskan apakah pemanggilan asinkron atau sinkron:

1. Dalam **permintaan Metode**, tambahkan `InvocationType` header.

1. Dalam **permintaan Integrasi** tambahkan `X-Amz-Invocation-Type` header dengan ekspresi pemetaan. `method.request.header.InvocationType`

1. Klien dapat menyertakan `InvocationType: Event` header dalam permintaan API untuk pemanggilan asinkron atau untuk pemanggilan sinkron. `InvocationType: RequestResponse`

## Konfigurasikan pemanggilan asinkron Lambda menggunakan OpenAPI
<a name="asynchronous-invocation-OpenAPI-examples"></a>

Agar semua pemanggilan menjadi asinkron:
+  Tambahkan `X-Amz-Invocation-Type` header ke **x-amazon-apigateway-integration**bagian.

  ```
  "x-amazon-apigateway-integration" : {
            "type" : "aws",
            "httpMethod" : "POST",
            "uri" : "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:123456789012:function:my-function/invocations",
            "responses" : {
              "default" : {
                "statusCode" : "200"
              }
            },
            "requestParameters" : {
              "integration.request.header.X-Amz-Invocation-Type" : "'Event'"
            },
            "passthroughBehavior" : "when_no_match",
            "contentHandling" : "CONVERT_TO_TEXT"
          }
  ```

Bagi klien untuk memutuskan apakah pemanggilan asinkron atau sinkron:

1.  Tambahkan header berikut pada [OpenAPI Path Item](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#pathItemObject) Object. 

   ```
   "parameters" : [ {
   "name" : "InvocationType",
   "in" : "header",
   "schema" : {
     "type" : "string"
   }
   } ]
   ```

1.  Tambahkan `X-Amz-Invocation-Type` header ke **x-amazon-apigateway-integration**bagian.

   ```
   "x-amazon-apigateway-integration" : {
             "type" : "aws",
             "httpMethod" : "POST",
             "uri" : "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:123456789012:function:my-function/invocations",
             "responses" : {
               "default" : {
                 "statusCode" : "200"
               }
             },
             "requestParameters" : {
               "integration.request.header.X-Amz-Invocation-Type" : "method.request.header.InvocationType"
             },
             "passthroughBehavior" : "when_no_match",
             "contentHandling" : "CONVERT_TO_TEXT"
           }
   ```

1.  Klien dapat menyertakan `InvocationType: Event` header dalam permintaan API untuk pemanggilan asinkron atau untuk pemanggilan sinkron. `InvocationType: RequestResponse` 

## Konfigurasikan pemanggilan asinkron Lambda menggunakan CloudFormation
<a name="asynchronous-invocation-cfn-examples"></a>

 CloudFormation Template berikut menunjukkan cara mengkonfigurasi `AWS::ApiGateway::Method` untuk pemanggilan asinkron.

Agar semua pemanggilan menjadi asinkron:

```
AsyncMethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref AsyncResource
      HttpMethod: GET
      ApiKeyRequired: false
      AuthorizationType: NONE
      Integration:
        Type: AWS
        RequestParameters:
          integration.request.header.X-Amz-Invocation-Type: "'Event'"
        IntegrationResponses:
            - StatusCode: '200'
        IntegrationHttpMethod: POST
        Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${myfunction.Arn}$/invocations
      MethodResponses:
        - StatusCode: '200'
```

Bagi klien untuk memutuskan apakah pemanggilan asinkron atau sinkron:

```
AsyncMethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref AsyncResource
      HttpMethod: GET
      ApiKeyRequired: false
      AuthorizationType: NONE
      RequestParameters:
        method.request.header.InvocationType: false
      Integration:
        Type: AWS
        RequestParameters:
          integration.request.header.X-Amz-Invocation-Type: method.request.header.InvocationType
        IntegrationResponses:
            - StatusCode: '200'
        IntegrationHttpMethod: POST
        Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${myfunction.Arn}$/invocations
      MethodResponses:
        - StatusCode: '200'
```

 Klien dapat menyertakan `InvocationType: Event` header dalam permintaan API untuk pemanggilan asinkron atau untuk pemanggilan sinkron. `InvocationType: RequestResponse` 