Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Un URL della funzione è un endpoint HTTP(S) dedicato alla funzione Lambda. È possibile creare e configurare un URL della funzione tramite la console Lambda o l'API Lambda.
Suggerimento
Lambda offre due modi per richiamare una funzione tramite un endpoint HTTP: funzione e Amazon API URLs Gateway. Se non sei sicuro di quale sia il metodo migliore per il tuo caso d'uso, consulta. Selezionare un metodo per richiamare la funzione Lambda tramite una richiesta HTTP
Quando si crea un URL della funzione, Lambda genera automaticamente un endpoint URL univoco. Dopo aver creato un URL della funzione, il suo endpoint URL non cambia mai. Gli endpoint URL della funzione hanno il formato seguente:
https://
<url-id>
.lambda-url.<region>.on.aws
Nota
URLs Le funzioni non sono supportate nei seguenti paesi Regioni AWS: Asia Pacifico (Hyderabad) (ap-south-2
), Asia Pacifico (Melbourne) (ap-southeast-4
), Asia Pacifico (Malesia) () ()ap-southeast-5
, Canada occidentale (Calgary) ()ca-west-1
, Europa (Spagna) (), Europa (Zurigo) (eu-south-2
)eu-central-2
, Israele (Tel Aviv) () e Medio Oriente (Emirati Arabi Unitiil-central-1
) (). me-central-1
URLs Le funzioni sono abilitate al dual stack, supportano e. IPv4 IPv6 Dopo aver configurato l'URL della funzione, è possibile richiamare la funzione attraverso il relativo endpoint HTTP(S) tramite un browser Web, curl, Postman o un client HTTP. Per richiamare un URL della funzione, è necessario disporre di autorizzazioni lambda:InvokeFunctionUrl
. Per ulteriori informazioni, consulta Controllo accessi.
Nozioni di base sul richiamo di URL di funzioni
Se l'URL della funzione utilizza il tipo di autenticazione AWS_IAM
, è necessario firmare ogni richiesta HTTP utilizzando AWS Signature Version 4 (SigV4). Strumenti come Postman
Se non utilizzi uno strumento per firmare le richieste HTTP all'URL della funzione, è necessario firmare manualmente ogni richiesta utilizzando Sigv4. Quando l'URL della funzione riceve una richiesta, Lambda calcola anche la firma Sigv4. Lambda elabora la richiesta solo se le firme corrispondono. Per istruzioni su come firmare manualmente le richieste con SigV4, consulta Firmare AWS le richieste con Signature Version 4 nella Guida.Riferimenti generali di Amazon Web Services
Se l'URL della funzione utilizza il tipo di autenticazione NONE
, non è necessario firmare le richieste utilizzando Sigv4. Puoi richiamare la funzione utilizzando un browser Web, curl, Postman o un client HTTP.
Per verificare semplici richieste GET
alla funzione, usa un browser Web. Ad esempio, se l'URL della funzione è https://abcdefg.lambda-url.us-east-1.on.aws
e richiede un parametro stringa message
, l'URL della richiesta potrebbe essere simile al seguente:
https://abcdefg.lambda-url.us-east-1.on.aws/?message=HelloWorld
Per verificare altre richieste HTTP, ad esempio una richiesta POST
, puoi utilizzare uno strumento come curl. Ad esempio, se desideri includere alcuni dati JSON in una richiesta POST
all'URL della funzione, potresti utilizzare il comando curl seguente:
curl -v 'https://abcdefg.lambda-url.us-east-1.on.aws/?message=HelloWorld' \ -H 'content-type: application/json' \ -d '{ "example": "test" }'
Payload di richieste e risposte
Quando un client chiama l'URL della funzione, Lambda mappa la richiesta a un oggetto evento prima di passarlo alla funzione. La risposta della funzione viene quindi mappata a una risposta HTTP che Lambda invia al client tramite l'URL della funzione.
I formati degli eventi di richiesta e risposta seguono lo stesso schema del tipo di formato del payload di Gateway Amazon API versione 2.0.
Formato del payload di richiesta
Un payload di richiesta ha la seguente struttura:
{
"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
}
Parametro | Descrizione | Esempio |
---|---|---|
|
Il tipo di formato del payload per questo evento. La funzione Lambda URLs attualmente supporta il formato payload versione 2.0. |
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
|
Percorso della richiesta. Ad esempio, se l'URL della richiesta è |
|
|
La stringa raw contenente i parametri della stringa di query della richiesta. I caratteri supportati includono |
|
|
Un array contenente tutti i cookie inviati come parte della richiesta. |
|
|
L'elenco delle intestazioni della richiesta, presentate come coppie chiave-valore. |
|
|
I parametri di query per la richiesta. Ad esempio, se l'URL della richiesta è |
|
|
Un oggetto contenente informazioni aggiuntive sulla richiesta, ad esempio |
|
|
L' Account AWS ID del proprietario della funzione. |
|
|
L'ID dell'URL della funzione. |
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
|
Un oggetto contenente informazioni sull'identità del chiamante, se l'URL della funzione utilizza il tipo di autenticazione |
|
|
La chiave di accesso dell'identità del chiamante. |
|
|
L' Account AWS ID dell'identità del chiamante. |
|
|
L'ID (ID utente) del chiamante. |
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
|
L'ID dell'organizzazione principale associato all'identità del chiamante. |
|
|
L'Amazon Resource Name (ARN) utente dell'identità del chiamante. |
|
|
L'ID utente dell'identità del chiamante. |
|
|
Il nome di dominio dell'URL della funzione. |
|
|
Il prefisso di dominio dell'URL della funzione. |
|
|
Un oggetto contenente i dettagli sulla richiesta HTTP. |
|
|
Il metodo HTTP utilizzato nella richiesta. I valori validi includono |
|
|
Percorso della richiesta. Ad esempio, se l'URL della richiesta è |
|
|
Il protocollo della richiesta. |
|
|
L'indirizzo IP di origine della connessione TCP immediata da cui proviene la richiesta. |
|
|
Il valore dell'intestazione della richiesta User-Agent. |
|
|
L'l'ID della richiesta di richiamo. È possibile utilizzare questo ID per tenere traccia dei registri dei richiami correlati alla funzione. |
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
|
Il timestamp della richiesta. |
|
|
Il timestamp della richiesta, in formato temporale Unix. |
|
|
Il corpo della richiesta. Se il tipo di contenuto della richiesta è binario, il corpo è con codifica base64. |
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
|
|
|
|
La funzione URLs non utilizza questo parametro. Lambda lo imposta su |
|
Formato del payload di risposta
Quando la funzione restituisce una risposta, Lambda analizza la risposta e la converte in una risposta HTTP. I payload di risposta della funzione hanno il formato seguente:
{
"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 deduce il formato di risposta per l'utente. Se la funzione Lambda restituisce un JSON valido e non restituisce un statusCode
, Lambda presuppone quanto segue:
-
statusCode
è200
.Nota
I valori validi
statusCode
sono compresi tra 100 e 599. -
content-type
èapplication/json
. -
body
è la risposta della funzione. -
isBase64Encoded
èfalse
.
Gli esempi seguenti mostrano come l'output della funzione Lambda viene mappato al payload della risposta e come il payload della risposta viene mappato alla risposta HTTP finale. Quando il client richiama l'URL della funzione, viene visualizzata la risposta HTTP.
Esempio di output per una risposta stringa
Risultato della funzione Lambda | Output di risposta interpretata | Risposta HTTP (cosa vede il client) |
---|---|---|
|
|
|
Esempio di output per una risposta JSON
Risultato della funzione Lambda | Output di risposta interpretata | Risposta HTTP (cosa vede il client) |
---|---|---|
|
|
|
Esempio di output per una risposta personalizzata
Risultato della funzione Lambda | Output di risposta interpretata | Risposta HTTP (cosa vede il client) |
---|---|---|
|
|
|
Cookie
Per restituire i cookie della funzione, non aggiungere manualmente intestazioni set-cookie
. Al contrario, includi i cookie nell'oggetto payload di risposta. Lambda li interpreta automaticamente e li aggiunge come intestazioni set-cookie
nella risposta HTTP, come nell'esempio seguente.
Risultato della funzione Lambda | Risposta HTTP (cosa vede il client) |
---|---|
|
|