Erstellen von AWS Lambda-Proxy-Integrationen für HTTP-APIs in API Gateway
Eine Lambda-Proxy-Integration ermöglicht es Ihnen, eine API-Route in eine Lambda-Funktion zu integrieren. Wenn ein Client Ihre API aufruft, sendet API Gateway die Anfrage an die Lambda-Funktion und gibt die Antwort der Funktion an den Client zurück. Beispiele zum Erstellen einer HTTP-API finden Sie unter Erstellen einer HTTP-API.
Nutzlastformatversion
Die Nutzlastformatversion gibt das Format des Ereignisses an, das API Gateway an eine Lambda-Integration sendet und wie API Gateway die Lambda-Antwort interpretiert. Wenn Sie keine Nutzlastformatversion angeben, verwendet die AWS Management Console standardmäßig die neueste Version. Wenn Sie eine Lambda-Integration mithilfe der AWS CLI, AWS CloudFormation oder eines SDK erstellen, müssen Sie eine payloadFormatVersion
angeben. Die unterstützten Werte sind 1.0
und 2.0
.
Weitere Informationen zum Einrichten von payloadFormatVersion
, finden Sie unter create-integration. Weitere Informationen zur Ermittlung des payloadFormatVersion
einer vorhandenen Integration finden Sie unter get-integration
Nutzlastformatunterschiede
In der folgenden Liste sehen Sie die Unterschiede zwischen den Payload-Formatversionen 1.0
und 2.0
:
Das Format
2.0
hat keinemultiValueHeaders
- odermultiValueQueryStringParameters
-Felder. Doppelte Header werden mit Kommas kombiniert und in dasheaders
-Feld aufgenommen. Doppelte Abfragezeichenfolgen werden mit Kommas kombiniert und in dasqueryStringParameters
-Feld aufgenommen.-
Das Format
2.0
hatrawPath
. Wenn Sie eine API-Zuordnung verwenden, um Ihre Stufe mit einem benutzerdefinierten Domainnamen zu verbinden, stelltrawPath
den API-Zuordnungswert nicht bereit. Verwenden Sie die Formate1.0
undpath
, um auf die API-Zuordnung für Ihren benutzerdefinierten Domainnamen zuzugreifen. Das Format
2.0
enthält ein neuescookies
-Feld. Alle Cookie-Header in der Anforderung werden mit Kommas kombiniert und demcookies
-Feld hinzugefügt. In der Antwort an den Client wird jedes Cookie zu einemset-cookie
-Header.
Nutzdatenformatstruktur
Die folgenden Beispiele zeigen die Struktur jeder Nutzlastformatversion. Alle Header-Namen werden in Kleinbuchstaben angegeben.
Antwortformat der Lambda-Funktion
Die Nutzlastformatversion bestimmt die Struktur der Antwort, die Ihre Lambda-Funktion zurückgeben muss.
Lambda-Funktionsantwort für Format 1.0
Bei der 1.0
-Formatversion müssen Lambda-Integrationen eine Antwort im folgenden JSON-Format zurückgeben.
{ "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": { "headername": "headervalue", ... }, "multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... }, "body": "..." }
Lambda-Funktionsantwort für Format 2.0
Bei der 2.0
-Formatversion kann API Gateway das Antwortformat für Sie ableiten. API Gateway geht von den folgenden Annahmen aus, wenn Ihre Lambda-Funktion gültigen JSON-Code und keinen zurückgib statusCode
:
-
isBase64Encoded
istfalse
. -
statusCode
ist200
. -
content-type
istapplication/json
. -
body
ist die Antwort der Funktion.
Die folgenden Beispiele zeigen die Ausgabe einer Lambda-Funktion und die Interpretation von API Gateway.
Lambda-Funktionsausgabe | API Gateway-Interpretation |
---|---|
|
|
|
|
Um die Antwort anzupassen, sollte Ihre Lambda-Funktion eine Antwort im folgenden Format zurückgeben.
{ "cookies" : ["
cookie1
", "cookie2
"], "isBase64Encoded": true|false, "statusCode":httpStatusCode
, "headers": { "headername
": "headervalue
", ... }, "body": "Hello from Lambda!
" }