診斷匯總工作

下表詳細列出各種問題和錯誤狀態代碼,並說明可能的原因和可採取的行動,以減輕部署作業的負擔。如要查看匯總服務的完整錯誤規格和緩解措施,請參閱目前的公開指南。

指南主題:

權限和授權錯誤

問題 執行 terraform planterraform apply 時,公有雲專案的權限問題。
錯誤示例 Error: UnauthorizedOperation: You are not authorized to perform this operation.
解析度

請確認您已在所使用的公用雲端服務中,正確驗證 CLI (指令列介面)。

Amazon Web Services

AWS 需要使用者權限,才能建立匯集服務所需的執行個體和其他服務。套用後,您應該就能順利執行 Terraform 規劃和套用作業。

Google Cloud Platform

請注意,在 Google Cloud 中,您必須假冒服務帳戶才能部署 Terraform 的後半部。如果您略過這個步驟,您的 terraform apply 指令可能會失敗,因為部署服務帳戶已具備建立資源所需的所有權限。請參閱 GitHub 說明文件中的「設定部署環境」步驟 4

隱私權預算錯誤

錯誤 PRIVACY_BUDGET_ERROR
原因 這表示隱私權預算服務發生錯誤,導致服務無法處理報表。
檢查 重試工作後,如果發現錯誤是間歇性發生,請透過技術支援表單與我們聯絡。
錯誤 PRIVACY_BUDGET_AUTHORIZATION_ERROR
原因 您可能使用與新手上路期間提供的報表來源不同的報表來源。
檢查

請確認您在 createJob 要求的 attribution_report_to 欄位中提交的網站,與導入期間提交的網站相同。

網站必須與已加入的網站相符,或為後者的子網域。請注意,匯總服務的啟用程序會在頂層網域中處理,且一旦頂層網域啟用,所有子網域都符合匯總服務的使用資格。

錯誤 PRIVACY_BUDGET_AUTHENTICATION_ERROR
原因 您可能使用了過時或錯誤的 ARN。
檢查 Google Cloud Platform

請確認在匯整服務部署作業中使用的服務帳戶,是否與導入期間提供的服務帳戶相符。必須完全相符,而非僅屬於同一個專案。

Amazon Web Services

我們預期你會使用我們透過電子郵件提供的協調員。如果問題仍未解決,請收集 auto.tfvars 檔案和報表來源資訊,然後透過技術支援表單與我們聯絡。

錯誤 PRIVACY_BUDGET_EXHAUSTED
原因 錯誤:
            "result_info": {
              "return_code": "PRIVACY_BUDGET_EXHAUSTED",
              "return_message": "com.google.aggregate.adtech.worker.exceptions.AggregationJobProcessException:
              Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear
              in more than one aggregation job. Information related to reports that do not have budget can be
              found in the following file:
              File path: //
              Filename: privacy budget exhausted debugging information  \n
              com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.consumePrivacyBudgetUnits(ConcurrentAggregationProcessor.java:525) \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.process(ConcurrentAggregationProcessor.java:319) \n com.google.aggregate.adtech.worker.WorkerPullWorkService.run(WorkerPullWorkService.java:157)",
              "error_summary": {
                  "error_counts": [],
                  "error_messages": []
              },
              "finished_at": 
            }
          

如果您嘗試匯出共用 ID 已包含在先前成功匯出的工作群組的報表,就會發生隱私預算用盡的問題。這項錯誤是因為「不重複」規則:匯總報表只能出現在單一批次中,且只能納入一份摘要報表。

系統會為每份報表指派一個「共用 ID」,其中包含 shared_info 欄位 API、reporting_origindestination_sitesource_registration_time (按天截斷)、scheduled_report_time (按小時截斷) 和 version。也就是說,如果多份報表的 shared_info 欄位屬性相同,就能屬於同一個「共用 ID」。

檢查

建議您嘗試使用工作回應提供的隱私權預算用盡支援功能,檢查並解決錯誤。這會提供新的輔助 JSON 檔案,讓您瞭解哪些報表導致錯誤。

請注意,如果您正確執行批次作業,可能符合預算回復資格 (說明)。建議他們閱讀說明並填寫表單,但請注意,他們的申請必須獲得核准,才能順利取回預算並再次執行工作。

錯誤 DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_EXHAUSTED
原因 這表示您正在偵錯模式下執行工作。createJob 要求中的 job_parameters 包含 debug_run: true。啟用 debug_run 標記後,您可以多次執行報表來進行偵錯。這則錯誤訊息會通知您,如果沒有在偵錯模式下執行報表,工作就會因報表的隱私權預算用盡而失敗。這項錯誤只會在 v2.10.0 以下版本中出現。
檢查 createJob 要求主體會在 job_parameters 中包含 debug_run
            {
              "job_request_id": "{job_request_id}",
              "input_data_blob_prefix": "{input_prefix}",
              "input_data_bucket_name": "{input_bucket}",
              "output_data_blob_prefix": "{output_prefix}",
              "output_data_bucket_name": "{output_bucket}",
              "job_parameters": {
                "output_domain_blob_prefix": "{output_domain_prefix}",
                "output_domain_bucket_name": "{output_domain_bucket}",
                "attribution_report_to": "{reporting_origin}",
                "debug_run": "true"
              }
            }
          

工作執行階段錯誤

錯誤 INVALID_JOB
端點 createJob
原因 當提供的調試隱私權 epsilon 不在 [0.64] 範圍內,或工作參數驗證失敗時,就可能發生這種情況。
檢查 使用了哪個 epsilon 值?createJob 要求中使用了哪些工作參數,且是否與您的環境相符?格式是否正確?進行必要的修正,然後重試工作。
錯誤 INTERNAL_ERROR
端點 getJob
原因 可能是格式設定問題,導致輸出網域或報表的處理作業失敗。匯總服務部署作業也可能有問題。
檢查 確認輸出網域位置是否為有效路徑。重試工作。如果錯誤持續發生,請提供 auto.tfvars 檔案和 Terraform 計畫輸出內容,以便排除匯總服務部署問題。
錯誤 RESULT_WRITE_ERROR
端點 getJob
原因 當寫入輸出目錄失敗 (可能是暫時性問題,或是因為沒有目錄寫入權限) 時,就可能發生這種情況。請注意,寫入錯誤會消耗隱私預算,且無法重試工作。這可能會導致 PRIVACY_BUDGET_EXHAUSTED 錯誤的其他錯誤結果。
檢查 這個錯誤是否會發生在每個工作中,還是只會間歇發生?如果每個工作都發生這種情況,請確認您已為輸出目錄啟用寫入權限。如果是間歇性失敗,權限應為正確的權限。寫入摘要報表可能會失敗,但隱私權預算仍會耗用,這是已知問題。在這種情況下,您可以申請預算復原 (說明)。
問題 執行工作並擷取認證服務權杖時遇到 403 錯誤,且工作一律會傳回「已收到」狀態。
錯誤
            {
                "job_status": "RECEIVED",
                "request_received_at": "{utc timestamp}",
                "request_updated_at": "{utc timestamp}",
                "job_request_id": "0001",
                "input_data_blob_prefix": "reports/",
                "input_data_bucket_name": "{bucket_name}",
                "output_data_blob_prefix": "summary/",
                "output_data_bucket_name": "{bucket_name}",
                "postback_url": "",
                "job_parameters": {
                    "output_domain_bucket_name": "{bucket_name}",
                    "output_domain_blob_prefix": "output_domain/",
                    "attribution_report_to": 
                }
            }
          
解析度

工作會卡在 RECEIVED 狀態,且服務帳戶尚未完成註冊時,通常會發生 403 錯誤。請確認您使用的服務帳戶與在新手上路要求中提供的帳戶相符。如果您尚未完成新手上路申請,請填寫新手上路表單和註冊表單。

確認註冊和新手上路狀態後,請查看執行中的工作發生了什麼問題。

Amazon Web Services

發生這種情況時,AWS 特區可能未執行或已停止運作,因此無法接收工作。

  1. 連線至 EC2 執行個體的 Session Manager。
  2. 請按照這份 AWS 說明文件操作,其中包含連線至 Session Manager 的步驟。
  3. 依序前往 AWS 控制台管理工具 > EC2 > 執行個體。
  4. 選取執行中的匯總服務的執行個體 ID。
  5. 依序選取「Session Manager」分頁標籤 >「Connect」按鈕。這樣就能連線至執行個體。
  6. Enclave 執行個體執行後,請在終端機中執行以下指令:
    sudo nitro-cli describe-enclaves
    如果這項指令未如預期顯示記錄,請執行下列指令再試一次:
    sudo nitro-cli run-enclave --cpu-count=2 --memory=7000 --eif-path=/opt/google/worker/enclave.eif
  7. 如要檢查 AWS 特區是否已停止運作,請執行以下指令: sudo journalctl -u aggregate-worker.service
  8. 您應該會看到輸出記錄檔案,例如:
    Starting aggregate-worker.service - Watcher script for nitro enclave.
    如果發生任何失敗等問題,這裡應該會顯示錯誤。
Google Cloud Platform

代管執行個體群組 (MIG) 可能無法正常運作。如果這是首次設定,或是您已刪除並重新建立 adtech_setup Terraform,請確認服務帳戶已完成新手上路程序。如果未導入服務帳戶,MIG 就不會處於正常狀態。

  1. 前往 Cloud 控制台,依序前往「Compute Engine」>「Instance groups」(執行個體群組)
  2. 查看狀態欄 (綠色勾號代表正常)
  3. 按一下其中一個執行個體群組,然後查看「錯誤」分頁,進一步瞭解問題。按一下執行個體名稱,存取 VM 層級資訊。
  4. 您也可以使用終端機與執行個體群組互動,並取得相同的資訊。 請試試 list-errors 指令:
    gcloud compute instance-groups managed list-errors --region=
    以下是輸出結果範例。
                      INSTANCE_URL: https://www.googleapis.com/compute/v1/projects/aggservice-sandbox/zones/us-central1-c/instances/collector-operator-demo-env-67hd
                      ACTION: VERIFYING
                      ERROR_CODE: WAITING_FOR_HEALTHY_TIMEOUT_EXCEEDED
                      ERROR_MESSAGE: Waiting for HEALTHY state timed out (autohealingPolicy.initialDelay=200 sec) for instance projects/aggservice-sandbox/zones/us-central1-c/instances/collector-operator-demo-env-67hd and health check projects/aggservice-sandbox/global/healthChecks/operator-demo-env-collector-auto-heal-hc.
                      TIMESTAMP: 
                      INSTANCE_TEMPLATE: https://www.googleapis.com/compute/v1/projects/aggservice-sandbox/global/instanceTemplates/operator-demo-env-collector
                      VERSION_NAME: primary
                    
如果問題仍未解決,請儲存這份資訊並提供給我們的團隊。繼續進行後續步驟。

摘要報表的轉換是否符合預期?

在某些情況下,getJob 呼叫可能會成功,但匯總服務傳回的摘要報表可能會發生問題。摘要報表採用 AVRO 格式,因此需要轉換為 JSON 格式。轉換為 JSON 格式後,內容會類似於以下內容。

{
  "bucket": "\u0005Y",
  "metric": 26308
}

如果 AVRO 轉換有任何問題,請嘗試使用 AVRO 工具,並在 AVRO 報表上使用下列指令。java -jar avro-tools-1.11.1.jar tojson [report_name].avro > [report_name].json 您可以從這裡下載穩定版。如需進一步協助,請繼續執行下一個步驟。

後續步驟

前往 Privacy Sandbox 狀態資訊主頁公開的 GitHub 存放區,查看是否有人遇到相同問題。

如果您無法解決匯總服務問題,請提交 GitHub 問題技術支援表單,通知我們。