Asynchronen Aufruf der Backend-Lambda-Funktion einrichten - Amazon API Gateway

Asynchronen Aufruf der Backend-Lambda-Funktion einrichten

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) festlegen. Gehen Sie hierzu folgendermaßen vor:

Asynchronen Lambda-Aufruf in der API Gateway-Konsole konfigurieren

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.

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

  3. 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

Damit alle Aufrufe asynchron sind:

  • Fügen Sie dem Abschnitt x-amazon-apigateway-integration den X-Amz-Invocation-Type-Header 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 dem folgenden Header hinzu.

    "parameters" : [ { "name" : "InvocationType", "in" : "header", "schema" : { "type" : "string" } } ]
  2. Fügen Sie dem Abschnitt x-amazon-apigateway-integration den X-Amz-Invocation-Type-Header 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" }
  3. Clients können den InvocationType: Event-Header in API-Anforderungen für asynchrone Aufrufe oder InvocationType: RequestResponse für synchrone Aufrufe einschließen.