

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Asynchronen Aufruf der Backend-Lambda-Funktion einrichten
<a name="set-up-lambda-integration-async"></a>

Bei der nicht-proxy (benutzerdefinierten) Lambda-Integration wird die Backend-Lambda-Funktion standardmäßig synchron aufgerufen. Dies ist das gewünschte Verhalten für die meisten REST-API-Operationen. Einige Anwendungen erfordern jedoch eine asynchrone Durchführung (als Batchvorgang oder Operation mit langer Latenzzeit), in der Regel durch eine separate Backend-Komponente. In diesem Fall wird die Lambda-Backend-Funktion asynchron aufgerufen, und die Frontend-REST-API-Methode gibt das Ergebnis nicht zurück.

Sie können die Lambda-Funktion für eine nicht-proxy Lambda-Integration so konfigurieren, dass sie asynchron aufgerufen wird, indem Sie `'Event'` als [Lambda invocation type (Lambda-Aufruftyp)](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html) festlegen. Gehen Sie hierzu folgendermaßen vor:

## Asynchronen Lambda-Aufruf in der API Gateway-Konsole konfigurieren
<a name="asynchronous-invocation-console-examples"></a>

Damit alle Aufrufe asynchron sind:
+ Fügen Sie in **Integrationsanforderung** einen `X-Amz-Invocation-Type`-Header mit dem statischen Wert `'Event'` hinzu.

Damit Clients entscheiden können, ob Aufrufe asynchron oder synchron sind:

1. Fügen Sie in **Methodenanforderung** einen `InvocationType`-Header hinzu.

1. Fügen Sie in **Integrationsanforderung** einen `X-Amz-Invocation-Type`-Header mit dem Mapping-Ausdruck `method.request.header.InvocationType` hinzu.

1. Clients können den `InvocationType: Event`-Header in API-Anforderungen für asynchrone Aufrufe oder `InvocationType: RequestResponse` für synchrone Aufrufe einschließen.

## Asynchronen Lambda-Aufruf mit OpenAPI konfigurieren
<a name="asynchronous-invocation-OpenAPI-examples"></a>

Damit alle Aufrufe asynchron sind:
+  Fügen Sie die `X-Amz-Invocation-Type` Kopfzeile zum **x-amazon-apigateway-integration**Abschnitt hinzu.

  ```
  "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"
          }
  ```

Damit Clients entscheiden können, ob Aufrufe asynchron oder synchron sind:

1.  Fügen Sie ein beliebiges [OpenAPI Path Item Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#pathItemObject) dem folgenden Header hinzu. 

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

1.  Fügen Sie die `X-Amz-Invocation-Type` Kopfzeile zum **x-amazon-apigateway-integration**Abschnitt hinzu.

   ```
   "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.  Clients können den `InvocationType: Event`-Header in API-Anforderungen für asynchrone Aufrufe oder `InvocationType: RequestResponse` für synchrone Aufrufe einschließen. 

## Konfigurieren Sie den asynchronen Lambda-Aufruf mit CloudFormation
<a name="asynchronous-invocation-cfn-examples"></a>

Die folgenden CloudFormation Vorlagen zeigen, wie Sie den `AWS::ApiGateway::Method` für asynchrone Aufrufe konfigurieren.

Damit alle Aufrufe asynchron sind:

```
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'
```

Damit Clients entscheiden können, ob Aufrufe asynchron oder synchron sind:

```
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'
```

 Clients können den `InvocationType: Event`-Header in API-Anforderungen für asynchrone Aufrufe oder `InvocationType: RequestResponse` für synchrone Aufrufe einschließen. 