Arbeiten mit AWS Lambda-Proxy-Integrationen für HTTP-APIs
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 der Daten an, die API Gateway an eine Lambda-Integration sendet, und wie API Gateway die Antwort von Lambda 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
.
Die folgenden Beispiele zeigen die Struktur jeder Nutzlastformatversion.
Headernamen bestehen aus Kleinbuchstaben.
Das Format 2.0
hat keine multiValueHeaders
- oder multiValueQueryStringParameters
-Felder. Doppelte Header werden mit Kommas kombiniert und in das headers
-Feld aufgenommen. Doppelte Abfragezeichenfolgen werden mit Kommas kombiniert und in das queryStringParameters
-Feld aufgenommen.
Das Format 2.0
enthält ein neues cookies
-Feld. Alle Cookie-Header in der Anforderung werden mit Kommas kombiniert und dem cookies
-Feld hinzugefügt. In der Antwort an den Client wird jedes Cookie zu einem set-cookie
-Header.
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 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!
" }