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.
Eine Funktions-URL ist ein dedizierter HTTPS-Endpunkt für Ihre Lambda-Funktion. Sie können eine Funktions-URL über die Lambda-Konsole oder die Lambda-API erstellen und konfigurieren.
Tipp
Lambda bietet zwei Möglichkeiten, Ihre Funktion über einen HTTP-Endpunkt aufzurufen: function URLs und Amazon API Gateway. Wenn Sie sich nicht sicher sind, welche Methode für Ihren Anwendungsfall am besten geeignet ist, finden Sie weitere Informationen unter. Wählen Sie eine Methode, um Ihre Lambda-Funktion über eine HTTP-Anfrage aufzurufen
Wenn Sie eine Funktions-URL erstellen, generiert Lambda automatisch einen eindeutigen URL-Endpunkt für Sie. Sobald Sie eine Funktions-URL erstellt haben, ändert sich ihr URL-Endpunkt nie mehr. Funktions-URL-Endpunkte haben das folgende Format:
https://
<url-id>
.lambda-url.<region>.on.aws
Anmerkung
Funktionen URLs werden in den folgenden Ländern nicht unterstützt AWS-Regionen: Asien-Pazifik (Hyderabad) (ap-south-2
), Asien-Pazifik (Melbourneap-southeast-4
) (), Asien-Pazifik (Malaysiaap-southeast-5
) (), Kanada West (Calgary) (ca-west-1
), Europa (Spanien) (eu-south-2
), Europa (Zürich) (eu-central-2
), Israel (Tel Aviv) (il-central-1
) und Naher Osten (VAE) (me-central-1
).
Function URLs ist Dual-Stack-fähig und unterstützt und. IPv4 IPv6 Nachdem Sie Ihre Funktions-URL konfiguriert haben, können Sie Ihre Funktion über ihren HTTP(S)-Endpunkt über einen Webbrowser, cURL, Postman oder einen beliebigen HTTP-Client aufrufen. Um eine Funktions-URL aufzurufen, müssen Sie lambda:InvokeFunctionUrl
-Berechtigungen haben. Weitere Informationen finden Sie unter Zugriffskontrolle.
Grundlagen des Aufrufs von Funktions-URLs
Wenn Ihre Funktions-URL den Auth-Typ AWS_IAM
hat, müssen Sie jede HTTP-Anfrage mit der AWS Signature Version 4 (SigV4) signieren. Tools wie Postman
Wenn Sie kein Tool verwenden, um HTTP-Anfragen an Ihre Funktions-URL zu signieren, müssen Sie jede Anfrage manuell mit SigV4 signieren. Wenn Ihre Funktions-URL eine Anfrage erhält, berechnet Lambda auch die SigV4-Signatur. Nur wenn die Signaturen übereinstimmen, verarbeitet Lambda die Anfrage. Anweisungen zum manuellen Signieren Ihrer Anfragen mit Sigv4 finden Sie unter Signieren von AWS Anfragen mit Signature Version 4 im Handbuch.Allgemeine Amazon Web Services-Referenz
Wenn Ihre Funktions-URL den Authentifizierungstyp NONE
verwendet, müssen Sie Ihre Anfragen nicht mit SigV4 signieren. Sie können Ihre Funktion per Webbrowser, cURL, Postman oder einem beliebigen HTTP-Client aufrufen.
Um einfache GET
-Anfragen an Ihre Funktion zu testen, verwenden Sie einen Webbrowser. Wenn Ihre Funktions-URL zum Beispiel https://abcdefg.lambda-url.us-east-1.on.aws
ist und sie einen Zeichenfolgeparameter message
aufnimmt, könnte Ihre Anforderungs-URL folgendermaßen aussehen:
https://abcdefg.lambda-url.us-east-1.on.aws/?message=HelloWorld
Um andere HTTP-Anfragen zu testen, z. B. eine POST
-Anfrage, können Sie ein Tool wie cURL verwenden. Wenn Sie z. B. einige JSON-Daten in eine POST
-Anfrage an Ihre Funktions-URL aufnehmen möchten, können Sie den folgenden cURL-Befehl verwenden:
curl -v 'https://abcdefg.lambda-url.us-east-1.on.aws/?message=HelloWorld' \ -H 'content-type: application/json' \ -d '{ "example": "test" }'
Anfordern und Beantworten von Nutzlasten
Wenn ein Client Ihre Funktions-URL aufruft, ordnet Lambda die Anforderung einem Ereignisobjekt zu, bevor es sie an Ihre Funktion übergibt. Die Antwort Ihrer Funktion wird dann einer HTTP-Antwort zugeordnet, die Lambda über die Funktions-URL an den Client zurücksendet.
Die Formate für Anforderungs- und Antwortereignisse folgen dem gleichen Schema wie die Amazon-API-Gateway-Nutzlastformatversion 2.0.
Anforderungsnutzlastformat
Eine Anforderungsnutzlast hat die folgende Struktur:
{
"version": "2.0",
"routeKey": "$default",
"rawPath": "/my/path",
"rawQueryString": "parameter1=value1¶meter1=value2¶meter2=value",
"cookies": [
"cookie1",
"cookie2"
],
"headers": {
"header1": "value1",
"header2": "value1,value2"
},
"queryStringParameters": {
"parameter1": "value1,value2",
"parameter2": "value"
},
"requestContext": {
"accountId": "123456789012",
"apiId": "<urlid>",
"authentication": null,
"authorizer": {
"iam": {
"accessKey": "AKIA...",
"accountId": "111122223333",
"callerId": "AIDA...",
"cognitoIdentity": null,
"principalOrgId": null,
"userArn": "arn:aws:iam::111122223333:user/example-user",
"userId": "AIDA..."
}
},
"domainName": "<url-id>.lambda-url.us-west-2.on.aws",
"domainPrefix": "<url-id>",
"http": {
"method": "POST",
"path": "/my/path",
"protocol": "HTTP/1.1",
"sourceIp": "123.123.123.123",
"userAgent": "agent"
},
"requestId": "id",
"routeKey": "$default",
"stage": "$default",
"time": "12/Mar/2020:19:03:58 +0000",
"timeEpoch": 1583348638390
},
"body": "Hello from client!",
"pathParameters": null,
"isBase64Encoded": false,
"stageVariables": null
}
Parameter | Beschreibung | Beispiel |
---|---|---|
|
Die Nutzlastformatversion für dieses Ereignis. Die Lambda-Funktion unterstützt URLs derzeit das Payload-Format Version 2.0. |
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
|
Der Anforderungspfad. Wenn die Anforderungs-URL beispielsweise |
|
|
Die Rohzeichenfolge, die die Abfragezeichenfolge-Parameter der Anforderung enthält. Zu den unterstützten Zeichen gehören |
|
|
Ein Array, das alle Cookies enthält, die im Rahmen der Anforderung gesendet wurden. |
|
|
Die Liste der Anforderungs-Header, die als Schlüssel-Wert-Paare dargestellt werden. |
|
|
Die Abfrageparameter für die Anforderung. Wenn die Anforderungs-URL beispielsweise |
|
|
Ein Objekt, das zusätzliche Informationen über die Anforderung enthält, z. B. |
|
|
Die AWS-Konto ID des Funktionsbesitzers. |
|
|
Die ID der Funktions-URL. |
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
|
Ein Objekt, das Informationen über die Aufruferidentität enthält, wenn die Funktions-URL den Authentifizierungstyp |
|
|
Der Zugriffsschlüssel der Anruferidentität. |
|
|
Die AWS-Konto ID der Anruferidentität. |
|
|
Die ID (Benutzer-ID) des Aufrufers. |
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
|
Die Prinzipal-Organisations-ID, die mit der Anruferidentität verknüpft ist. |
|
|
Der Benutzer-ARN (Amazon-Ressourcenname) der Anruferidentität. |
|
|
Die Benutzer-ID des Anrufers. |
|
|
Der Domain-Name der Funktions-URL. |
|
|
Das Domain-Präfix der Funktions-URL. |
|
|
Ein Objekt, das Details zur HTTP-Anforderung enthält. |
|
|
Die in der Anforderung verwendete HTTP-Methode. Gültige Werte sind unter anderem |
|
|
Der Anforderungspfad. Zum Beispiel, wenn die Anforderungs-URL |
|
|
Das Protokoll der Anforderung. |
|
|
Die Quell-IP-Adresse der TCP-Verbindung, von der die Anforderung stammt. |
|
|
Der Headerwert der Benutzer-Agent-Anforderung. |
|
|
Die ID der aktuellen Aufrufanforderung. Sie können diese ID verwenden, um Aufrufprotokolle zu verfolgen, die sich auf Ihre Funktion beziehen. |
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
|
Der Zeitstempel der Anfrage. |
|
|
Die Uhrzeit der Anfrage in Unix-Epochen-Zeit. |
|
|
Der Text der Anforderung. Wenn der Inhaltstyp der Anforderung binär ist, ist der Text base64-kodiert. |
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
|
|
|
|
Die Funktion verwendet diesen Parameter URLs nicht. Lambda setzt dies auf |
|
Antwortnutzlastformat
Wenn Ihre Funktion eine Antwort zurückgibt, analysiert Lambda die Antwort und konvertiert sie in eine HTTP-Antwort. Funktionsantwortnutzlasten haben das folgende Format:
{
"statusCode": 201,
"headers": {
"Content-Type": "application/json",
"My-Custom-Header": "Custom Value"
},
"body": "{ \"message\": \"Hello, world!\" }",
"cookies": [
"Cookie_1=Value1; Expires=21 Oct 2021 07:48 GMT",
"Cookie_2=Value2; Max-Age=78000"
],
"isBase64Encoded": false
}
Lambda leitet das Antwortformat für Sie ab. Wenn Ihre Funktion gültiges JSON zurückgibt und keinen statusCode
zurückgibt, geht Lambda von Folgendem aus:
-
statusCode
ist200
.Anmerkung
Die gültigen
statusCode
Werte liegen im Bereich von 100 bis 599. -
content-type
istapplication/json
. -
body
ist die Antwort der Funktion. -
isBase64Encoded
istfalse
.
Die folgenden Beispiele zeigen, wie die Ausgabe Ihrer Lambda-Funktion der Antwortnutzlast und die Antwortnutzlast der endgültigen HTTP-Antwort zugeordnet wird. Wenn der Client Ihre Funktions-URL aufruft, wird die HTTP-Antwort angezeigt.
Beispielausgabe für eine Zeichenfolgeantwort
Lambda-Funktionsausgabe | Interpretierte Antwortausgabe | HTTP-Antwort (was der Client sieht) |
---|---|---|
|
|
|
Beispielausgabe für eine JSON-Antwort
Lambda-Funktionsausgabe | Interpretierte Antwortausgabe | HTTP-Antwort (was der Client sieht) |
---|---|---|
|
|
|
Beispielausgabe für eine benutzerdefinierte Antwort
Lambda-Funktionsausgabe | Interpretierte Antwortausgabe | HTTP-Antwort (was der Client sieht) |
---|---|---|
|
|
|
Cookies
Um Cookies von Ihrer Funktion zurückzugeben, fügen Sie set-cookie
-Header nicht manuell hinzu. Fügen Sie stattdessen die Cookies in Ihr Antwortnutzlastobjekt ein. Lambda interpretiert dies automatisch und fügt sie als set-cookie
-Header in Ihre HTTP-Antwort ein, wie im folgenden Beispiel gezeigt.
Lambda-Funktionsausgabe | HTTP-Antwort (was der Client sieht) |
---|---|
|
|