Docs
문서 검색...⌘K

Amazon CloudFront

Amazon CloudFront는 액세스 로그를 Amazon Data Firehose 스트림으로 전송할 수 있으며, Firehose는 이를 HTTPS를 통해 Ahrefs로 전달할 수 있습니다. 스트림을 만들고 로그 전송을 활성화하는 작업은 사용자의 AWS 계정에서 AWS 콘솔을 통해 진행하며, Ahrefs는 해당 계정에 접근할 필요가 전혀 없습니다.

사전 준비 사항

  • Ahrefs 프로젝트의 도메인을 제공하는 CloudFront 배포.
  • 해당 AWS 계정에서 Firehose 스트림, S3 버킷, IAM 역할을 생성하고 배포의 로깅 설정을 편집할 수 있는 권한.
  • Firehose 스트림은 미국 동부(버지니아 북부 ) us-east-1 리전에서 생성해야 합니다. CloudFront는 오리진이 어느 리전에 있든, 해당 리전의 Firehose 스트림으로만 스탠다드 로그를 전송합니다.

1단계 — 엔드포인트 URL 및 액세스 키 가져오기

  1. Ahrefs에서 해당 프로젝트의 프로젝트 설정 → 봇 애널리틱스로 이동합니다.
  2. Amazon CloudFront를 선택합니다.
  3. 페이지에 표시된 HTTP 엔드포인트 URL과 액세스 키를 복사합니다. 액세스 키는 사용자의 프로젝트를 식별하므로 비밀번호처럼 취급하세요.

엔드포인트 URL은 모든 사용자에게 동일합니다:

https://analytics.ahrefs.com/api/aws_firehose/logs

2단계 — Firehose 스트림 생성

AWS 콘솔에서 미국 동부(버지니아 북부 ) 리전으로 전환한 다음 Amazon Data Firehose를 열고 Firehose 스트림 생성을 클릭합니다.

소스 및 대상 선택

소스는 직접 PUT, 대상은 HTTP 엔드포인트로 설정한 다음, 스트림 이름을 ahrefs-bot-analytics와 같이 지정합니다. 스트림을 만든 후에는 소스와 대상을 변경할 수 없습니다. 레코드 변환 섹션은 그대로 둡니다.

Firehose 스트림 생성: 소스 직접 PUT, 대상 HTTP 엔드포인트, 스트림 이름 ahrefs-bot-analytics

대상 설정

  • HTTP 엔드포인트 이름: Ahrefs 봇 애널리틱스
  • HTTP 엔드포인트 URL: 1단계의 URL
  • 인증: 액세스 키 사용을 선택하고, 1단계의 액세스 키를 액세스 키에 붙여넣습니다.
  • 콘텐츠 인코딩: GZIP
  • 재시도 기간: 300초
  • 파라미터: 비워 둡니다
  • 버퍼 힌트: 기본값을 유지합니다
Firehose 대상 설정: Ahrefs 엔드포인트 URL, 액세스 키 인증, GZIP 콘텐츠 인코딩, 300초 재시도

warning

액세스 키는 이 스트림을 Ahrefs 프로젝트에 연결하는 유일한 요소입니다. 각 Ahrefs 프로젝트에는 고유한 액세스 키가 있는 전용 Firehose 스트림이 필요합니다. 같은 프로젝트를 제공하는 여러 배포는 하나의 스트림을 공유할 수 있습니다.

백업 설정

Amazon S3의 소스 레코드 백업에서 실패한 데이터만을 선택한 다음, 찾아보기로 기존 S3 버킷을 선택하거나 생성으로 새로 만듭니다. Firehose는 Ahrefs가 수락하지 못한 모든 배치를 그 이유와 함께 여기에 기록하므로, 문제를 해결할 때 이 버킷을 가장 먼저 확인하면 됩니다.

Firehose 백업 설정: 실패한 데이터만, S3 백업 버킷

어드밴스드 설정

어드밴스드 설정을 펼쳐 Amazon CloudWatch 오류 로깅을 활성화됨으로 설정하고, 권한에서 콘솔이 새 IAM 역할을 생성하도록 합니다. Firehose 스트림 생성을 클릭하고 스트림 상태가 활성이 될 때까지 기다립니다.

3단계 — CloudFront 로그를 스트림으로 보내기

  1. CloudFront 콘솔에서 배포를 열고 사용 중인 배포를 선택합니다.
  2. 로깅 탭에서 스탠다드 로그 대상 아래의 추가를 클릭합니다.
  3. 액세스 로그 대상 추가 페이지에서 전송 대상을 Amazon Kinesis Data Firehose로 설정하고, 대상 스트림에서 스트림을 선택합니다.
  4. 추가 설정을 펼칩니다:
    • 필드 선택: 로그 필드에 나열된 필드를 선택합니다. 33개 필드를 모두 선택해도 됩니다.
    • 출력 형식: JSON. 다른 형식은 허용되지 않습니다.
  5. 제출을 클릭합니다. CloudFront는 몇 분 내에 로깅 변경 사항을 적용합니다.
CloudFront: 액세스 로그 대상 추가, Amazon Kinesis Data Firehose로 전달, 스트림 선택, 필드 선택 및 JSON 출력 형식

로그 필드

Ahrefs에는 타임스탬프, c-ip, x-host-header, cs-uri-stem, cs(User-Agent)가 필요합니다. 권장 선택 항목은 다음과 같습니다:

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, asn은 필드 선택기의 실시간 하위 집합에 있습니다. 이는 선택 사항입니다. timestamp(ms)가 없으면 Ahrefs는 1초 정밀도로 date와 time을 사용합니다.

4단계 — 확인

CloudFront는 스탠다드 로그를 배치로 전달하며, 일반적으로 요청 후 1시간 이내에 전달되고 로깅을 활성화한 뒤 약 4시간 후에는 안정적으로 전달됩니다. 그다음 Firehose가 버퍼 간격 내에 각 배치를 전달합니다.

  • Firehose 콘솔에서 스트림의 모니터링 탭은 CloudFront가 전달을 시작하면 IncomingRecords를, Ahrefs가 배치를 수락하면 DeliveryToHttpEndpoint.Success를 표시합니다.
  • Ahrefs에서는 봇이 사이트를 방문하기 시작하면 봇 애널리틱스 보고서에 데이터가 채워집니다.

문제 해결

전달에 실패하면 Firehose는 재시도 기간 동안 재시도한 뒤, Ahrefs가 반환한 오류 메시지와 함께 배치를 백업 버킷의 http-endpoint-failed/ 접두사 아래에 기록합니다. 같은 메시지가 스트림의 대상 오류 로그 탭에도 표시됩니다.

오류 메시지원인
missing authentication headerFirehose 대상의 액세스 키 필드가 비어 있습니다.
invalid authentication액세스 키가 Ahrefs 프로젝트와 일치하지 않습니다. 1단계에서 다시 복사하세요.
레코드가 JSON이 아닙니다: CloudFront 스탠다드 로깅(v2)을 JSON 출력 형식으로 구성하세요전달의 출력 형식이 JSON이 아니거나, 스트림이 CloudFront 실시간 로그를 수신하고 있습니다. JSON 형식의 스탠다드 로그만 지원됩니다.
응답 … 에는 ‘content-type: application/json’ 헤더가 포함되어야 합니다 … 404엔드포인트 URL이 잘못 입력되었습니다. 1단계의 URL과 비교해 보세요.

비활성화

  1. CloudFront 콘솔에서 배포의 로깅 탭으로 이동해 Firehose 대상을 선택한 다음 삭제합니다. 그러면 로그 전달이 중지됩니다.
  2. Firehose 스트림을 삭제하고, 더 이상 필요하지 않다면 백업 버킷도 삭제합니다.
  3. Ahrefs에서 프로젝트 설정 → 봇 애널리틱스로 이동해 Amazon CloudFront를 비활성화합니다.

대상을 삭제해도 CloudWatch Logs에는 배포의 전달 소스가 유지됩니다. 이는 문제가 없으며, 로깅을 다시 활성화하면 재사용됩니다.

info

CloudFront 실시간 로그(Kinesis Data Streams를 통해 전달됨)는 지원되지 않습니다. 위에서 설명한 대로 JSON 출력을 사용하는 스탠다드 로깅(v2)을 사용하세요.