Tutorial: Creare una funzione Lambda @Edge di base - Amazon CloudFront

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à.

Tutorial: Creare una funzione Lambda @Edge di base

Questo tutorial mostra come iniziare a usare Lambda @Edge creando e configurando una funzione Node.js di esempio da eseguire in. CloudFront Questo esempio aggiunge intestazioni HTTP di sicurezza a una risposta quando CloudFront recupera un file. (Ciò può migliorare la sicurezza e la privacy di un sito Web.)

Non è necessario il proprio sito Web per questo tutorial. Tuttavia, quando scegli di creare la tua soluzione Lambda @Edge, segui passaggi simili e scegli tra le stesse opzioni.

Fase 1: registrazione ad un Account AWS

Se non l'hai già fatto, iscriviti a un Account AWS. Per ulteriori informazioni, consulta Registrati per un Account AWS.

Passaggio 2: creare una CloudFront distribuzione

Prima di creare la funzione di esempio Lambda @Edge, è necessario disporre di un CloudFront ambiente con cui lavorare che includa un'origine da cui distribuire il contenuto.

Per questo esempio, crei una CloudFront distribuzione che utilizza un bucket Amazon S3 come origine per la distribuzione. Se disponi già di un ambiente da utilizzare, puoi saltare questa fase.

Per creare una CloudFront distribuzione con un'origine Amazon S3
  1. Crea un bucket Amazon S3 con un file o due, ad esempio file di immagini, come contenuti di esempio. Se hai bisogno di aiuto, puoi procedere come descritto in Caricamento dei contenuti su Amazon S3. Assicurati di impostare le autorizzazioni per assegnare l'accesso pubblico in lettura agli oggetti nel bucket.

  2. Crea una CloudFront distribuzione e aggiungi il tuo bucket S3 come origine, seguendo i passaggi in Creare una CloudFront distribuzione web. Se disponi già di una distribuzione, puoi aggiungere il bucket come origine di quella distribuzione.

    Suggerimento

    Annota l'ID della tua distribuzione. Più avanti in questo tutorial, quando aggiungi un CloudFront trigger per la tua funzione, devi scegliere l'ID per la tua distribuzione in un elenco a discesa, ad esempio. E653W22221KDDL

Fase 3: creare la tua funzione

In questo passaggio, crei una funzione Lambda da un modello di blueprint nella console Lambda. La funzione aggiunge codice per aggiornare le intestazioni di sicurezza nella distribuzione. CloudFront

Per creare una funzione Lambda
  1. Accedi a AWS Management Console e apri la AWS Lambda console all'indirizzohttps://console.aws.amazon.com/lambda/.

    Importante

    Assicurati di trovarti negli Stati Uniti orientali 1 (Virginia settentrionale) ( Regione AWS us-east-1). È necessario essere in questa regione per creare funzioni Lambda@Edge.

  2. Selezionare Create function (Crea funzione).

  3. Nella pagina Crea funzione, scegli Usa un blueprint, quindi filtra i blueprint inserendoli nel campo di CloudFront ricerca. cloudfront

    Nota

    CloudFront i blueprint sono disponibili solo nella regione US-east-1 (Virginia settentrionale) (us-east-1).

  4. Scegliete il blueprint Modify HTTP response header come modello per la vostra funzione.

  5. Immettere le seguenti informazioni sulla funzione:

    • Nome della funzione: inserisci un nome per la tua funzione.

    • Ruolo di esecuzione: scegli come impostare le autorizzazioni per la tua funzione. Per utilizzare il modello di policy di autorizzazione di base consigliato da Lambda @Edge, scegli Crea un nuovo ruolo dai AWS modelli di policy.

    • Nome del ruolo: inserisci un nome per il ruolo creato dal modello di policy.

    • Modelli di policy: Lambda aggiunge automaticamente i permessi del modello di policy Basic Lambda @Edge perché hai scelto un CloudFront blueprint come base per la tua funzione. Questo modello di policy aggiunge le autorizzazioni per i ruoli di esecuzione che consentono di CloudFront eseguire la funzione Lambda per te CloudFront in diverse località del mondo. Per ulteriori informazioni, consulta Configura IAM le autorizzazioni e i ruoli per Lambda @Edge.

  6. Scegli Crea funzione nella parte inferiore della pagina.

  7. Nel riquadro Deploy to Lambda @Edge visualizzato, scegli Annulla. (Per questo tutorial, devi modificare il codice della funzione prima di distribuirla su Lambda @Edge.)

  8. Scorri verso il basso fino alla sezione Code source della pagina.

  9. Sostituire il codice modello con una funzione che modifica le intestazioni di sicurezza restituite dall'origine. Ad esempio, puoi usare un codice simile a quanto segue:

    'use strict'; export const handler = (event, context, callback) => { //Get contents of response const response = event.Records[0].cf.response; const headers = response.headers; //Set new headers headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age= 63072000; includeSubdomains; preload'}]; headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; //Return modified response callback(null, response); };
  10. Scegli File, Salva per salvare il codice aggiornato.

  11. Seleziona Deploy (Implementa).

Passa alla sezione successiva per aggiungere un CloudFront trigger per eseguire la funzione.

Fase 4: Aggiungere un CloudFront trigger per eseguire la funzione

Ora che hai una funzione Lambda per aggiornare le intestazioni di sicurezza, configura il CloudFront trigger per eseguire la funzione per aggiungere le intestazioni in qualsiasi risposta CloudFront ricevuta dall'origine per la tua distribuzione.

Per configurare il CloudFront trigger per la tua funzione
  1. Nella console Lambda, nella pagina di panoramica delle funzioni per la tua funzione, scegli Aggiungi trigger.

  2. Per la configurazione di Trigger, scegli CloudFront.

  3. Scegli Distribuisci su Lambda @Edge.

  4. Nel riquadro Deploy to Lambda @Edge, in CloudFront Configura trigger, inserisci le seguenti informazioni:

    • Distribuzione: l'ID di CloudFront distribuzione da associare alla funzione. Nell'elenco a discesa, scegli l'ID di distribuzione.

    • Comportamento della cache: il comportamento della cache da utilizzare con il trigger. Per questo esempio, lascia il valore impostato su *, che applica a tutte le richieste il comportamento cache predefinito della distribuzione. Per ulteriori informazioni, consulta Cache Behavior Settings (Impostazioni del comportamento della cache) nell'argomento Riferimento alle impostazioni di distribuzione.

    • CloudFront evento — Il trigger che specifica quando viene eseguita la funzione. Vogliamo che la funzione security headers venga eseguita ogni volta che CloudFront restituisce una risposta dall'origine. Nell'elenco a discesa, scegli Origin response. Per ulteriori informazioni, consulta Aggiungere trigger per una funzione Lambda @Edge.

  5. Seleziona la casella di controllo Confirm deploy to Lambda @Edge.

  6. Scegli Deploy per aggiungere il trigger e replicare la funzione in diverse sedi in tutto il mondo. AWS

  7. Attendi che la funzione venga replicata. Questo richiede in genere diversi minuti.

    Puoi verificare se la replica è terminata accedendo alla CloudFront console e visualizzando la tua distribuzione. Attendi che lo stato della distribuzione passi da Distribuzione a data e ora, il che significa che la funzione è stata replicata. Quindi segui la procedura nella sezione successiva per verificare che la funzione sia attiva.

Fase 5: verificare che la funzione venga eseguita

Ora che hai creato la funzione Lambda e configurato un trigger per eseguirla per una CloudFront distribuzione, assicurati che la funzione stia ottenendo ciò che ti aspetti. In questo esempio, controlliamo le HTTP intestazioni che CloudFront restituiscono, per assicurarci che le intestazioni di sicurezza vengano aggiunte.

Per verificare che la funzione Lambda@Edge aggiunga le intestazioni di sicurezza
  1. In un browser, inserisci il nome URL di un file nel tuo bucket S3. Ad esempio, potresti usare un file URL simile a. https://d111111abcdef8.cloudfront.net/image.jpg

    Per ulteriori informazioni sul nome di CloudFront dominio da utilizzare nel fileURL, vederePersonalizza il URL formato dei file in CloudFront.

  2. Apri la barra degli strumenti per sviluppatori del tuo browser Web. Ad esempio, nella finestra del browser in Chrome, apri il menu contestuale (pulsante destro del mouse) e scegli Inspect (Ispeziona).

  3. Scegliere la scheda Network (Rete).

  4. Ricarica la pagina per visualizzare l'immagine, quindi scegli una HTTP richiesta nel riquadro a sinistra. Le HTTP intestazioni vengono visualizzate in un riquadro separato.

  5. Consulta l'elenco delle HTTP intestazioni per verificare che le intestazioni di sicurezza previste siano incluse nell'elenco. Ad esempio, potresti vedere intestazioni simili a quelle mostrate nella schermata seguente:

    HTTPelenco delle intestazioni con le intestazioni di sicurezza previste evidenziate.

Se le intestazioni di sicurezza sono incluse nel tuo elenco di intestazioni, è perfetto: hai creato la tua prima funzione Lambda@Edge. Se CloudFront restituisce errori o se ci sono altri problemi, procedi con il passaggio successivo per risolverli.

Fase 6: risolvere i problemi

Se CloudFront restituisce errori o non aggiunge le intestazioni di sicurezza come previsto, puoi esaminare l'esecuzione della funzione esaminando Logs. CloudWatch Assicurati di utilizzare i log archiviati nella posizione più vicina alla AWS posizione in cui viene eseguita la funzione.

Ad esempio, se visualizzi il file da Londra, prova a cambiare la regione nella CloudWatch console in Europa (Londra).

Per esaminare CloudWatch i log della funzione Lambda @Edge
  1. Accedi a AWS Management Console e apri la CloudWatch console all'indirizzo. https://console.aws.amazon.com/cloudwatch/

  2. Cambia regione nella posizione visualizzata quando visualizzi il file nel browser. Questo è dove la funzione è in esecuzione.

  3. Nel riquadro sinistro, scegli Logs (Log) per visualizzare i log per la tua distribuzione.

Per ulteriori informazioni, consulta Monitora le CloudFront metriche con Amazon CloudWatch.

Fase 7: eliminare le risorse di esempio

Se hai creato un bucket Amazon S3 e una CloudFront distribuzione solo per questo tutorial, elimina le AWS risorse che hai allocato in modo da non addebitare più costi. Dopo aver eliminato le AWS risorse, i contenuti che hai aggiunto non sono più disponibili.

Attività

Elimina il bucket S3

Prima di eliminare il bucket Amazon S3 in uso, accertarsi che le attività di registrazione siano disattivate per quel bucket. Altrimenti, AWS continua a scrivere i log nel bucket mentre lo elimini.

Per disattivare il log per un bucket
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona il bucket, quindi Proprietà.

  3. Da Properties (Proprietà), selezionare Log.

  4. Deseleziona la casella Attivato.

  5. Scegliere Save (Salva).

È possibile ora eliminare il bucket. Per ulteriori informazioni, consulta Eliminazione di un bucket nella Guida per l'utente della console di Amazon Simple Storage Service.

Eliminazione della funzione Lambda

Per istruzioni su come eliminare l'associazione di funzioni Lambda e, facoltativamente, la funzione stessa, vedere. Eliminare funzioni e repliche Lambda @Edge

Eliminare la distribuzione CloudFront

Prima di eliminare una CloudFront distribuzione, è necessario disattivarla. Una distribuzione disattivata non è più funzionante e non accumula addebiti. Puoi attivare una distribuzione disattivata in qualsiasi momento. Una volta eliminata una distribuzione disattivata, non è più disponibile.

Per disabilitare ed eliminare una CloudFront distribuzione
  1. Apri la CloudFront console all'indirizzohttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Selezionare la distribuzione che si vuole disattivare e scegliere Disable (Disattiva).

  3. Quando viene richiesta la conferma, seleziona Sì, disattiva.

  4. Selezionare la distribuzione disattivata e scegliere Delete (Elimina).

  5. Quando viene richiesta la conferma, seleziona Sì, elimina.

Informazioni correlate

Ora che hai un'idea di come operano le funzioni Lambda@Edge, puoi approfondire i concetti consultando queste risorse: