集計ジョブを診断する

次の表に、さまざまな問題とエラー ステータス コード、考えられる原因、デプロイを軽減するために実行できるアクションの詳細を示します。集計サービスのエラー仕様と軽減策の詳細については、現在の公開ガイダンスをご覧ください。

ガイドのトピック:

権限と認証のエラー

問題 パブリック クラウド プロジェクトに対して terraform plan または terraform apply を実行しているときに権限の問題が発生する。
エラーの例 Error: UnauthorizedOperation: You are not authorized to perform this operation.
解決策

利用しているパブリック クラウドの CLI(コマンドライン インターフェース)に正しく認証されていることを確認します。

Amazon Web Services

AWS では、アグリゲーション サービスに必要なインスタンスやその他のサービスを作成するために、ユーザー権限が必要です。これを適用すると、問題なく terraform plan と apply を実行できるようになります。

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 または間違った 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 が以前に成功したバッチにすでに含まれているレポートをバッチ処理しようとしたときに発生します。このエラーは、集計可能なレポートが 1 つのバッチにのみ表示され、1 つのサマリー レポートにのみ貢献できるという「重複なし」ルールが原因で発生します。

各レポートには「共有 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_parametersdebug_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
原因 これは、指定されたデバッグ プライバシー エプシロンが範囲(0.64])内にない場合や、ジョブ パラメータの検証に失敗した場合に発生する可能性があります。
小切手 使用されたイプシロン値は何ですか?createJob リクエストで使用されたジョブ パラメータは、環境と一致していますか?正しくフォーマットされていますか?必要な修正を行い、ジョブを再試行します。
エラー INTERNAL_ERROR
エンドポイント getJob
原因 出力ドメインまたはレポートの処理が失敗する原因となる書式設定の問題である可能性があります。Aggregation Service のデプロイに問題がある可能性もあります。
小切手 出力ドメインの場所が有効なパスであることを確認します。ジョブを再試行します。エラーが解決しない場合は、auto.tfvars ファイルと Terraform プランの出力をリクエストして、Aggregation Service のデプロイのトラブルシューティングを行います。
エラー RESULT_WRITE_ERROR
エンドポイント getJob
原因 これは、出力ディレクトリへの書き込みが一時的に失敗した場合や、ディレクトリに対する書き込み権限がない場合に発生することがあります。書き込みエラーはプライバシー バジェットを消費し、ジョブを再試行できないことに注意してください。これは、PRIVACY_BUDGET_EXHAUSTED エラーの別のエラー結果の原因となる可能性があります。
小切手 このエラーはすべてのジョブで発生しますか、それとも断続的に発生しますか?すべてのジョブでこの問題が発生している場合は、出力ディレクトリに対する書き込み権限が有効になっていることを確認します。断続的な障害の場合は、権限は正しいはずです。概要レポートの書き込みが失敗してもプライバシー バジェットが消費されるという既知の問題があります。この場合、予算の回復をリクエストできます(説明)。
問題 ジョブの実行中に 403 エラーが発生し、構成証明サービス トークンを取得すると、ジョブは常にステータス「RECEIVED」を返します。
エラー
            {
                "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. [セッション マネージャー] タブ > [接続] ボタンを選択します。これでインスタンスに接続されます。
  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] > [インスタンス グループ] に移動します。
  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
                    
問題が解決しない場合は、この情報を保存して Google チームにお知らせください。次の手順に進みます。

サマリー レポートは期待どおりに変換されていますか?

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 安定版は、こちらからダウンロードできます。さらにサポートが必要な場合は、次のステップに進んでください。

次のステップ

プライバシー サンドボックス ステータス ダッシュボードまたは公開 GitHub リポジトリで、同じ問題が発生しているユーザーがいないかどうかを確認します。

集計サービスの問題の解決策が見つからない場合は、GitHub の問題を報告するか、技術サポート フォームを送信して、Google にお知らせください。