Métodos de ayuda generales
Esta página proporciona métodos de ayuda adicionales en CloudFront Functions. Para usar estos métodos, cree una función de CloudFront con tiempo de ejecución 2.0 de JavaScript.
import cf from 'cloudfront';
Para obtener más información, consulte Características del tiempo de ejecución 2.0 de JavaScript para CloudFront Functions.
edgeLocationMetadatos de
Este método requiere el uso del modulo cloudfront.
nota
Solo puede utilizar este método para las funciones de solicitud del espectador. Para las funciones de respuesta del espectador, este método está vacío.
Utilice este objeto de JavaScript para obtener el código del aeropuerto de ubicación periférica, la región de Caché periférica regional prevista o la dirección IP del servidor de CloudFront utilizada para gestionar la solicitud. Estos metadatos solo están disponibles cuando el espectador solicita desencadenar el evento.
cf.edgeLocation = { name: SEA serverIp: 1.2.3.4 region: us-west-2 }
El objeto cf.edgeLocation puede incluir lo siguiente:
- name
-
El código IATA
de tres letras de la ubicación periférica que gestionó la solicitud. - serverIp
-
Dirección IPv4 o IPv6 del servidor que gestionó la solicitud.
- region
-
La caché periférica regional (REC) de CloudFront que se espera que utilice la solicitud en caso de falta de memoria caché. Este valor no se actualiza en caso de que el REC esperado no esté disponible y se utilice un REC de copia de seguridad para la solicitud. Esto no incluye la ubicación de Origin Shield que se utilice, excepto en los casos en que el REC principal y el Origin Shield estén en la misma ubicación.
nota
CloudFront Functions no se invoca por segunda vez cuando CloudFront está configurado para usar la conmutación por error de origen. Para obtener más información, consulte Optimización de alta disponibilidad con conmutación por error de origen de CloudFront.
rawQueryString()Método de
Este método no requiere el módulo cloudFront.
Utilice el método rawQueryString() para recuperar la cadena de consulta no analizada y no modificada como una cadena.
Solicitud
function handler(event) { var request = event.request; const qs = request.rawQueryString(); }
Respuesta
Devuelve la cadena de consulta completa de la solicitud entrante como un valor de cadena sin ? al principio.
-
Si no hay una cadena de consulta, pero
?está presente, la función devuelve una cadena vacía. -
Si no hay una cadena de consulta y
?no está presente, la función devuelveundefined.
- Caso 1: se devuelve la cadena de consulta completa (sin
?al principio) -
URL de solicitud entrante:
https://example.com/page?name=John&age=25&city=BostonrawQueryString()devuelve:"name=John&age=25&city=Boston" - Caso 2: se devuelve una cadena vacía (cuando
?está presente pero sin parámetros) -
URL de solicitud entrante:
https://example.com/page?rawQueryString()devuelve:"" - Caso 3: se devuelve
undefined(sin cadena de consulta ni?) -
URL de solicitud entrante:
https://example.com/pagerawQueryString()devuelve:undefined
logCustomData()Método de
Para usar este método, importe el módulo cloudfront.
Utilice el método logCustomData() para enviar datos personalizados desde la función de Amazon CloudFront a los registros de acceso de CloudFront. Los datos se escriben en el campo de registro viewer-request-log-data o viewer-response-log-data, en función de si la función está asociada a una solicitud del espectador o a un evento de respuesta del espectador.
El método acepta un único argumento de cadena. Para registrar un objeto, utilice primero JSON.stringify() para convertirlo en una cadena. Por ejemplo:
const resp_obj = JSON.stringify(some_obj); cf.logCustomData(resp_obj);
Cada campo admite hasta 800 bytes de datos. CloudFront codifica automáticamente la URL de los datos antes de escribirlos en el campo de registro. CloudFront trunca los datos que superen los 800 bytes después de la codificación de URL. Si la función llama a logCustomData() varias veces en una sola ejecución, CloudFront usa solo el último valor.
Adición de campos a la configuración de registro
Para recibir estos datos en los registros de acceso de CloudFront, debe agregar los campos viewer-request-log-data o viewer-response-log-data a la configuración de registro en tiempo real o a la configuración de registro estándar (v2). CloudFront Functions no admite el registro de datos personalizado para los puntos de presencia (POP) integrados.
Diferencia con console.log()
El método logCustomData() no sustituye a console.log() para CloudFront Functions. Use console.log() para enviar líneas de registro a Registros de Amazon CloudWatch. Use cf.logCustomData() para escribir datos personalizados en los registros de acceso de CloudFront (registros en tiempo real y registros estándar (v2)). Puede usar ambos métodos en la misma función. Para obtener más información, consulte Registros de CloudFront Functions.
El método utiliza la siguiente sintaxis:
cf.logCustomData(String);
ejemplo Registro de un encabezado en una función de solicitud del espectador
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; }