

# métodos auxiliares gerais
<a name="general-helper-methods"></a>

Esta página apresenta outros métodos auxiliares dentro do CloudFront Functions. Para usar esses métodos, crie uma função do CloudFront usando o Runtime 2.0 do JavaScript.

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

Para obter mais informações, consulte [Recursos de runtime 2.0 do JavaScript para CloudFront Functions](functions-javascript-runtime-20.md).

## `edgeLocation`Metadados do
<a name="edge-location-metadata"></a>

Esse método requer o uso do módulo `cloudfront`.

**nota**  
Somente é possível usar esse método para funções de solicitação de visualizador. Para funções de resposta ao visualizador, esse método está vazio.

Use esse objeto JavaScript para obter o código do aeroporto do local da borda, a região do [cache de borda regional](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches) que deve ser usada ou o endereço IP do servidor do CloudFront usado para processar a solicitação. Esses metadados estão disponíveis somente no acionador de eventos de solicitação de visualizador.

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

O objeto `cf.edgeLocation` contém os seguintes campos:

**name**  
O [código da IATA](https://en.wikipedia.org/wiki/IATA_airport_code) de três letras do local da borda que processou a solicitação.

**serverIp**  
O endereço IPv4 ou IPv6 do servidor que processou a solicitação.

**region**  
O cache de borda regional (REC) do CloudFront que a solicitação deve usar se não houver acerto no cache. Esse valor não é atualizado caso o REC a ser usado não esteja disponível e um REC de backup seja usado para a solicitação. Isso não inclui o local do Origin Shield que está sendo usado, exceto nos casos em que o REC primário e o Origin Shield estão no mesmo local.

**nota**  
O CloudFront Functions não é invocado pela segunda vez quando o CloudFront está configurado para usar o failover de origem. Para obter mais informações, consulte [Otimizar a alta disponibilidade com o failover de origem do CloudFront](high_availability_origin_failover.md).

## Método `rawQueryString()`
<a name="raw-query-string-method"></a>

Esse método não requer o módulo `cloudFront`.

Use o método `rawQueryString()` para recuperar a string de consulta não analisada e não alterada como uma string.

**Solicitação**

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

**Resposta**

Exibe a string de consulta completa da solicitação de entrada como um valor de string sem o `?` inicial. 
+ Se não houver uma string de consulta, mas houver um `?`, as funções exibirão uma string vazia. 
+ Se não houver uma string de consulta e houver um `?`, a função exibirá `undefined`.

**Caso 1: string de consulta completa exibida (sem o `?` inicial)**  
URL da solicitação de entrada: `https://example.com/page?name=John&age=25&city=Boston`.  
`rawQueryString()` Retorna: `"name=John&age=25&city=Boston"`

**Caso 2: string vazia exibida (quando há um `?`, mas sem parâmetros)**  
URL da solicitação de entrada: `https://example.com/page?`.  
`rawQueryString()` Retorna: `""`

**Caso 3: `undefined` exibido (sem string de consulta e nenhum `?`)**  
URL da solicitação de entrada: `https://example.com/page`.  
`rawQueryString()` Retorna: `undefined`

## `logCustomData()`Método
<a name="log-custom-data-method"></a>

Para usar esse método, importe o módulo `cloudfront`.

Use o método `logCustomData()` para enviar dados personalizados da função do Amazon CloudFront aos logs de acesso do CloudFront. Os dados são gravados no campo de log `viewer-request-log-data` ou `viewer-response-log-data`, dependendo de a função estar associada a um evento de solicitação ou de resposta do visualizador.

O método aceita um único argumento de string. Para registrar um objeto em log, use `JSON.stringify()` para convertê-lo primeiro em uma string. Por exemplo:

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

Cada campo é compatível com até 800 bytes de dados. O CloudFront codifica automaticamente os dados para URL antes de gravá-los no campo de log. O CloudFront trunca todos os dados que excederem 800 bytes após a codificação para URL. Se a função chamar `logCustomData()` várias vezes durante uma única execução, o CloudFront usará somente o último valor.

**Adicionar campos à configuração de logs**  
Para receber esses dados nos logs de acesso do CloudFront, você deve adicionar os campos `viewer-request-log-data` ou `viewer-response-log-data` à configuração de [logs em tempo real](real-time-logs.md) ou à configuração do [registro em log padrão (v2)](standard-logging.md).

**Diferença em relação a console.log()**  
O método `logCustomData()` não substitui `console.log()` no CloudFront Functions. Use `console.log()` para enviar linhas de log ao Amazon CloudWatch Logs. Use `cf.logCustomData()` para gravar dados personalizados nos logs de acesso do CloudFront ([logs em tempo real](real-time-logs.md) e [registro em log padrão (v2)](standard-logging.md)). Você pode usar os dois métodos na mesma função. Consulte mais informações em [Logs do CloudFront Functions](edge-functions-logs.md).

O método usa a seguinte sintaxe:

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

**Example Registrar em log um cabeçalho em uma função de solicitação do visualizador**  

```
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;
}
```