Vários fatores podem criar problemas ao trabalhar com o serviço de agregação, incluindo formatação de relatórios, problemas de domínio de saída e problemas de coordenador. É importante entender a origem do erro e os metadados que ele contém para diagnosticar o problema com precisão.
Temas do guia:
- Verificar a configuração da API de medição de clientes
- Resolver problemas de configuração da origem de relatórios
- Resolver problemas nos relatórios agregados
- Inspecionar a versão da implantação
Verificar a configuração da API de medição do cliente
Depois de verificar se o servidor de origem foi registrado corretamente, siga estas etapas:
Confira como você está gerando relatórios. Confirme se você está recebendo o formato de relatório correto de acordo com a API usada:
- API Attribution Reporting
- Para a API Attribution Reporting, verifique se você registrou a origem (Event e Summary). Para realizar o registro do acionador (Event e Summary), verifique se o JSON transmitido para
Attribution-Reporting-Register-Trigger
está correto usando a ferramenta de validação de cabeçalho. (Leia mais sobre os relatórios de resumo da API Attribution Reporting.)
- Para a API Attribution Reporting, verifique se você registrou a origem (Event e Summary). Para realizar o registro do acionador (Event e Summary), verifique se o JSON transmitido para
- API Private Aggregation
- Os relatórios na API Private Aggregation podem ser concluídos usando a função
contributeToHistogram
. Verifique se você está transmitindo a chave e o valor do bucket. A chave do bucket precisa estar no formatoBigInt
. (Saiba mais sobre a API Private Aggregation.)
- Os relatórios na API Private Aggregation podem ser concluídos usando a função
- API Attribution Reporting
Se você estiver acionar relatórios conforme recomendado, mas ainda estiver com o problema, verifique se há erros observados no console do desenvolvedor do Chrome nas guias "Console" e "Rede".
Se você precisar de mais suporte para solução de problemas com essas APIs de cliente, consulte as orientações de depuração da API Attribution Reporting e API Private Aggregation + Shared Storage.
Resolver problemas de configuração da origem de relatórios
O servidor de origem de relatórios é onde você declarou os endpoints .well-known
corretos correspondentes para onde os relatórios agregáveis serão enviados. Verifique se o servidor de origem de relatórios implantado foi inscrito e registrado corretamente.
A origem de relatórios está recebendo relatórios?
Verifique se o servidor de origem de relatórios implantado foi inscrito e registrado corretamente. É nesse servidor que você declarou os endpoints .well-known
corretos correspondentes para onde os relatórios agregáveis serão enviados.
API Measurement do lado do cliente | Endpoint agregável correspondente |
---|---|
Relatórios de atribuição | POST /.well-known/attribution-reporting/report-aggregate-attribution |
Private Aggregation + Shared Storage (Combo) | POST /.well-known/private-aggregation/report-shared-storage |
Private Aggregation + Protected Audience (Combo) | POST /.well-known/private-aggregation/report-protected-audience |
Depois de verificar se o servidor de origem foi registrado corretamente, siga estas etapas:
Confira como você está gerando relatórios. Confirme se você está recebendo o formato de relatório correto de acordo com a API usada:
Se você estiver acionar relatórios conforme recomendado, mas ainda estiver com o problema, verifique se há erros nas guias "Console" e "Rede" do console do desenvolvedor do Chrome.
Se você precisar de mais suporte para resolver problemas com essas APIs de cliente , continue com as orientações de depuração para a API Attribution Reporting e a API Private Aggregation + Shared Storage.
Resolver problemas nos relatórios agregados
Os relatórios agregados são gerados pelas APIs de medição do lado do cliente e enviados para
a origem de relatórios. Esses relatórios precisam ser convertidos para o formato AVRO
pelo
endpoint de relatórios. Se houver problemas com essa conversão ou se os relatórios não estiverem intactos, você poderá encontrar erros no serviço de agregação.
Seus relatórios agregáveis estão convertendo corretamente?
Verifique se o endpoint de relatórios (.well-known/…
) está convertendo o relatório JSON agregável corretamente em AVRO
.
Os erros de API que seriam gerados devido a esse problema são os seguintes:
Erro | DECRYPTION_ERROR |
---|---|
Exemplo |
"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": []
}
}
|
Cheque |
Isso pode ocorrer devido a erros de descriptografia, que podem ser causados por relatórios AVRO não gerados corretamente, seja nos relatórios AVRO agregáveis ou no AVRO do domínio de saída. Os relatórios de AVRO agregáveis são gerados corretamente? O payload precisa ser decodificado em base64 e convertido em uma matriz de bytes. Verifique se o relatório está no formato Avro. Além disso, verifique se o domínio de saída AVRO está correto. Os buckets são convertidos para o formato hexadecimal unicode com escape e, em seguida, para uma matriz de bytes.
Se você encontrar mais de uma contagem de erros, saiba mais sobre eles na página do serviço de agregação no GitHub.
|
Erro | DECRYPTION_KEY_NOT_FOUND |
---|---|
Exemplo |
"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": []
}
}
|
Cheque |
API Attribution Reporting
Na API Attribution Reporting, esse erro pode ser causado por um problema com o registro do acionador. Verifique se o acionador foi registrado na nuvem correta usando o campo aggregation_coordinator_origin (instruções aqui). Você também pode fornecer relatórios criptografados pela AWS para a implantação do serviço de agregação do Google Cloud ou relatórios criptografados pelo Google Cloud para a implantação da AWS. Peça para eles validarem qual endpoint de chave pública foi usado para criptografar os relatórios agregáveis. No Google Cloud, o campo "aggregation_coordinator_origin" no relatório agregável precisa ser https://publickeyservice.msmt.gcp.privacysandboxservices.com. Na AWS, é https://publickeyservice.msmt.aws.privacysandboxservices.com. API Private AggregationPara a API Private Aggregation, você precisa definir o "aggregationCoordinatorOrigin" usando o exemplo na seção "Escolha do coordenador de agregação" no explicador da API Private Aggregation. Especifique https://publickeyservice.msmt.gcp.privacysandboxservices.com como o Exemplo:
sharedStorage.run('someOperation', {'privateAggregationConfig':
{'aggregationCoordinatorOrigin': ' https://publickeyservice.msmt.gcp.privacysandboxservices.com'}});
|
Erro | DECRYPTION_KEY_FETCH_ERROR |
---|---|
Exemplo |
"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."
}
]
}
}
|
Cheque | Em caso de problemas com binários não aprovados ou no modo de depuração, o uso do binário correto corrigirá o problema. Siga as instruções aqui para usar AMIs pré-criadas ou crie sua própria AMI. |
Siga estas etapas para verificar:
Você pode usar a ferramenta
aggregatable_report_converter
para converter os relatórios agregáveis coletados do endpoint .well-known para AVRO e criar as chaves de domínio de saída. Observação: os arquivos de domínio de saída precisam ser uma bytestring big-endian de 16 bytes.Siga as etapas no codelab para que seu provedor de nuvem pública colete os relatórios de depuração e execute um job de serviço de agregação usando as chaves de domínio de saída: Google Cloud: siga as etapas 3.1.2 a 3.2.3 do Aggregation Service Google Cloud Codelab. b. Amazon Web Services: siga as etapas 4.2 a 5.3 do Aggregation Service AWS Codelab.
Se isso retornar uma resposta SUCCESS
, a conversão está funcionando.
Seus relatórios agregáveis estão intactos?
Verifique se o relatório agregado, as chaves de domínio de saída e as informações compartilhadas estão intatos. Consulte os exemplos de códigos para converter relatórios agregáveis e criar arquivos de domínio, se quiser mais informações.
Os erros da API que podem aparecer e corresponder a esse problema são os seguintes:
Erro | INPUT_DATA_READ_FAILED |
---|---|
Endpoint | createJob |
Cheque |
Os campos input_data_bucket_name , input_data_blob_prefix , output_data_bucket_name e output_data_blob_prefix na solicitação createJob estão corretos? O local de dados de entrada do relatório tem os relatórios a serem processados? Você tem permissão para ler o local de armazenamento dos relatórios e do domínio de saída?
|
Siga estas etapas para verificar:
Verifique o relatório agregado:
- Gere relatórios agregados e use a ferramenta
aggregatable_report_converter
para converter o domínio de saída no formatoAVRO
. - Execute uma solicitação
createJob
com esse relatório agregável e o arquivo de domínio de saída. - Se ele retornar
SUCCESS
, significa que o relatório agregável está intacto. Se isso retornar um erro, você terá um problema com seu relatório agregável ou com o relatório e o domínio. - Verifique o arquivo de domínio na próxima etapa.
- Gere relatórios agregados e use a ferramenta
Verifique o arquivo de domínio de saída:
- Gere o arquivo de domínio de saída e use a ferramenta
aggregatable_report_converter
para criar o relatório agregável. - Execute uma solicitação
createJob
com esse relatório agregável e o arquivo de domínio de saída. - Se ele retornar
SUCCESS
, significa que o domínio de saída está intacto e há um problema com o código para criar o relatório agregável. - Continue para a próxima etapa para verificar o
shared_info
.
- Gere o arquivo de domínio de saída e use a ferramenta
Verifique as informações compartilhadas:
- Verifique se você tem relatórios de depuração ativados. Os relatórios com depuração ativada terão um campo
debug_cleartext_payload
disponível. - Crie um relatório de depuração para uso com a ferramenta de teste local e use
debug_cleartext_payload
como o payload. - Execute a ferramenta de teste local com seu arquivo de domínio. Se for um
SUCCESS
, significa que o arquivoshared_info
foi adulterado.
- Verifique se você tem relatórios de depuração ativados. Os relatórios com depuração ativada terão um campo
Se você suspeitar de outros erros ou adulterações, colete o relatório de agregação
JSON, a chave de domínio, o relatório AVRO
agregado gerado e o domínio de saída e
continue para as próximas etapas.
Inspecionar a nova versão da implantação
Verifique se a versão do serviço de agregação ainda tem suporte. Depois
de determinar qual versão você está usando, confira a lista de versões do
AggregationService
e confirme se a sua versão não tem o aviso de fim de suporte:
This release has reached its end of support on { date }
. As instruções a seguir para determinar qual versão você implantou são para as
nuvens públicas com suporte.
Etapas para o Google Cloud
- Navegue até Compute Engine > Instâncias de VM.
- Clique na instância de máquina virtual com
-worker-
no nome. - Encontre a seção
Custom Metadata
e localize a chavetee-image-reference
.- Observação: todas as VMs provisionadas no Google Cloud pelo Terraform precisam ter esses metadados (metadados
tee-image-reference
no módulo worker).
- Observação: todas as VMs provisionadas no Google Cloud pelo Terraform precisam ter esses metadados (metadados
- O valor de
tee-image-reference
vai conter o número da versão. Por exemplo, o número da versão do caminho a seguir év2.9.1
. Essas são imagens pré-criadas que ficam no Artifact Registry de um projeto do Google Cloud.- Observação: isso é relevante se você estiver usando os recursos pré-criados. Caso
não, o nome e a tag da imagem precisam ser os mesmos que você
escolheu.
Exemplo:
us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1
.
- Observação: isso é relevante se você estiver usando os recursos pré-criados. Caso
não, o nome e a tag da imagem precisam ser os mesmos que você
escolheu.
Exemplo:
Etapas para o Amazon Web Services
- Acesse Instâncias do EC2 no console da Amazon Web Services.
- Clique na instância com o nome
aggregation-service-operator-dev-env
. - Na página da instância, encontre "Detalhes" > AMI (imagem de máquina da Amazon).
- O nome da versão precisa estar incluído no caminho da imagem. Por exemplo, o
número da versão do caminho a seguir é
v2.9.1
.- Observação: isso é relevante se você estiver usando os recursos pré-criados. Caso
não, o nome e a tag da imagem precisam ser os mesmos que você
escolheu.
Exemplo:
aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z
.
- Observação: isso é relevante se você estiver usando os recursos pré-criados. Caso
não, o nome e a tag da imagem precisam ser os mesmos que você
escolheu.
Exemplo:
Próximas etapas
Se você não encontrar uma solução para o problema do serviço de agregação, notifique-nos enviando um problema do GitHub ou preenchendo o formulário de suporte técnico.