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:
-
Fügen Sie in Methodenanforderung einen
InvocationType
-Header hinzu. -
Fügen Sie in Integrationsanforderung einen
X-Amz-Invocation-Type
-Header mit dem Mapping-Ausdruckmethod.request.header.InvocationType
hinzu. -
Clients können den
InvocationType: Event
-Header in API-Anforderungen für asynchrone Aufrufe oderInvocationType: 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:
-
Fügen Sie ein beliebiges OpenAPI Path Item Object
dem folgenden Header hinzu. "parameters" : [ { "name" : "InvocationType", "in" : "header", "schema" : { "type" : "string" } } ]
-
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" } -
Clients können den
InvocationType: Event
-Header in API-Anforderungen für asynchrone Aufrufe oderInvocationType: RequestResponse
für synchrone Aufrufe einschließen.