

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

# Metodi generali di supporto
<a name="general-helper-methods"></a>

Questa pagina fornisce metodi di supporto aggiuntivi all'interno CloudFront di Functions. Per utilizzare questi metodi, create una CloudFront funzione utilizzando JavaScript runtime 2.0.

```
import cf from 'cloudfront';
```

Per ulteriori informazioni, consulta [JavaScript funzionalità di runtime 2.0 per CloudFront Functions](functions-javascript-runtime-20.md).

## `Metadati EdgeLocation`
<a name="edge-location-metadata"></a>

Questo metodo richiede l'utilizzo del modulo. `cloudfront`

**Nota**  
È possibile utilizzare questo metodo solo per le funzioni di richiesta del visualizzatore. Per le funzioni di risposta del visualizzatore, questo metodo è vuoto.

Utilizzate questo JavaScript oggetto per ottenere il codice dell'aeroporto della edge location, la regione [Regional Edge Cache](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches) prevista o l'indirizzo IP del CloudFront server utilizzato per gestire la richiesta. Questi metadati sono disponibili solo nel trigger dell'evento di richiesta del visualizzatore.

```
cf.edgeLocation = {
    name: SEA
    serverIp: 1.2.3.4
    region: us-west-2
}
```

L'`cf.edgeLocation`oggetto può contenere quanto segue:

**nome**  
Il [codice IATA](https://en.wikipedia.org/wiki/IATA_airport_code) a tre lettere dell'edge location che ha gestito la richiesta.

**IP del server**  
L'indirizzo IPv4 o IPv6 del server che ha gestito la richiesta.

**region**  
La CloudFront Regional Edge Cache (REC) che la richiesta *dovrebbe* utilizzare in caso di perdita della cache. Questo valore non viene aggiornato nel caso in cui il REC previsto non sia disponibile e per la richiesta venga utilizzato un REC di backup. Questo non include la posizione Origin Shield utilizzata, tranne nei casi in cui il REC principale e l'Origin Shield si trovino nella stessa posizione.

**Nota**  
CloudFront Functions non viene richiamato una seconda volta quando CloudFront è configurato per utilizzare il failover di origine. Per ulteriori informazioni, consulta [Ottimizza l'alta disponibilità con il failover di CloudFront origine](high_availability_origin_failover.md).

## `metodo raw QueryString ()`
<a name="raw-query-string-method"></a>

Questo metodo non richiede il `cloudFront` modulo.

Utilizzate il `rawQueryString()` metodo per recuperare la stringa di query non analizzata e inalterata come stringa.

**Richiesta**

```
function handler(event) {
    var request = event.request;
    const qs = request.rawQueryString();
}
```

**Risposta**

Restituisce la stringa di query completa della richiesta in entrata come valore di stringa senza l'iniziale. `?` 
+ Se non è presente una stringa di query, ma `?` è presente, le funzioni restituiscono una stringa vuota. 
+ Se non è presente una stringa di query e `?` non è presente, la funzione restituisce`undefined`.

**Caso 1: restituita la stringa di query completa (senza interlinea`?`)**  
URL della richiesta in entrata: `https://example.com/page?name=John&age=25&city=Boston`  
`rawQueryString()`restituisce: `"name=John&age=25&city=Boston"`

**Caso 2: restituita una stringa vuota (quando `?` è presente ma senza parametri)**  
URL della richiesta in entrata: `https://example.com/page?`  
`rawQueryString()`restituisce: `""`

**Caso 3: `undefined` restituito (nessuna stringa di query e no`?`)**  
URL della richiesta in entrata: `https://example.com/page`  
`rawQueryString()`restituisce: `undefined`

## metodo `log CustomData ()`
<a name="log-custom-data-method"></a>

Per utilizzare questo metodo, importate il `cloudfront` modulo.

Usa il `logCustomData()` metodo per inviare dati personalizzati dalla tua CloudFront funzione Amazon CloudFront ai log di accesso. I dati vengono scritti nel campo `viewer-request-log-data` o `viewer-response-log-data` log, a seconda che la funzione sia associata a una richiesta del visualizzatore o a un evento di risposta del visualizzatore.

Il metodo accetta un singolo argomento di stringa. Per registrare un oggetto, usa prima `JSON.stringify()` di tutto convertirlo in una stringa. Ad esempio:

```
const resp_obj = JSON.stringify(some_obj);
cf.logCustomData(resp_obj);
```

Ogni campo supporta fino a 800 byte di dati. CloudFront automaticamente URL-encodes i dati prima di scriverli nel campo di registro. CloudFront tronca successivamente tutti i dati superiori a 800 byte. URL-encoding Se la funzione chiama `logCustomData()` più volte all'interno di una singola esecuzione, CloudFront utilizza solo l'ultimo valore.

**Aggiungi campi alla configurazione del registro**  
Per ricevere questi dati nei registri di CloudFront accesso, è necessario aggiungere i `viewer-response-log-data` campi `viewer-request-log-data` o alla configurazione dei [log in tempo reale](real-time-logs.md) o alla configurazione di [registrazione standard (v2](standard-logging.md)). CloudFront Functions non supporta la registrazione personalizzata dei dati per i punti di presenza (POP) incorporati.

**Differenza da console.log ()**  
Il `logCustomData()` metodo non sostituisce `console.log()` CloudFront Functions. Utilizzalo `console.log()` per inviare righe di registro ad Amazon CloudWatch Logs. Utilizzalo `cf.logCustomData()` per scrivere dati personalizzati per CloudFront accedere ai log ([log in tempo reale](real-time-logs.md) e [registrazione standard (](standard-logging.md)v2)). È possibile utilizzare entrambi i metodi nella stessa funzione. Per ulteriori informazioni, vedere [Registri CloudFront delle funzioni.](edge-functions-logs.md)

Il metodo utilizza la seguente sintassi:

```
cf.logCustomData(String);
```

**Example Registra un'intestazione in una funzione di richiesta del visualizzatore**  

```
import cf from 'cloudfront';

function handler(event) {
    var request = event.request;

    // Check if the debug header exists, if so log it
    if (request.headers['x-debug-header']) {
        // Log the debug header value
        cf.logCustomData("debug header found: " + request.headers['x-debug-header'].value);
    }

    return request;
}
```