

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

# Creazione di funzioni
<a name="create-function"></a>

La creazione di una funzione avviene in due fasi: 

1. Crea il codice della funzione come JavaScript. Puoi usare l'esempio predefinito dalla CloudFront console o scriverne uno tuo. Per ulteriori informazioni, consulta i seguenti argomenti:
   + [Scrittura del codice della funzione](writing-function-code.md)
   + [CloudFront Funzioni, struttura degli eventi](functions-event-structure.md)
   + [CloudFront Esempi di funzioni per CloudFront](service_code_examples_cloudfront_functions_examples.md)

1.  CloudFront Utilizzatelo per creare la funzione e includere il codice. Il codice è presente all'interno della funzione (non come riferimento).

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

**Per creare una 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 **Crea funzione**.

1. Inserisci un nome di funzione univoco all'interno di Account AWS, scegli la JavaScript versione, quindi scegli **Continua**. Viene visualizzata la pagina dei dettagli relativa alla nuova funzione.
**Nota**  
Per utilizzare [coppie chiave-valore](kvs-with-functions.md) nella funzione, è necessario scegliere JavaScript runtime 2.0.  
Se riscontrate un errore `TaggingConflict` (HTTP 409) durante la creazione di una funzione con tag, aspettate qualche minuto e riprovate oppure create la funzione senza tag inizialmente e aggiungeteli in seguito.

1. Nella sezione **Codice funzione**, scegli la scheda **Compila** e immetti il codice funzione. Il codice di esempio incluso nella scheda **Compila** illustra la sintassi di base del codice funzione.

1. Scegli **Save changes** (Salva modifiche).

1. Se il codice funzione utilizza coppie chiave-valore, è necessario associare un archivio di valori delle chiavi. 

   Puoi associare l’archivio di valori delle chiavi al momento della creazione della funzione. In alternativa, puoi associarlo in un secondo momento [aggiornando la funzione](update-function.md). 

   Per associare subito un archivio di valori delle chiavi, procedi come segue:
   + **Vai alla KeyValueStore sezione **Associa e scegli Associa** esistente. KeyValueStore**
   + **Seleziona l'archivio chiave-valore che contiene le coppie chiave-valore nella funzione, quindi scegli Associa. KeyValueStore**

   CloudFront associa immediatamente l'archivio alla funzione. Non è necessario salvare la funzione.

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

Con la CLI, in genere si crea prima il codice funzione in un file e poi si crea la funzione con AWS CLI.

**Per creare una funzione**

1. Crea il codice funzione in un file e memorizzalo in una directory a cui il computer può connettersi. 

1. Esegui il comando come mostrato nell'esempio. Questo esempio utilizza la notazione `fileb://` per passare il file. Include anche interruzioni di riga per rendere il comando più leggibile. 

   ```
   aws cloudfront create-function \
       --name MaxAge \
       --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \
       --function-code fileb://function-max-age-v1.js
   ```
**Note**  
`Runtime`— La versione di. JavaScript Per utilizzare [coppie chiave-valore](kvs-with-functions.md) nella funzione, è necessario specificare la versione 2.0.
`KeyValueStoreAssociations`: se la funzione utilizza coppie chiave-valore, puoi associare l’archivio dei valori delle chiavi al momento della creazione della funzione. In alternativa, puoi associarlo in un secondo momento utilizzando `update-function`. Il valore `Quantity` è sempre `1` perché a ogni funzione può essere associato un solo archivio di valori delle chiavi.

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

   ```
   ETag: ETVABCEXAMPLE
   FunctionSummary:
     FunctionConfig:
       Comment: Max Age 2 years
       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-11-19T20:38:56.915000+00:00'
       Stage: DEVELOPMENT
     Name: MaxAge
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront:::function/MaxAge
   ```

   La maggior parte delle informazioni viene ripetuta dalla richiesta. Altre informazioni sono state aggiunte da CloudFront.
**Note**  
`ETag`: questo valore cambia a ogni modifica dell’archivio di valori delle chiavi. Utilizza questo valore e il nome della funzione per fare riferimento alla funzione in futuro. Assicurati di utilizzare sempre l’`ETag` corrente.
`FunctionARN`— L'ARN per la tua CloudFront funzione.
111122223333 — Il. Account AWS
`Stage`: la fase della funzione (`LIVE` o `DEVELOPMENT`). 
`Status`: lo stato della funzione (`PUBLISHED` o `UNPUBLISHED`).

------

Dopo aver creato la funzione, viene aggiunta alla fase `DEVELOPMENT`. Ti consigliamo di [provare la funzione](test-function.md) prima di [pubblicarla](publish-function.md). Dopo aver pubblicato la funzione, questa passa alla fase `LIVE`.

**TaggingConflict errore durante la creazione di funzioni**  
CloudFront Riutilizzo delle funzioni ARNs per funzioni con lo stesso nome. È possibile che si verifichi un errore `TaggingConflict` (HTTP 409) durante la creazione di una funzione con tag. Ciò può verificarsi nei seguenti scenari:  
**Dopo l'eliminazione di una funzione**: ricreazione di una funzione con lo stesso nome e gli stessi tag subito dopo l'eliminazione.
**Dopo un tentativo di creazione fallito**: se una richiesta di creazione precedente non è riuscita (ad esempio, a causa di parametri non validi, associazione KVS non valida o rollback dello stack fallito). CloudFormation 
Se ricevi un `TaggingConflict` errore, puoi:  
Attendi qualche minuto e riprova l'operazione.
Usa un nome di funzione diverso. In questo modo si evita completamente il conflitto di riutilizzo dell'ARN.
Se il modello crea sia una KeyValueStore funzione che vi fa riferimento, aggiungete un valore esplicito `DependsOn` per assicurarvi che il KVS sia completamente fornito prima della creazione della funzione.