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.
Lambda-Proxy-Integrationen in API Gateway einrichten
Themen
- API Gateway Lambda-Proxy-Integration kennenlernen
- Support für mehrwertige Header- und Abfragezeichenfolgenparameter
- Proxy-Ressource mit Lambda-Proxy-Integration einrichten
- Einrichten der Lambda-Proxy-Integration mithilfe der AWS CLI
- Eingabeformat einer Lambda-Funktion für die Proxy-Integration
- Ausgabeformat einer Lambda-Funktion für die Proxy-Integration
API Gateway Lambda-Proxy-Integration kennenlernen
Die Amazon API Gateway-Lambda-Proxy-Integration ist ein einfacher, leistungsstarker und schneller Mechanismus zur Erstellung einer API mit der Einrichtung einer einzigen API-Methode. Die Lambda-Proxy-Integration ermöglicht es dem Client, eine einzelne Lambda-Funktion im Backend aufzurufen. Die Funktion greift auf viele Ressourcen oder Funktionen anderer - AWS Services zu, einschließlich des Aufrufs anderer Lambda-Funktionen.
Bei der Lambda-Proxy-Integration übergibt API Gateway beim Senden einer API-Anfrage ein Ereignisobjekt an die integrierte Lambda-Funktion. Allerdings wird die Reihenfolge der Anfrageparameter nicht beibehalten. Diese Anforderungsdaten umfassen die Abfrage-Header, Parameter für Abfragezeichenfolgen, die URL-Pfadvariablen, die Nutzlast und API-Konfigurationsdaten. Die Konfigurationsdaten können den aktuellen Bereitstellungsstufennamen, Stufenvariablen, die Benutzeridentität oder den Autorisierungskontext (falls vorhanden) umfassen. Die Backend-Lambda-Funktion analysiert die eingehenden Anfragedaten, um die eigene Antwort zu bestimmen. Damit API Gateway die Lambda-Ausgabe als API-Antwort an den Client weiterleiten kann, muss die Lambda-Funktion das Ergebnis in diesem Format zurückgeben.
Da API Gateway für die Lambda-Proxy-Integration zwischen dem Client und der Backend-Lambda-Funktion nur unwesentlich eingreift, können sich der Client und die integrierte Lambda-Funktion an Änderungen in der jeweils anderen Funktion anpassen, ohne die bestehende Integrationseinrichtung der API zu stören. Hierzu muss der Client den Anwendungsprotokollen der Backend-Lambda-Funktion folgen.
Sie können eine Lambda-Proxy-Integration für jede API-Methode einrichten. Aber eine Lambda-Proxy-Integration ist leistungsstärker, wenn sie über eine allgemeine Proxy-Ressource für eine API-Methode konfiguriert wird. Die allgemeine Proxy-Ressource kann durch eine spezielle Vorlagenpfadvariable {proxy+}
, den Catch-All-ANY
-Methodenplatzhalter oder beides angegeben werden. Der Client kann die Eingabe an die Backend-Lambda-Funktion in der eingehenden Anfrage als Anfrageparameter oder als entsprechende Nutzlast übergeben. Zu den Anforderungsparametern gehören Header-, URL-Pfadvariablen, Abfragezeichenfolgenparameter und die entsprechende Nutzlast. Die integrierte Lambda-Funktion prüft alle Eingangsquellen vor ihrer Verarbeitung und der Antwort an den Client mit sinnvollen Fehlermeldungen, falls die erforderliche Eingabe fehlt.
Beim Aufrufen einer mit der allgemeinen HTTP-Methode ANY
und der allgemeinen Ressource {proxy+}
integrierten API-Methode sendet der Client eine Anforderung mit einer bestimmten HTTP-Methode statt mit ANY
. Der Client gibt zudem einen bestimmten URL-Pfad statt {proxy+}
an und umfasst alle erforderlichen Header, Abfragezeichenfolgenparameter oder eine anwendbare Nutzlast.
Die folgende Liste enthält eine Zusammenfassung des Laufzeitverhaltens verschiedener API-Methoden bei der Lambda-Proxy-Integration:
-
ANY /{proxy+}
: Der Client muss eine bestimmte HTTP-Methode auswählen, eine bestimmte Ressourcenpfadhierarchie festlegen und kann alle Header, Parameter für Abfragezeichenfolgen und den Payload für die Eingabe an die integrierte Lambda-Funktion festlegen. -
ANY /res
: Der Client muss eine bestimmte HTTP-Methode auswählen und kann alle Header, Parameter für Abfragezeichenfolgen und die Nutzlast für die Eingabe an die integrierte Lambda-Funktion festlegen. -
GET|POST|PUT|... /{proxy+}
: Der Client kann eine bestimmte Ressourcenpfadhierarchie festlegen und kann alle Header, Parameter für Abfragezeichenfolgen und die Nutzlast für die Eingabe an die integrierte Lambda-Funktion festlegen. -
GET|POST|PUT|... /res/{path}/...
: Der Client muss ein bestimmtes Pfadsegment (für die{path}
-Variable) festlegen und kann alle Anfrage-Header, Parameter für Abfragezeichenfolgen und die Nutzlast für die Eingabedaten an die integrierte Lambda-Funktion festlegen. -
GET|POST|PUT|... /res
: Der Client kann bestimmte Anfrage-Header auswählen und kann alle Header, Parameter für Abfragezeichenfolgen und die Nutzlast für die Eingabedaten an die integrierte Lambda-Funktion festlegen.
Sowohl die Proxy-Ressource {proxy+}
und die benutzerdefinierte Ressource {custom}
werden als Vorlagenpfadvariablen ausgedrückt. Allerdings kann {proxy+}
auf alle Ressourcen in einer Pfadhierarchie verweisen, während sich {custom}
nur auf ein bestimmtes Pfadsegment bezieht. Beispielsweise könnte ein Lebensmittelgeschäft sein Online-Produktsortiment nach Abteilungsnamen, Kategorien und Produktarten organisieren. Die Website des Lebensmittelgeschäfts kann dann verfügbare Produkte über die folgenden Vorlagenpfadvariablen darstellen: /{department}/{produce-category}/{product-type}
. Zum Beispiel werden Äpfel mit /produce/fruit/apple
und Karotten mit /produce/vegetables/carrot
dargestellt. Es kann auch /{proxy+}
als Platzhalter für eine beliebige Abteilung, eine beliebige Kategorie oder einen Produkttyp verwendet werden, nach dem ein Kunde im Online-Shop suchen kann. Beispielsweise kann /{proxy+}
auf eines der folgenden Elemente verweisen:
-
/produce
-
/produce/fruit
-
/produce/vegetables/carrot
Um Kunden nach den verfügbaren Produkten, der Kategorie und der zugeordneten Abteilung suchen zu lassen, können Sie eine einzelne GET /{proxy+}
-Methode mit Leseberechtigungen bereitstellen. Um einem Supervisor das Aktualisieren des produce
Abteilungsbestands zu ermöglichen, können Sie eine andere, einzelne PUT /produce/{proxy+}
-Methode mit Lese-/Schreibberechtigungen hinzufügen. Um einem Kassierer das Aktualisieren der Gesamtsumme einer Gemüsesorte zu ermöglichen, können Sie eine POST
/produce/vegetables/{proxy+}
-Methode mit Lese-/Schreibberechtigungen einrichten. Wenn ein Shop-Manager sämtliche möglichen Aktionen für beliebige verfügbare Produkte durchführen soll, kann der Online-Shop-Entwickler die ANY /{proxy+}
Methode mit Lese-/Schreibberechtigungen hinzufügen. In jedem Fall muss der Kunde oder der Mitarbeiter zur Laufzeit ein bestimmtes Produkt eines bestimmten Typs in einer bestimmten Abteilung, eine bestimmte Kategorie in einer bestimmten Abteilung, oder eine bestimmte Abteilung auswählen.
Weitere Informationen zum Einrichten der API Gateway-Proxy-Integrationen finden Sie unter Einrichten der Proxy-Integration mit einer Proxy-Ressource.
Die Proxy-Integration erfordert, dass der Client über detaillierte Kenntnisse der Backend-Anforderungen verfügt. Um eine optimale App-Leistung und Benutzererfahrung sicherzustellen, muss der Backend-Entwickler die Anforderungen des Backends klar an den Client-Entwickler kommunizieren. Er muss einen robusten Feedback-Mechanismus für nicht erfüllte Anforderungen bereitstellen.
Support für mehrwertige Header- und Abfragezeichenfolgenparameter
API Gateway unterstützt mehrere gleichnamige Header und Abfragezeichenfolgenparameter. Mehrwertige Header sowie einwertige Header und Parameter können in denselben Anforderungen und Antworten kombiniert werden. Weitere Informationen finden Sie unter Eingabeformat einer Lambda-Funktion für die Proxy-Integration und Ausgabeformat einer Lambda-Funktion für die Proxy-Integration.
Proxy-Ressource mit Lambda-Proxy-Integration einrichten
Erstellen Sie zum Einrichten einer Proxy-Ressource mit dem Lambda-Proxy-Integrationstyp eine API-Ressource mit einem Greedy-Pfadparameter (z. B. /parent/{proxy+}
) und integrieren Sie diese Ressource mit einem Lambda-Funktions-Backend (z. B. arn:aws:lambda:us-west-2:123456789012:function:SimpleLambda4ProxyResource
) für die Methode ANY
. Der Greedy-Pfadparameter muss am Ende des API-Ressourcenpfads stehen. Wie bei einer Nicht-Proxy-Ressource können Sie die Proxy-Ressource einrichten, indem Sie die API Gateway-Konsole verwenden, eine OpenAPI-Definitionsdatei importieren oder die API Gateway-REST-API direkt aufrufen.
Die folgende OpenAPI-API-Definitionsdatei zeigt ein Beispiel für eine API mit einer Proxyressource, die mit der Lambda-Funktion SimpleLambda4ProxyResource
integriert wird.
Bei der Lambda-Proxy-Integration ordnet API Gateway zur Laufzeit eine eingehende Anfrage dem Eingabe-event
-Parameter der Lambda-Funktion zu. Die Eingabe umfasst die Anforderungsmethode, den Pfad, Header, jegliche Zeichenparameter, jegliche Nutzlast, zugehörigen Kontext und alle definierten Stufenvariablen. Eine Beschreibung des Eingabeformats finden Sie unter Eingabeformat einer Lambda-Funktion für die Proxy-Integration. Damit API Gateway die Lambda-Ausgabe erfolgreich den HTTP-API-Antworten zuordnen kann, muss die Lambda-Funktion das Ergebnis in dem unter Ausgabeformat einer Lambda-Funktion für die Proxy-Integration beschriebenen Format ausgeben.
Bei der Lambda-Proxy-Integration einer Proxy-Ressource durch die ANY
-Methode dient die einzelne Backend-Lambda-Funktion als Ereignis-Handler für alle Anfragen über die Proxy-Ressource. Beispielsweise können Sie zum Protokollieren der Datenverkehrsmuster ein Mobilgerät veranlassen, seinen Standort mit Angaben zu Bundesland, Stadt, Straße und Gebäude zu senden, indem Sie eine Anforderung mit /state/city/street/house
im URL-Pfad für die Proxy-Ressource übermitteln. Die Backend-Lambda-Funktion kann dann den URL-Pfad analysieren und die Location-tuples in eine DynamoDB-Tabelle einfügen.
Einrichten der Lambda-Proxy-Integration mithilfe der AWS CLI
In diesem Abschnitt zeigen wir, wie Sie verwenden, AWS CLI um eine API mit der Lambda-Proxy-Integration einzurichten.
Anmerkung
Detaillierte Anweisungen zur Verwendung der API Gateway-Konsole zur Konfiguration einer Proxy-Ressource mit der Lambda-Proxy-Integration finden Sie unter Tutorial: Hello World REST-API mit Lambda-Proxy-Integration erstellen.
Als Beispiel verwenden wir die folgende Lambda-Beispielfunktion als Backend der API:
export const handler = function(event, context, callback) { console.log('Received event:', JSON.stringify(event, null, 2)); var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; var greeter = 'World'; if (event.greeter && event.greeter!=="") { greeter = event.greeter; } else if (event.body && event.body !== "") { var body = JSON.parse(event.body); if (body.greeter && body.greeter !== "") { greeter = body.greeter; } } else if (event.queryStringParameters && event.queryStringParameters.greeter && event.queryStringParameters.greeter !== "") { greeter = event.queryStringParameters.greeter; } else if (event.multiValueHeaders && event.multiValueHeaders.greeter && event.multiValueHeaders.greeter != "") { greeter = event.multiValueHeaders.greeter.join(" and "); } else if (event.headers && event.headers.greeter && event.headers.greeter != "") { greeter = event.headers.greeter; } res.body = "Hello, " + greeter + "!"; callback(null, res); };
Vergleicht man dies mit der benutzerdefinierten Lambda-Integrationseinrichtung , kann die Eingabe für diese Lambda-Funktion in den Anfrageparametern und im Datenteil definiert werden. Sie haben mehr Spielraum, um dem Client die Weitergabe der gleichen Eingabedaten zu ermöglichen. Hier kann der Client den Namen von "greeter" als Abfragezeichenfolgeparameter, Kopfzeile oder Texteigenschaft übergeben. Die Funktion kann außerdem die benutzerdefinierte Lambda-Integration unterstützen. Die API-Einrichtung ist einfacher. Sie müssen keine Methoden- oder Integrationsantwort konfigurieren.
So richten Sie eine Lambda-Proxy-Integration mithilfe der ein AWS CLI
-
Rufen Sie den Befehl
create-rest-api
auf, um eine API zu erstellen:aws apigateway create-rest-api --name 'HelloWorld (AWS CLI)' --region us-west-2
Notieren Sie den in der Antwort für die API-
id
angegebenen Wert (te6si5ach7
).{ "name": "HelloWorldProxy (AWS CLI)", "id": "te6si5ach7", "createdDate": 1508461860 }
Sie benötigen die API-
id
in diesem Abschnitt. -
Rufen Sie den Befehl
get-resources
auf, um dieid
der Stammressource zu ermitteln.aws apigateway get-resources --rest-api-id te6si5ach7 --region us-west-2
Die erfolgreiche Antwort wird wie folgt angezeigt:
{ "items": [ { "path": "/", "id": "krznpq9xpg" } ] }
Notieren Sie den
id
-Wert (krznpq9xpg
) der Ressource. Sie benötigen diese in den nächsten Schritten. -
Rufen Sie
create-resource
auf, um eine API Gateway-Ressource/greeting
zu erstellen:aws apigateway create-resource --rest-api-id te6si5ach7 \ --region us-west-2 \ --parent-id krznpq9xpg \ --path-part {proxy+}
Eine erfolgreiche Antwort ähnelt dem folgenden Beispiel:
{ "path": "/{proxy+}", "pathPart": "{proxy+}", "id": "2jf6xt", "parentId": "krznpq9xpg" }
Notieren Sie den ausgegebenen
id
-Wert (2jf6xt
) der{proxy+}
-Ressource. Sie benötigen die ID, um im nächsten Schritt eine Methode auf der/{proxy+}
-Ressource zu erstellen. -
Rufen Sie
put-method
zum Erstellen einerANY
-MethodenanforderungANY /{proxy+}
auf:aws apigateway put-method --rest-api-id te6si5ach7 \ --region us-west-2 \ --resource-id 2jf6xt \ --http-method ANY \ --authorization-type "NONE"
Eine erfolgreiche Antwort ähnelt dem folgenden Beispiel:
{ "apiKeyRequired": false, "httpMethod": "ANY", "authorizationType": "NONE" }
Diese API-Methode gestattet dem Client, einen Gruß über die Lambda-Funktion am Backend zu empfangen oder zu senden.
-
Rufen Sie
put-integration
auf, um die Integration derANY /{proxy+}
-Methode mit einer Lambda-Funktion namensHelloWorld
einzurichten. Diese Funktion beantwortet die Anforderung mit der Nachricht"Hello, {name}!"
, sofern dergreeter
-Parameter angegeben wurde, oder"Hello, World!"
, wenn kein Abfragezeichenfolgeparameter festgelegt wurde.aws apigateway put-integration \ --region us-west-2 \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method ANY \ --type AWS_PROXY \ --integration-http-method POST \ --uri arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:HelloWorld/invocations \ --credentials arn:aws:iam::123456789012:role/apigAwsProxyRole
Wichtig
Für Lambda-Integrationen müssen Sie entsprechend der Spezifikation der Lambda-Service-Aktion für Funktionsaufrufe die HTTP-Methode
POST
für die Integrationsanfrage verwenden. Die IAM-RolleapigAwsProxyRole
muss über Richtlinien verfügen, die es demapigateway
-Service erlauben, Lambda-Funktionen aufzurufen. Weitere Informationen zu IAM-Berechtigungen finden Sie unter API Gateway-Berechtigungsmodell für den Aufruf einer API.Im Erfolgsfall sieht die Ausgabe folgendermaßen oder ähnlich aus:
{ "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "uri": "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:1234567890:function:HelloWorld/invocations", "httpMethod": "POST", "cacheNamespace": "vvom7n", "credentials": "arn:aws:iam::1234567890:role/apigAwsProxyRole", "type": "AWS_PROXY" }
Anstatt eine IAM-Rolle für
credentials
bereitzustellen, können Sie den Befehl add-permission aufrufen, um ressourcenbasierte Berechtigungen hinzuzufügen. Dies erledigt die API Gateway-Konsole. -
Rufen Sie
create-deployment
auf, um die API für einetest
-Stufe bereitzustellen:aws apigateway create-deployment --rest-api-id te6si5ach7 --stage-name test --region us-west-2
-
Testen Sie die API mithilfe der folgenden cURL-Befehle in einem Terminal.
API-Aufruf mit dem Abfragezeichenfolgeparameter
?greeter=jane
:curl -X GET 'https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/greeting?greeter=jane'
API-Aufruf mit einem Header-Parameter
greeter:jane
:curl -X GET https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/hi \ -H 'content-type: application/json' \ -H 'greeter: jane'
API-Aufruf mit einem Textkörper-Parameter
{"greeter":"jane"}
:curl -X POST https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/hi \ -H 'content-type: application/json' \ -d '{ "greeter": "jane" }'
In allen Fällen ist die Ausgabe eine Antwort mit dem folgenden Antworttext: 200
Hello, jane!
Eingabeformat einer Lambda-Funktion für die Proxy-Integration
Bei der Lambda-Proxy-Integration ordnet API Gateway die gesamte Client-Anforderung dem event
-Eingabeparameter der Backend-Lambda-Funktion zu. Das folgende Beispiel zeigt die Struktur eines Ereignisses, das API Gateway an eine Lambda-Proxy-Integration sendet.
{ "resource": "/my/path", "path": "/my/path", "httpMethod": "GET", "headers": { "header1": "value1", "header2": "value1,value2" }, "multiValueHeaders": { "header1": [ "value1" ], "header2": [ "value1", "value2" ] }, "queryStringParameters": { "parameter1": "value1,value2", "parameter2": "value" }, "multiValueQueryStringParameters": { "parameter1": [ "value1", "value2" ], "parameter2": [ "value" ] }, "requestContext": { "accountId": "123456789012", "apiId": "id", "authorizer": { "claims": null, "scopes": null }, "domainName": "id.execute-api.us-east-1.amazonaws.com", "domainPrefix": "id", "extendedRequestId": "request-id", "httpMethod": "GET", "identity": { "accessKey": null, "accountId": null, "caller": null, "cognitoAuthenticationProvider": null, "cognitoAuthenticationType": null, "cognitoIdentityId": null, "cognitoIdentityPoolId": null, "principalOrgId": null, "sourceIp": "IP", "user": null, "userAgent": "user-agent", "userArn": null, "clientCert": { "clientCertPem": "CERT_CONTENT", "subjectDN": "www.example.com", "issuerDN": "Example issuer", "serialNumber": "a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1", "validity": { "notBefore": "May 28 12:30:02 2019 GMT", "notAfter": "Aug 5 09:36:04 2021 GMT" } } }, "path": "/my/path", "protocol": "HTTP/1.1", "requestId": "id=", "requestTime": "04/Mar/2020:19:15:17 +0000", "requestTimeEpoch": 1583349317135, "resourceId": null, "resourcePath": "/my/path", "stage": "$default" }, "pathParameters": null, "stageVariables": null, "body": "Hello from Lambda!", "isBase64Encoded": false }
Anmerkung
Wählen Sie im Bereich
-
Der
headers
Schlüssel kann nur einwertige Header enthalten -
Der
multiValueHeaders
Schlüssel kann mehrwertige Header sowie einwertige Header enthalten. -
Wenn Sie Werte sowohl für
headers
als auch fürmultiValueHeaders
angeben, führt API Gateway diese in einer einzigen Liste zusammen. Wenn in beiden das gleiche Schlüssel / Wert-Paar angegeben ist, werden nur die Werte von in dermultiValueHeaders
zusammengeführten Liste angezeigt.
In der Eingabe an die Backend-Lambda-Funktion ist das requestContext
-Objekt eine Zuordnung von Schlüssel-Werte-Paaren. In jedem Paar ist der Schlüssel der Name einer $context-Variableneigenschaft, und der Wert ist der Wert dieser Eigenschaft. API Gateway kann der Zuordnung neue Schlüssel hinzufügen.
Abhängig von den aktivierten Funktionen kann die Zuweisung requestContext
von API zu API unterschiedlich sein. Im obigen Beispiel ist z. B. kein Autorisierungstyp angegeben, sodass keine $context.authorizer.*
- oder $context.identity.*
-Eigenschaften vorhanden sind. Wenn ein Autorisierungstyp angegeben wird, bewirkt dies, dass API Gateway autorisierte Benutzerinformationen wie folgt in einem requestContext.identity
-Objekt an den Integrationsendpunkt weiterleitet:
-
Wenn der Autorisierungstyp
AWS_IAM
ist, enthalten die autorisierten Benutzerinformationen$context.identity.*
-Eigenschaften. -
Wenn der Autorisierungstyp
COGNITO_USER_POOLS
ist (Amazon Cognito-Genehmiger), enthalten die autorisierten Benutzerinformationen die Eigenschaften$context.identity.cognito*
und$context.authorizer.claims.*
. -
Wenn der Autorisierungstyp
CUSTOM
(Lambda-Genehmiger) ist, enthalten die autorisierten Benutzerinformationen$context.authorizer.principalId
- und andere relevante$context.authorizer.*
-Eigenschaften.
Ausgabeformat einer Lambda-Funktion für die Proxy-Integration
Bei der Lambda-Proxy-Integration erfordert API Gateway, dass die Backend-Lambda-Funktion die Ausgabe gemäß dem folgenden JSON-Format zurückgibt:
{ "isBase64Encoded":
true|false
, "statusCode":httpStatusCode
, "headers": { "headerName
": "headerValue
", ... }, "multiValueHeaders": { "headerName
": ["headerValue
", "headerValue2
", ...], ... }, "body": "...
" }
In der Konsolenausgabe:
-
Die Schlüssel
headers
undmultiValueHeaders
können nicht angegeben werden, wenn keine zusätzlichen Antwortheader zurückgegeben werden sollen. -
Der
headers
Schlüssel kann nur einwertige Header enthalten -
Der
multiValueHeaders
Schlüssel kann mehrwertige Header sowie einwertige Header enthalten. Sie können denmultiValueHeaders
Schlüssel verwenden, um alle zusätzlichen Header anzugeben, einschließlich einzelner Werte. -
Wenn Sie Werte sowohl für
headers
als auch fürmultiValueHeaders
angeben, führt API Gateway diese in einer einzigen Liste zusammen. Wenn in beiden das gleiche Schlüssel / Wert-Paar angegeben ist, werden nur die Werte von in dermultiValueHeaders
zusammengeführten Liste angezeigt.
Um CORS für die Lambda-Proxy-Integration zu aktivieren, müssen Sie der Ausgabe headers
Access-Control-Allow-Origin:
hinzufügen. domain-name
kann domain-name
*
für einen beliebigen Domänennamen sein. Die Ausgabe body
wird als Nutzlast der Methodenanforderung an das Frontend angeordnet Wenn body
ein binärer Blob ist, können Sie ihn als Base64-kodierte Zeichenfolge codieren, indem Sie isBase64Encoded
auf true
festlegen und */*
als Binary Media Type (Binärer Medientyp) konfigurieren. Andernfalls können Sie den Wert auf false
festlegen oder keinen Wert angeben.
Anmerkung
Weitere Informationen zur Aktivierung der Unterstützung von Binärdateien finden Sie unter Binärunterstützung über die API Gateway-Konsole aktivieren. Eine Beispielfunktion für Lambda finden Sie unter Rückgabe binärer Medien von einer Lambda-Proxy-Integration.
Wenn die Funktionsausgabe ein anderes Format hat, gibt API Gateway eine 502 Bad
Gateway
-Fehlerantwort zurück.
Um eine Antwort in einer Lambda-Funktion in Node.js zurückzugeben, können Sie Befehle wie den folgenden verwenden:
-
Um ein erfolgreiches Ergebnis zurückzugeben, rufen Sie au
callback(null, {"statusCode": 200, "body": "results"})
. -
Rufen Sie zum Auslösen einer Ausnahme au
callback(new Error('internal server error'))
. -
Bei einem Fehler auf Clientseite, z. B. wenn ein erforderlicher Parameter fehlt, können Sie
callback(null, {"statusCode": 400, "body": "Missing parameters of ..."})
aufrufen, um den Fehler zurückzugeben, ohne eine Ausnahme auszulösen.
In einer Lambda-async
-Funktion in Node.js würde die entsprechende Syntax so lauten:
-
Um ein erfolgreiches Ergebnis zurückzugeben, rufen Sie au
return {"statusCode": 200, "body": "results"}
. -
Rufen Sie zum Auslösen einer Ausnahme au
throw new Error("internal server error")
. -
Bei einem Fehler auf Clientseite, z. B. wenn ein erforderlicher Parameter fehlt, können Sie
return {"statusCode": 400, "body": "Missing parameters of ..."}
aufrufen, um den Fehler zurückzugeben, ohne eine Ausnahme auszulösen.