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.
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 die
X-Amz-Invocation-Type
Kopfzeile zum x-amazon-apigateway-integrationAbschnitt 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 die
X-Amz-Invocation-Type
Kopfzeile zum x-amazon-apigateway-integrationAbschnitt 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.
Konfigurieren Sie den asynchronen Lambda-Aufruf mit AWS CloudFormation
Die folgenden AWS 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.