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

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

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 x-amazon-apigateway-integration Abschnitt 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 den -X-Amz-Invocation-TypeHeader 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" }
  3. Clients können den InvocationType: Event-Header in API-Anforderungen für asynchrone Aufrufe oder InvocationType: RequestResponse für synchrone Aufrufe einschließen.