

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

# Test delle funzioni
<a name="test-function"></a>

Prima di distribuire la funzione nella fase live (produzione), puoi testarla per verificare che funzioni come previsto. Per testare una funzione, specificate un *oggetto evento* che rappresenta una richiesta o una risposta HTTP che la CloudFront distribuzione potrebbe ricevere in produzione. 

CloudFront Functions esegue le seguenti operazioni:

1. Esegue la funzione, utilizzando l'oggetto evento fornito come input.

1. Restituisce il risultato della funzione (l'oggetto evento modificato) insieme a tutti i registri delle funzioni o messaggi di errore e l'*utilizzo del calcolo* della funzione. Per ulteriori informazioni sull’utilizzo delle capacità di calcolo, consultare [Informazioni sull’utilizzo del calcolo](#compute-utilization).

**Nota**  
Quando si esegue il test di una funzione, esegue la convalida CloudFront solo in base agli errori di esecuzione della funzione. CloudFrontnon verifica se la richiesta passerà a buon fine una volta pubblicata. Ad esempio, se la funzione elimina un’intestazione obbligatoria, il test avrà esito positivo perché non vi è alcun problema con il codice. Tuttavia, se si pubblica la funzione e la si associa a una distribuzione, la funzione avrà esito negativo quando viene effettuata una richiesta. CloudFront

**Contents**
+ [

## Impostazione dell'oggetto evento
](#test-function-create-event)
+ [

## Test della funzione
](#test-function-step-test)
+ [

## Informazioni sull’utilizzo del calcolo
](#compute-utilization)

## Impostazione dell'oggetto evento
<a name="test-function-create-event"></a>

Prima di testare una funzione, è necessario impostare l'oggetto evento per testarlo. Sono disponibili diverse opzioni.

**Opzione 1: impostazione di un oggetto evento senza salvarlo**  
È possibile configurare un oggetto evento nell'editor visivo della CloudFront console e non salvarlo.   
È possibile utilizzare questo oggetto evento per testare la funzione dalla CloudFront console, anche se non è stato salvato.

**Opzione 2: creazione di un oggetto evento nell'editor visuale**  
È possibile configurare un oggetto evento nell'editor visivo della CloudFront console e non salvarlo. È possibile creare 10 oggetti evento per ogni funzione, ad esempio per testare diversi input possibili.  
Quando create l'oggetto evento in questo modo, potete utilizzare l'oggetto evento per testare la funzione nella CloudFront console. Non puoi usarlo per testare la funzione utilizzando un' AWS API o un SDK. 

**Opzione 3: creazione di un oggetto evento utilizzando un editor di testo**  
Puoi utilizzare un editor di testo per creare un oggetto evento in formato JSON. Per informazioni sulla struttura di un oggetto evento, consulta [Struttura degli eventi](functions-event-structure.md).   
Puoi utilizzare l'oggetto evento per testare la funzione utilizzando la CLI. Ma non puoi usarlo per testare la funzione nella CloudFront console.

**Come creare un oggetto evento (opzione 1 o 2)**

1. Accedi alla CloudFront console all'indirizzo [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) e scegli la pagina **Funzioni**.

   Scegli la funzione che desideri testare.

1. Nella pagina dei dettagli della funzione, seleziona la scheda **Test**. 

1. Per **Tipo di evento**, scegli una delle seguenti opzioni:
   + Se la funzione modifica una richiesta HTTP o genera una risposta in base alla richiesta, scegli **Richiesta visualizzatore**. Viene visualizzata la sezione **Richiesta**.
   + Scegli **Risposta visualizzatore**. Vengono visualizzate le sezioni **Richiesta** e **Risposta**. 

1. Completa tutti i campi da includere nell’evento. Puoi scegliere **Modifica JSON** per visualizzare il JSON non elaborato.

1. (Facoltativo) Per salvare l’evento, scegli **Salva** e nel campo **Salva evento di test**, inserisci un nome, quindi scegli **Salva**.

   Puoi anche scegliere **Modifica JSON** e copiare il file JSON non elaborato e salvarlo nel tuo file, all'esterno di. CloudFront 

**Come creare un oggetto evento (opzione 3)**

Crea l'oggetto evento utilizzando un editor di testo. Archivia il file in una directory a cui il tuo computer può connettersi. 

Verifica di aver seguito queste linee guida:
+ Ometti i campi `distributionDomainName`, `distributionId` e `requestId`. 
+ I nomi delle intestazioni, dei cookie e delle stringhe di query devono essere in minuscolo.

Per creare un oggetto evento in questo modo è possibile creare un esempio utilizzando l'editor visuale. Hai così la certezza che l'esempio sia formattato correttamente. Puoi copiare il codice JSON non elaborato, incollarlo in un editor di testo e salvare il file.

Per ulteriori informazioni sulla struttura di un evento, consulta [Struttura degli eventi](functions-event-structure.md). 

## Test della funzione
<a name="test-function-step-test"></a>

Puoi testare una funzione nella CloudFront console o con AWS Command Line Interface ()AWS CLI.

------
#### [ Console ]

**Per testare la funzione**

1. Accedi alla CloudFront console all'indirizzo [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) e scegli la pagina **Funzioni**.

1. Scegli la funzione che desideri testare.

1. Seleziona la scheda **Test**. 

1. Assicurati che venga visualizzato l'evento corretto. Per passare dall’evento attualmente visualizzato a un altro, scegli un altro evento nel campo **Seleziona evento di test**.

1. Scegli **Testa la funzione**. La console mostra l’output della funzione, inclusi i log delle funzioni e l’utilizzo del calcolo. 

------
#### [ CLI ]

Puoi testare una funzione utilizzando il comando **aws cloudfront test-function**. 

**Per testare la funzione**

1. Aprire una finestra a riga di comando.

1. Esegui il comando seguente dalla stessa directory che contiene il file specificato.

   Questo esempio utilizza la notazione `fileb://` per passare il file dell’evento oggetto. Include anche interruzioni di riga per rendere il comando più leggibile. 

   ```
   aws cloudfront test-function \
       --name MaxAge \
       --if-match ETVABCEXAMPLE \
       --event-object fileb://event-maxage-test01.json \
       --stage DEVELOPMENT
   ```
**Note**  
Si fa riferimento alla funzione tramite il nome e ETag (nel `if-match` parametro). Fai riferimento all'oggetto evento in base alla sua posizione nel file system.
La fase può essere `DEVELOPMENT` o `LIVE`.

   Se il comando viene eseguito correttamente, vedrai un output simile al seguente.

   ```
   TestResult:
     ComputeUtilization: '21'
     FunctionErrorMessage: ''
     FunctionExecutionLogs: []
     FunctionOutput: '{"response":{"headers":{"cloudfront-functions":{"value":"generated-by-CloudFront-Functions"},"location":{"value":"https://aws.amazon.com/cloudfront/"}},"statusDescription":"Found","cookies":{},"statusCode":302}}'
     FunctionSummary:
       FunctionConfig:
         Comment: MaxAge function
         Runtime: cloudfront-js-2.0
         KeyValueStoreAssociations= \
         {Quantity=1, \
         Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \
       FunctionMetadata:
         CreatedTime: '2021-04-18T20:38:56.915000+00:00'
         FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge
         LastModifiedTime: '2023-17-20T10:38:57.057000+00:00'
         Stage: DEVELOPMENT
       Name: MaxAge
       Status: UNPUBLISHED
   ```

------

**Note**  
`FunctionExecutionLogs` contiene un elenco di righe di log che la funzione ha scritto nelle istruzioni `console.log()` (se presenti).
`ComputeUtilization` contiene informazioni sull’esecuzione della funzione. Per informazioni, consulta [Informazioni sull’utilizzo del calcolo](#compute-utilization).
`FunctionOutput` contiene l'oggetto evento restituito dalla funzione. 

## Informazioni sull’utilizzo del calcolo
<a name="compute-utilization"></a>

**Compute utilization** (Utilizzo del calcolo) è la quantità di tempo impiegata per l'esecuzione della funzione come percentuale del tempo massimo consentito. Ad esempio, il valore 35 indica che la funzione è stata completata nel 35% del tempo massimo consentito.

Se una funzione supera continuamente il tempo massimo consentito, limita CloudFront la funzione. L'elenco seguente illustra la probabilità che una funzione venga limitata in base al valore di utilizzo del calcolo.

**Valore di utilizzo del calcolo:**
+ **Da 1 a 50**: la funzione è comodamente al di sotto del tempo massimo consentito e dovrebbe funzionare senza limitazione (della larghezza di banda della rete).
+ **Da 51 a 70**: la funzione si sta avvicinando al tempo massimo consentito. Prendere in considerazione l'ottimizzazione del codice della funzione.
+ **71-100**: la funzione è molto vicina o supera il tempo massimo consentito. CloudFront è probabile che limiti questa funzione se la si associa a una distribuzione.