métodos auxiliares gerais
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.
edgeLocationMetadados do
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 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
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.
Método rawQueryString()
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:
undefinedexibido (sem string de consulta e nenhum?) -
URL da solicitação de entrada:
https://example.com/page.rawQueryString()Retorna:undefined
logCustomData()Método
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 ou à configuração do registro em log padrão (v2). O CloudFront Functions não é compatível com o registro em log de dados personalizados para pontos de presença (POPs) incorporados.
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 e registro em log padrão (v2)). Você pode usar os dois métodos na mesma função. Consulte mais informações em Logs do CloudFront Functions.
O método usa a seguinte sintaxe:
cf.logCustomData(String);
exemplo 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; }