Amazon CloudFront
Amazon CloudFront puede entregar sus registros de acceso a un flujo de Amazon Data Firehose, y Firehose puede reenviarlos a Ahrefs a través de HTTPS. Creas el flujo y habilitas la entrega de registros en tu propia cuenta de AWS desde la consola de AWS; Ahrefs nunca necesita acceder a ella.
Requisitos previos
- Una distribución de CloudFront que sirve el dominio de tu proyecto de Ahrefs.
- Permisos en esa cuenta de AWS para crear un flujo de Firehose, un bucket de S3 y un rol de IAM, y para editar la configuración de registro de la distribución.
- El flujo de Firehose debe crearse en la región US East (N. Virginia)
us-east-1. CloudFront solo entrega registros standard a flujos de Firehose en esa región, independientemente de la región en la que esté tu origen.
Paso 1 — Obtén la URL de tu punto de conexión y la clave de acceso
- En Ahrefs, ve a Configuración del proyecto → Bot Analytics de tu proyecto.
- Selecciona Amazon CloudFront.
- Copia la URL del punto de conexión HTTP y la clave de acceso que se muestran en la página. La clave de acceso identifica tu proyecto; trátala como si fuera una contraseña.
La URL del punto de conexión es la misma para todos:
https://analytics.ahrefs.com/api/aws_firehose/logs
Paso 2 — Crea el flujo de Firehose
En la consola de AWS, cambia a la región US East (N. Virginia), abre Amazon Data Firehose y haz clic en Crear flujo de Firehose.
Elige el origen y el destino
Configura Origen como PUT directo y Destino como Punto de conexión HTTP, y luego asigna un nombre al flujo, por ejemplo ahrefs-bot-analytics. El origen y el destino no se pueden cambiar después de crear el flujo. Deja la sección Transformar registros tal como está.
Configuración de destino
- Nombre del punto de conexión HTTP:
Ahrefs Bot Analytics - URL del punto de conexión HTTP: la URL del Paso 1
- Autenticación: Usar clave de acceso y pega la clave de acceso del Paso 1 en Clave de acceso
- Codificación de contenido: GZIP
- Duración de los reintentos:
300segundos - Parámetros: déjalos en blanco
- Sugerencias de almacenamiento en búfer: mantén los valores predeterminados
warning
La clave de acceso es lo único que vincula el flujo a tu proyecto de Ahrefs. Cada proyecto de Ahrefs necesita su propio flujo de Firehose con su propia clave de acceso; varias distribuciones que sirven al mismo proyecto pueden compartir un único flujo.
Configuración de copia de seguridad
En Copia de seguridad de registros de origen en Amazon S3, elige Solo datos con error; luego, selecciona Examinar para elegir un bucket de S3 existente o Crear para crear uno nuevo. Firehose escribe allí cualquier lote que Ahrefs no haya podido aceptar, junto con el motivo, así que este bucket es el primer lugar donde mirar al solucionar problemas.
Configuración avanzada
Despliega Configuración Advanced, configura Registro de errores de Amazon CloudWatch como Activado y, en Permisos, deja que la consola cree un nuevo rol de IAM. Haz clic en Crear flujo de Firehose y espera hasta que el estado del flujo sea Activo.
Paso 3 — Envía los registros de CloudFront al flujo
- En la consola de CloudFront, abre Distribuciones y selecciona tu distribución.
- En la pestaña Registro, en Destinos de registros Standard, haz clic en Agregar.
- En la página Agregar destino de registro de acceso, configura Enviar a como Amazon Kinesis Data Firehose y, en Flujo de destino, elige tu flujo.
- Despliega Configuración adicional:
- Selección de campos: selecciona los campos que se enumeran en Campos de registro. También funciona mantener seleccionados los 33 campos.
- Formato de salida: JSON. No se aceptan otros formatos.
- Haz clic en Enviar. CloudFront aplica los cambios de registro en unos minutos.
Campos de registro
Ahrefs necesita una marca de tiempo, c-ip, x-host-header, cs-uri-stem y cs(User-Agent). La selección recomendada es:
timestamp(ms) date time c-ip x-forwarded-for cs-method x-host-header cs-protocol
cs-protocol-version cs-uri-stem cs-uri-query cs(User-Agent) cs(Referer) sc-status sc-bytes
sc-content-type time-to-first-byte time-taken x-edge-result-type x-edge-request-id
x-edge-location c-country asn
timestamp(ms), c-country y asn están en el subconjunto en tiempo real del selector de campos. Son opcionales: sin timestamp(ms), Ahrefs usa date y time, con precisión de un segundo.
Paso 4 — Verificar
CloudFront entrega los registros Standard en lotes, normalmente dentro de la hora posterior a las solicitudes, y de forma fiable unas cuatro horas después de que habilites el registro. Luego, Firehose reenvía cada lote dentro de su intervalo de búfer.
- En la consola de Firehose, la pestaña Supervisión del flujo muestra
IncomingRecordscuando CloudFront empieza a entregar, yDeliveryToHttpEndpoint.Successcuando Ahrefs acepta los lotes. - En Ahrefs, el informe de Bot Analytics se va completando a medida que los bots visitan tu sitio.
Solución de problemas
Si los envíos fallan, Firehose reintenta durante el periodo de reintentos y, después, escribe el lote en tu bucket de copia de seguridad bajo el prefijo http-endpoint-failed/, con el mensaje de error devuelto por Ahrefs. El mismo mensaje aparece en la pestaña Registros de errores de destino del flujo.
| Mensaje de error | Causa |
|---|---|
missing authentication header | El campo de la clave de acceso en el destino de Firehose está vacío. |
invalid authentication | La clave de acceso no coincide con un proyecto de Ahrefs. Cópiala de nuevo del Paso 1. |
records are not JSON: configure CloudFront standard logging (v2) with output format JSON | El formato de salida del envío no es JSON, o el flujo recibe registros en tiempo real de CloudFront. Solo se admiten registros Standard en JSON. |
Response … must contain a 'content-type: application/json' header … 404 | La URL del punto de conexión tiene un error tipográfico. Compárala con la URL del Paso 1. |
Deshabilitar
- En la consola de CloudFront, en la pestaña Registro de la distribución, selecciona el destino de Firehose y elimínalo. Esto detiene la entrega de registros.
- Elimina el flujo de Firehose y el bucket de copia de seguridad si ya no lo necesitas.
- En Ahrefs, desactiva Amazon CloudFront en Ajustes del proyecto → Bot Analytics.
Al eliminar el destino, se mantiene la fuente de entrega de la distribución en CloudWatch Logs. Eso es inofensivo y se reutiliza si vuelves a habilitar el registro.
info
Los registros en tiempo real de CloudFront (entregados a través de Kinesis Data Streams) no son compatibles. Usa el registro Standard (v2) con salida JSON como se describe arriba.