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à.
Scelta dello scopo della funzione
Prima di scrivere il codice funzione, è necessario determinare lo scopo della funzione. La maggior parte CloudFront delle funzioni di Functions ha uno dei seguenti scopi.
Argomenti
Modifica della richiesta HTTP in un tipo di evento di richiesta visualizzatore
Generazione di una risposta HTTP in un tipo di evento di richiesta visualizzatore
Modifica della risposta HTTP in un tipo di evento di risposta visualizzatore
Convalida le connessioni MTL in un tipo di evento di richiesta di connessione
Indipendentemente dallo scopo della funzione, handler è il punto di ingresso per qualsiasi funzione. Richiede un solo argomento chiamatoevent, che viene passato alla funzione da CloudFront. event è un oggetto JSON che contiene una rappresentazione della richiesta HTTP (e la risposta, se la funzione modifica la risposta HTTP).
Modifica della richiesta HTTP in un tipo di evento di richiesta visualizzatore
La funzione può modificare la richiesta HTTP CloudFront ricevuta dal visualizzatore (client) e restituire la richiesta modificata a CloudFront per continuare l'elaborazione. Ad esempio, il codice funzione potrebbe normalizzare la chiave cache o modificare le intestazioni delle richieste.
Dopo aver creato e pubblicato una funzione che modifica la richiesta HTTP, assicurati di aggiungere un’associazione per il tipo di evento richiesta visualizzatore. Per ulteriori informazioni, consulta Creazione della funzione. In questo modo la funzione viene eseguita ogni volta che CloudFront riceve una richiesta da un visualizzatore, prima di verificare se l'oggetto richiesto è nella CloudFront cache.
Esempio
Il seguente pseudocodice mostra la struttura di una funzione che modifica la richiesta HTTP.
function handler(event) { var request = event.request; // Modify the request object here. return request; }
La funzione restituisce l'requestoggetto modificato a CloudFront. CloudFrontcontinua a elaborare la richiesta restituita controllando la CloudFront presenza di un hit nella cache e inviando la richiesta all'origine, se necessario.
Generazione di una risposta HTTP in un tipo di evento di richiesta visualizzatore
La funzione può generare una risposta HTTP all'edge e restituirla direttamente al visualizzatore (client) senza verificare la presenza di una risposta memorizzata nella cache o ulteriori elaborazioni da parte CloudFront di. Ad esempio, il codice funzione potrebbe reindirizzare la richiesta a un nuovo URL oppure verificare l'autorizzazione e restituire una risposta 401 o 403 a richieste non autorizzate.
Quando crei una funzione che genera una risposta HTTP, assicurati di scegliere il tipo di evento richiesta del visualizzatore. Ciò significa che la funzione viene eseguita ogni volta che CloudFront riceve una richiesta da un visualizzatore, prima CloudFront di eseguire qualsiasi ulteriore elaborazione della richiesta.
Esempio
Il seguente pseudocodice mostra la struttura di una funzione che genera una risposta HTTP.
function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }
La funzione restituisce un response oggetto a CloudFront, che ritorna CloudFront immediatamente al visualizzatore senza controllare la CloudFront cache o inviare una richiesta all'origine.
Modifica della risposta HTTP in un tipo di evento di risposta visualizzatore
La funzione può modificare la risposta HTTP prima di CloudFront inviarla al visualizzatore (client), indipendentemente dal fatto che la risposta provenga dalla CloudFront cache o dall'origine. Ad esempio, il codice funzione potrebbe aggiungere o modificare le intestazioni, i codici di stato e i contenuti del corpo della risposta.
Quando crei una funzione che modifica la risposta HTTP, assicurati di scegliere il tipo di evento risposta del visualizzatore . Ciò significa che la funzione viene eseguita prima di CloudFront restituire una risposta al visualizzatore, indipendentemente dal fatto che la risposta provenga dalla CloudFront cache o dall'origine.
Esempio
Il seguente pseudocodice mostra la struttura di una funzione che modifica la risposta HTTP.
function handler(event) { var request = event.request; var response = event.response; // Modify the response object here, // using the request properties if needed. return response; }
La funzione restituisce l'responseoggetto modificato a CloudFront, che ritorna CloudFront immediatamente al visualizzatore.
Convalida le connessioni MTL in un tipo di evento di richiesta di connessione
Le funzioni di connessione sono un tipo di CloudFront funzioni che vengono eseguite durante le connessioni TLS per fornire una logica di convalida e autenticazione personalizzata. Le funzioni di connessione sono attualmente disponibili per le connessioni TLS reciproche (MTLS), in cui è possibile convalidare i certificati client e implementare una logica di autenticazione personalizzata oltre alla convalida dei certificati standard. Le funzioni di connessione vengono eseguite durante il processo di handshake TLS e possono consentire o negare le connessioni in base alle proprietà del certificato, agli indirizzi IP dei client o ad altri criteri.
Dopo aver creato e pubblicato una funzione di connessione, assicuratevi di aggiungere un'associazione per il tipo di evento di richiesta di connessione con una distribuzione abilitata per MTLS. In questo modo la funzione viene eseguita ogni volta che un client tenta di stabilire una connessione MTLS con. CloudFront
Esempio
Il seguente pseudocodice mostra la struttura di una funzione di connessione:
function connectionHandler(connection) { // Validate certificate and connection properties here. if (/* validation passes */) { connection.allow(); } else { connection.deny(); } }
La funzione utilizza metodi di supporto per determinare se consentire o negare la connessione. A differenza delle funzioni di richiesta e risposta del visualizzatore, le funzioni di connessione non possono modificare le richieste o le risposte HTTP.
Informazioni correlate
Per ulteriori informazioni sull'utilizzo CloudFront delle funzioni, consultate i seguenti argomenti: