집계 서비스를 사용할 때 보고서 형식, 출력 도메인 문제, 코디네이터 문제 등 여러 요인으로 인해 문제가 발생할 수 있습니다. 문제를 정확하게 진단하려면 오류 소스와 여기에 포함된 메타데이터를 이해하는 것이 중요합니다.
가이드 주제:
클라이언트 측정 API 설정 확인
출처 서버가 올바르게 등록되었는지 확인한 후 다음 단계를 완료합니다.
보고서가 어떻게 트리거되는지 확인합니다. 사용 중인 API에 따라 올바른 보고서 형식이 수신되는지 확인합니다.
- Attribution Reporting API
- Attribution Reporting API의 경우 소스 (이벤트 및 요약)를 등록했는지 확인합니다. 트리거 등록 (이벤트 및 요약)을 실행하려면 헤더 유효성 검사 도구를 사용하여
Attribution-Reporting-Register-Trigger
에 전달된 JSON이 올바른지 확인합니다. (Attribution Reporting API 요약 보고서 자세히 알아보기)
- Attribution Reporting API의 경우 소스 (이벤트 및 요약)를 등록했는지 확인합니다. 트리거 등록 (이벤트 및 요약)을 실행하려면 헤더 유효성 검사 도구를 사용하여
- Private Aggregation API
- Private Aggregation API의 보고는
contributeToHistogram
함수를 사용하여 완료할 수 있습니다. 버킷 키와 값을 전달해야 합니다. 버킷 키는BigInt
형식이어야 합니다. (Private Aggregation API 자세히 알아보기)
- Private Aggregation API의 보고는
- Attribution Reporting API
권장사항에 따라 보고서를 트리거했지만 여전히 문제가 발생하는 경우 Chrome 개발자 콘솔의 '콘솔' 및 '네트워크' 탭에서 오류가 있는지 확인합니다.
이러한 클라이언트 API에 관한 추가 문제 해결 지원이 필요한 경우 Attribution Reporting API 디버깅 가이드 및 Private Aggregation API + Shared Storage를 참고하세요.
보고 출처 설정 문제 해결
보고 출처 서버는 집계 가능한 보고서가 전송될 올바른 상응하는 .well-known
엔드포인트를 선언한 곳입니다. 배포된 보고 출처 서버가 올바르게 등록되었는지 확인합니다.
신고 출처에서 신고를 받고 있나요?
배포된 보고 출처 서버가 올바르게 등록되었는지 확인합니다. 이 서버는 집계 가능한 보고서가 전송될 올바른 상응하는 .well-known
엔드포인트를 선언한 곳입니다.
클라이언트 측 측정 API | 집계 가능한 일치 엔드포인트 |
---|---|
기여도 보고 | POST /.well-known/attribution-reporting/report-aggregate-attribution |
Private Aggregation + Shared Storage (조합) | POST /.well-known/private-aggregation/report-shared-storage |
비공개 집계 + Protected Audience (조합) | POST /.well-known/private-aggregation/report-protected-audience |
출처 서버가 올바르게 등록되었는지 확인한 후 다음 단계를 완료합니다.
보고서가 어떻게 트리거되는지 확인합니다. 사용 중인 API에 따라 올바른 보고서 형식이 수신되고 있는지 확인합니다.
권장사항에 따라 보고서를 트리거했지만 여전히 문제가 발생하는 경우 Chrome 개발자 콘솔의 '콘솔' 및 '네트워크' 탭에서 오류가 있는지 확인합니다.
이러한 클라이언트 API에 관한 추가 문제 해결 지원이 필요한 경우 Attribution Reporting API 디버깅 안내 및 Private Aggregation API + Shared Storage를 계속 진행하세요.
집계 보고서 문제 해결하기
집계 보고서는 클라이언트 측 측정 API에서 생성하여 보고 출처로 전송합니다. 이러한 보고서는 보고 엔드포인트에서 AVRO
형식으로 변환해야 합니다. 이 변환에 문제가 있거나 보고서 자체가 손상된 경우 집계 서비스에 오류가 표시될 수 있습니다.
집계 가능한 보고서가 올바르게 변환되나요?
보고 엔드포인트 (.well-known/…
)가 주어진 집계 가능한 JSON 보고서를 AVRO
로 올바르게 변환하는지 확인합니다.
이 문제로 인해 발생하는 API 오류는 다음과 같습니다.
오류 | DECRYPTION_ERROR |
---|---|
예 |
"result_info": {
"return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
"return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
"error_summary": {
"error_counts": [
{
"category": "DECRYPTION_ERROR",
"count": 1,
"description": "Unable to decrypt the report. This may be caused by: tampered aggregatable report shared info, corrupt encrypted report, or other such issues."
},
{
"category": "NUM_REPORTS_WITH_ERRORS",
"count": 1,
"description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
}
],
"error_messages": []
}
}
|
확인 |
이는 복호화 오류로 인해 발생할 수 있으며, 이는 집계 가능한 AVRO 보고서인지 아니면 출력 도메인 AVRO인지에 관계없이 AVRO 보고서가 올바르게 생성되지 않아 발생할 수 있습니다. 집계 가능한 AVRO 보고서가 올바르게 생성되었나요? 페이로드는 base64로 디코딩되고 바이트 배열로 변환되어야 합니다. 보고서가 Avro 형식인지 확인합니다. 또한 출력 도메인 AVRO 이 올바른지 확인합니다. 버킷은 이스케이프된 유니코드 16진수 형식으로 변환된 후 바이트 배열로 변환됩니다.
오류 수가 2개 이상 표시되면 집계 서비스 GitHub 페이지에서 오류에 관해 자세히 알아볼 수 있습니다.
|
오류 | DECRYPTION_KEY_NOT_FOUND |
---|---|
예 |
"result_info": {
"return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
"return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
"error_summary": {
"error_counts": [{
"category": "DECRYPTION_KEY_NOT_FOUND",
"count": 1,
"description": "Could not find decryption key on private key endpoint."
}, {
"category": "NUM_REPORTS_WITH_ERRORS",
"count": 1,
"description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
}],
"error_messages": []
}
}
|
확인 |
Attribution Reporting API
Attribution Reporting API의 경우 트리거 등록 문제로 인해 이 오류가 발생할 수 있습니다. aggregation_coordinator_origin 필드를 사용하여 올바른 클라우드에 트리거를 등록했는지 확인합니다 (여기의 안내 참고). 집계 서비스의 Google Cloud 배포에 AWS 암호화 보고서를 제공하거나 AWS 배포에 Google Cloud 암호화 보고서를 제공할 수도 있습니다. 집계 가능한 보고서를 암호화하는 데 사용된 공개 키 엔드포인트를 확인해 달라고 요청합니다. Google Cloud의 경우 집계 가능한 보고서의 `aggregation_coordinator_origin` 필드는 https://publickeyservice.msmt.gcp.privacysandboxservices.com이어야 합니다. AWS의 경우 https://publickeyservice.msmt.aws.privacysandboxservices.com입니다. Private Aggregation APIPrivate Aggregation API의 경우 Private Aggregation API 설명의 집계 조정자 선택 섹션에 있는 예시를 사용하여 `aggregationCoordinatorOrigin` 을 정의해야 합니다. https://publickeyservice.msmt.gcp.privacysandboxservices.com을 예를 들면 다음과 같습니다. sharedStorage.run('someOperation', {'privateAggregationConfig':
{'aggregationCoordinatorOrigin': ' https://publickeyservice.msmt.gcp.privacysandboxservices.com'}});
|
오류 | DECRYPTION_KEY_FETCH_ERROR |
---|---|
예 |
"result_info": {
"return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
"return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
"error_summary": {
"error_counts": [
{
"category": "DECRYPTION_KEY_FETCH_ERROR",
"count": 1,
"description": "Fetching the decryption key for report decryption failed. This can happen using an unapproved aggregation service binary, running the aggregation service binary in debug mode, key corruption or service availability issues."
},
{
"category": "NUM_REPORTS_WITH_ERRORS",
"count": 1,
"description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
}
]
}
}
|
확인 | 승인되지 않은 바이너리 또는 디버그 모드 문제가 있는 경우 올바른 바이너리를 사용하면 문제가 해결됩니다. 여기의 안내에 따라 사전 빌드된 AMI를 사용하거나 AMI를 직접 빌드하세요. |
다음 단계를 완료하여 다음 사항을 확인하세요.
aggregatable_report_converter
도구를 사용하여 .well-known 엔드포인트에서 수집한 집계 가능한 보고서를 AVRO로 변환하고 출력 도메인 키를 만들 수 있습니다. 참고: 출력 도메인 파일은 16바이트 비그 엔디언 바이트 문자열이어야 합니다.공개 클라우드 제공업체의 Codelab 단계에 따라 디버그 보고서를 수집하고 출력 도메인 키를 사용하여 집계 서비스 작업을 실행합니다. a. Google Cloud: 집계 서비스 Google Cloud Codelab의 3.1.2~3.2.3 단계를 따릅니다. b. Amazon Web Services: 집계 서비스 AWS Codelab의 4.2~5.3단계를 따르세요.
SUCCESS
응답이 반환되면 전환이 작동하는 것입니다.
집계 가능한 보고서가 손상되지 않았나요?
집계 보고서, 출력 도메인 키, 공유 정보가 손상되지 않았는지 확인합니다. 자세한 내용은 샘플 코드를 참고하여 집계 가능한 보고서를 변환하고 도메인 파일을 만드세요.
이 문제와 관련하여 표시될 수 있는 API 오류는 다음과 같습니다.
오류 | INPUT_DATA_READ_FAILED |
---|---|
엔드포인트 | createJob |
확인 |
createJob 요청의 input_data_bucket_name , input_data_blob_prefix , output_data_bucket_name , output_data_blob_prefix 필드가 올바른가요? 입력 보고서 데이터 위치에 처리할 보고서가 있나요? 보고서 및 출력 도메인의 저장소 위치에서 읽을 권한이 있나요?
|
다음 단계를 완료하여 다음 사항을 확인하세요.
집계 보고서를 확인합니다.
- 집계 보고서를 생성하고
aggregatable_report_converter
도구를 사용하여 출력 도메인을AVRO
형식으로 변환합니다. - 집계 가능한 보고서와 도메인 파일을 사용하여
createJob
요청을 실행합니다. SUCCESS
가 반환되면 집계 가능한 보고서가 손상되지 않은 것입니다. 이 경우 집계 가능한 보고서 또는 보고서와 도메인 모두에 문제가 있는 것입니다.- 다음 단계에서 도메인 파일을 확인합니다.
- 집계 보고서를 생성하고
출력 도메인 파일을 확인합니다.
- 출력 도메인 파일을 생성하고
aggregatable_report_converter
도구를 사용하여 집계 가능한 보고서를 만듭니다. - 집계 가능한 보고서와 도메인 파일을 사용하여
createJob
요청을 실행합니다. SUCCESS
이 반환되면 출력 도메인이 손상되지 않았으며 집계 가능한 보고서를 만드는 코드에 문제가 있는 것입니다.- 다음 단계로 이동하여
shared_info
을(를) 확인합니다.
- 출력 도메인 파일을 생성하고
공유된 정보를 확인합니다.
- 디버그가 사용 설정된 보고서가 있는지 확인합니다. 디버그가 사용 설정된 보고서에는
debug_cleartext_payload
필드가 제공됩니다. - 로컬 테스트 도구와 함께 사용할 디버그 보고서를 만들고
debug_cleartext_payload
를 페이로드로 사용합니다. - 도메인 파일로 로컬 테스트 도구를 실행합니다.
SUCCESS
인 경우shared_info
파일이 조작된 것입니다.
- 디버그가 사용 설정된 보고서가 있는지 확인합니다. 디버그가 사용 설정된 보고서에는
추가 오류나 조작이 의심되는 경우 JSON 집계 보고서, 도메인 키, 생성된 집계된 AVRO
보고서, 출력 도메인을 수집하고 다음 단계로 진행합니다.
새 배포 버전 검사
사용 중인 집계 서비스 버전이 아직 지원되는지 확인합니다. 사용 중인 버전을 확인한 후 집계 서비스 출시 목록을 확인하고 사용 중인 버전에 지원 종료 경고(This release has reached its end of support on { date }
)가 없는지 확인합니다. 다음 안내는 지원되는 퍼블릭 클라우드에서 배포한 버전을 확인하는 방법을 설명합니다.
Google Cloud 단계
- Compute Engine > VM 인스턴스로 이동합니다.
- 이름에
-worker-
가 포함된 가상 머신 인스턴스를 클릭합니다. Custom Metadata
섹션을 찾은 다음 키tee-image-reference
를 찾습니다.- 참고: Terraform으로 Google Cloud에 프로비저닝된 모든 VM에는 이 메타데이터 (작업자 모듈의
tee-image-reference
메타데이터)가 있어야 합니다.
- 참고: Terraform으로 Google Cloud에 프로비저닝된 모든 VM에는 이 메타데이터 (작업자 모듈의
tee-image-reference
값에는 버전 번호가 포함됩니다. 예를 들어 다음 경로의 버전 번호는v2.9.1
입니다. 사전 빌드된 이미지는 Google Cloud 프로젝트의 Artifact Registry에 있습니다.- 참고: 사전 빌드된 애셋을 사용하는 경우 이 속성이 관련이 있으며, 사전 빌드된 애셋을 사용하지 않는 경우 이미지에 직접 이름을 지정하고 태그를 지정한 내용과 일치해야 합니다.
(예:
us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1
)
- 참고: 사전 빌드된 애셋을 사용하는 경우 이 속성이 관련이 있으며, 사전 빌드된 애셋을 사용하지 않는 경우 이미지에 직접 이름을 지정하고 태그를 지정한 내용과 일치해야 합니다.
(예:
Amazon Web Services 단계
- Amazon Web Services 콘솔에서 EC2 인스턴스로 이동합니다.
- 이름이
aggregation-service-operator-dev-env
인 인스턴스를 클릭합니다. - 인스턴스 페이지에서 세부정보 > AMI (Amazon Machine Image)를 찾습니다.
- 버전 이름은 이미지 경로에 포함되어야 합니다. 예를 들어 다음 경로의 버전 번호는
v2.9.1
입니다.- 참고: 사전 빌드된 애셋을 사용하는 경우 이 속성이 관련이 있습니다. 사전 빌드된 애셋을 사용하지 않는 경우 이 속성은 이미지에 직접 이름을 지정하고 태그를 지정한 내용과 일치해야 합니다.
(예:
aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z
)
- 참고: 사전 빌드된 애셋을 사용하는 경우 이 속성이 관련이 있습니다. 사전 빌드된 애셋을 사용하지 않는 경우 이 속성은 이미지에 직접 이름을 지정하고 태그를 지정한 내용과 일치해야 합니다.
(예:
다음 단계
집계 서비스 문제의 해결 방법을 찾을 수 없는 경우 GitHub 문제를 제출하거나 기술 지원 양식을 제출하여 Google에 알려주세요.