Restrizioni su Lambda@Edge
A Lambda@Edge si applicano le seguenti restrizioni.
Indice
Per informazioni sulle quote , consulta Quote di Lambda@Edge.
Risoluzione DNS
CloudFront esegue una risoluzione DNS sul nome di dominio di origine prima di eseguire la funzione Lambda@Edge della richiesta di origine. Se il servizio DNS del dominio presenta dei problemi e CloudFront non riesce a risolvere il nome di dominio per ottenere l’indirizzo IP, la funzione Lambda@Edge non verrà invocata. CloudFront restituirà il codice di stato HTTP 502 (Gateway non valido) al client. Per ulteriori informazioni, consulta Errore DNS (NonS3OriginDnsError).
Se la logica della funzione modifica il nome di dominio di origine, CloudFront eseguirà un’altra risoluzione DNS sul nome di dominio aggiornato al termine dell’esecuzione della funzione.
Per ulteriori informazioni sulla gestione del failover DNS, consulta Configurazione di un failover DNS nella Guida per gli sviluppatori di Amazon Route 53.
Codici di stato HTTP
Le funzioni Lambda@Edge per gli eventi di risposta del visualizzatore non possono modificare il codice di stato HTTP della risposta, a prescindere dal fatto che la risposta provenga dall'origine o dalla cache CloudFront.
Versione delle funzioni Lambda
È necessario utilizzare una versione numerata della funzione Lambda, non $LATEST né alias.
Regione Lambda
La funzione Lambda deve trovarsi nella regione Stati Uniti orientali (Virginia settentrionale).
Autorizzazioni del ruolo Lambda
Il ruolo di esecuzione IAM associato alla funzione Lambda deve consentire ai principali del servizio lambda.amazonaws.com e edgelambda.amazonaws.com di assumere il ruolo. Per ulteriori informazioni, consulta Configurazione di ruoli e autorizzazioni IAM per Lambda@Edge.
Caratteristiche di Lambda
Le seguenti funzionalità Lambda non sono supportate da Lambda@Edge:
-
Configurazioni di gestione del runtime Lambda diverse da Auto (impostazione predefinita)
-
Configurazione della funzione Lambda per accedere a risorse presenti nel VPC
-
Variabili di ambiente Lambda (ad eccezione delle variabili di ambiente riservate, che sono supportate automaticamente)
-
Funzioni Lambda con Gestione delle dipendenze AWS Lambda con livelli
-
Concorrenza con provisioning di Lambda
Nota
Le funzioni Lambda@Edge condividono le stesse funzionalità di concorrenza regionale di tutte le funzioni Lambda. Per ulteriori informazioni, consulta Quote di Lambda@Edge.
-
Creare una funzione Lambda utilizzando un'immagine di container
-
Funzioni Lambda con più di 512 MB di archiviazione temporanea.
-
Utilizzo di una chiave gestita dal cliente per crittografare i pacchetti di implementazione .zip
Runtime supportati
Lambda@Edge supporta le versioni più recenti dei runtime Node.js e Python. Per un elenco delle versioni supportate e delle relative date future di obsolescenza, consulta Runtime supportati nella Guida per gli sviluppatori di AWS Lambda.
Suggerimento
-
Come best practice, utilizza le versioni più recenti dei runtime forniti per migliorare le prestazioni e usufruire delle nuove funzionalità.
-
Non è possibile creare o aggiornare funzioni con questa versione obsoleta di Node.js. Puoi associare solo funzioni esistenti a queste versioni con distribuzioni CloudFront. Le funzioni con queste versioni associate a distribuzioni continueranno a essere eseguite. Tuttavia, ti consigliamo di trasferire la funzione alle versioni più recenti di Node.js. Per ulteriori informazioni, consulta Policy di deprecazione del runtime nella Guida per gli sviluppatori di AWS Lambda e Node.js release schedule
su GitHub.
Intestazioni CloudFront
Le funzioni Lambda@Edge possono leggere, modificare, rimuovere o aggiungere una qualsiasi delle intestazioni CloudFront elencate in Aggiunta di intestazioni della richiesta CloudFront:
Note
-
Se desideri che CloudFront aggiunga queste intestazioni, è necessario configurarlo per aggiungerle utilizzando una policy della cache o una policy di richiesta origine.
-
CloudFront aggiunge le intestazioni dopo l’evento di richiesta visualizzatore, il che significa che le intestazioni non sono disponibili per Lambda@Edge in una richiesta visualizzatore. Le intestazioni sono disponibili solo per le funzioni Lambda@Edge in una richiesta origine e una risposta origine.
-
Se la richiesta del visualizzatore include intestazioni con questi nomi e CloudFront è stato configurato per aggiungere queste intestazioni utilizzando una policy della cache o una policy di richiesta origine, CloudFront sovrascrive i valori di intestazione che si trovavano nella richiesta del visualizzatore. Le funzioni rivolte al visualizzatore vedono il valore dell'intestazione dalla richiesta del visualizzatore, mentre le funzioni rivolte all'origine vedono il valore dell'intestazione aggiunto da CloudFront.
-
Se la funzione della richiesta visualizzatore aggiunge l’intestazione
CloudFront-Viewer-Country, non ottiene la convalida e CloudFront restituisce il codice di stato HTTP 502 (Gateway non valido) al visualizzatore.
Restrizioni sul corpo della richiesta con l'opzione Includi corpo
Quando si sceglie l’opzione Includi corpo per esporre il corpo della richiesta alla funzione Lambda@Edge, si applicano i seguenti limiti di informazioni e dimensioni per le parti del corpo che vengono esposte o sostituite.
-
CloudFront codifica il corpo della richiesta prima di esporlo a Lambda@Edge sempre in base64.
-
Se il corpo della richiesta è di grandi dimensioni, CloudFront lo tronca prima di esporlo a Lambda@Edge nel seguente modo:
-
Per gli eventi di richiesta del visualizzatore, il corpo è troncato a 40 KB.
-
Per gli eventi di richiesta di origine, il corpo è troncato a 1 MB.
-
-
Se accedi al corpo della richiesta in sola lettura, Cloudfront invia all'origine il corpo della richiesta originale completa.
-
Se la funzione Lambda@Edge sostituisce il corpo della richiesta, si applicano i seguenti limiti di dimensioni per il corpo restituito dalla funzione:
-
Se la funzione Lambda@Edge restituisce il corpo come testo semplice:
-
Per gli eventi di richiesta visualizzatore, il limite del corpo è 40 KB.
-
Per gli eventi di richiesta origine, il limite del corpo è 1 MB.
-
-
Se la funzione Lambda@Edge restituisce il corpo codificato in base64:
-
Per gli eventi di richiesta visualizzatore, il limite del corpo è 53,2 KB.
-
Per gli eventi di richiesta origine, il limite del corpo è 1,33 MB.
-
-
Nota
Se la funzione Lambda@Edge restituisce un corpo che supera questi limiti, la richiesta avrà esito negativo con un codice di stato HTTP 502 (Errore di convalida Lambda). Ti consigliamo di aggiornare la funzione Lambda@Edge in modo che il corpo non superi questi limiti.
Timeout di risposta e timeout keep-alive (solo origini personalizzate)
Se utilizzi le funzioni Lambda@Edge per impostare il timeout di risposta o il timeout keep-alive per le origini di distribuzione, verifica di specificare un valore supportato dall’origine. Per ulteriori informazioni, consulta Quote timeout di risposta e keep-alive.