Trabalhar com o serviço de agregação no Google Cloud Platform (GCP)

1. 1. Pré-requisitos

Tempo estimado para a conclusão: 1 a 2 horas

Há dois modos para realizar este codelab: teste local ou serviço de agregação. O modo de teste local exige uma máquina local e o navegador Chrome (sem criação/uso de recursos do Google Cloud). O modo do serviço de agregação exige uma implantação completa do serviço no Google Cloud.

Para fazer este codelab em qualquer um dos modos, alguns pré-requisitos são necessários. Cada requisito é marcado de acordo com a necessidade para o teste local ou o serviço de agregação.

1.1. Concluir o registro e a declaração (serviço de agregação)

Para usar as APIs do Sandbox de privacidade, verifique se você concluiu a inscrição e a atestação no Chrome e no Android.

1.2. Ativar as APIs de privacidade de anúncios (teste local e serviço de agregação)

Como vamos usar o Sandbox de privacidade, recomendamos que você ative as APIs Ads do Sandbox de privacidade.

No navegador, acesse chrome://settings/adPrivacy e ative todas as APIs de privacidade de anúncios.

Verifique também se os cookies de terceiros estão ativados.

Em chrome://settings/cookies, verifique se os cookies de terceiros NÃO estão sendo bloqueados. Dependendo da sua versão do Chrome, você pode encontrar opções diferentes nesse menu de configurações, mas as configurações aceitáveis incluem:

  • "Bloquear todos os cookies de terceiros" = DESATIVADO
  • "Bloquear cookies de terceiros" = DESATIVADO
  • "Bloquear cookies de terceiros no modo de navegação anônima" = ATIVADO

Ativar cookies Ativar cookies

1.3. Baixar a ferramenta de teste local (teste local)

Para fazer testes locais, é necessário baixar a ferramenta de teste local. A ferramenta vai gerar relatórios resumidos com base nos relatórios de depuração não criptografados.

A ferramenta de teste local está disponível para download nos arquivos JAR do Cloud Functions no GitHub. Ele precisa ser nomeado como LocalTestingTool_{version}.jar.

1.4. Verificar se o JRE do Java está instalado (teste local e serviço de agregação)

Abra o Terminal e use java --version para verificar se a máquina tem o Java ou o openJDK instalado.

Verifique a versão do Java. Verifique a versão do Java.

Se ele não estiver instalado, faça o download e instale no site do Java ou no site do openJDK.

1.5. Faça o download de aggregatable_report_converter (teste local e serviço de agregação)

Faça o download de uma cópia do aggregatable_report_converter no repositório do GitHub de demonstrações do Sandbox de privacidade. O repositório do GitHub menciona o uso do IntelliJ ou do Eclipse, mas nenhum deles é obrigatório. Se você não usa essas ferramentas, faça o download do arquivo JAR no seu ambiente local.

1.6. Configurar um ambiente do Cloud Platform (serviço de agregação)

O serviço de agregação exige o uso de um ambiente de execução confiável que usa um provedor de nuvem. Neste codelab, o serviço de agregação será implantado no Google Cloud, mas a AWS também é compatível.

Siga as instruções de implantação no GitHub para configurar a CLI gcloud, fazer o download de binários e módulos do Terraform e criar recursos do Google Cloud para o serviço de agregação.

Principais etapas nas instruções de implantação:

  1. Configure a CLI "gcloud" e o Terraform no seu ambiente.
  2. Crie um bucket do Cloud Storage para armazenar o estado do Terraform.
  3. Baixe as dependências.
  4. Atualize adtech_setup.auto.tfvars e execute o Terraform adtech_setup. Consulte o apêndice para ver um exemplo de arquivo adtech_setup.auto.tfvars. Anote o nome do bucket de dados criado aqui. Ele será usado no codelab para armazenar os arquivos que criarmos.
  5. Atualize dev.auto.tfvars, represente a conta de serviço de implantação e execute o dev do Terraform. Consulte o apêndice para ver um exemplo de arquivo dev.auto.tfvars.
  6. Quando a implantação for concluída, capture o frontend_service_cloudfunction_url da saída do Terraform, que será necessário para fazer solicitações ao serviço de agregação nas etapas posteriores.

1.7. Concluir a integração do serviço de agregação (serviço de agregação)

O serviço de agregação exige integração com coordenadores para ser usado. Preencha o formulário de integração do serviço de agregação com seu site de geração de relatórios e outras informações, selecione "Google Cloud" e insira o endereço da sua conta de serviço. Essa conta de serviço é criada no pré-requisito anterior (1.6. Configurar um ambiente do Google Cloud). Dica: se você usar os nomes padrão fornecidos, essa conta de serviço vai começar com "worker-sa@".

Aguarde até duas semanas para que o processo de integração seja concluído.

1.8. Determine o método para chamar os endpoints da API (serviço de agregação)

Este codelab oferece duas opções para chamar os endpoints da API Aggregation Service: cURL e Postman. O cURL é a maneira mais rápida e fácil de chamar os endpoints da API no seu terminal, já que exige configuração mínima e nenhum software adicional. No entanto, se você não quiser usar o cURL, use o Postman para executar e salvar solicitações de API para uso futuro.

Na seção 3.2. Uso do serviço de agregação. Lá, você encontra instruções detalhadas sobre como usar as duas opções. Você pode conferir uma prévia agora para determinar qual método vai usar. Se você selecionar o Postman, faça a seguinte configuração inicial.

1.8.1. Configurar espaço de trabalho

Crie uma conta do Postman. Depois de se inscrever, um espaço de trabalho será criado automaticamente para você.

Um espaço de trabalho do Postman. Um espaço de trabalho do Postman.

Se um espaço de trabalho não for criado para você, acesse o item de navegação superior "Espaços de trabalho" e selecione "Criar espaço de trabalho".

Selecione "Espaço de trabalho em branco", clique em "Próximo" e nomeie como "Sandbox de privacidade do GCP". Selecione "Pessoal" e clique em "Criar".

Faça o download do arquivo de configuração JSON e dos arquivos de ambiente global do espaço de trabalho pré-configurado.

Importe os dois arquivos JSON para "Meu espaço de trabalho" usando o botão "Importar".

O botão "Importar". O botão "Importar".

Isso vai criar a coleção "Sandbox de privacidade do GCP" para você, além das solicitações HTTP createJob e getJob.

1.8.2. Configurar a autorização

Clique na coleção "GCP Privacy Sandbox" e navegue até a guia "Autorização".

Botão de autorização. Botão de autorização.

Você vai usar o método "Bearer Token". No ambiente do terminal, execute este comando e copie a saída.

gcloud auth print-identity-token

Em seguida, cole esse valor no campo "Token" da guia de autorização do Postman:

O O campo "Token".

1.8.3. Configurar o ambiente

Acesse "Visão geral rápida do ambiente" no canto superior direito:

o botão de visualização rápida do ambiente. O botão de visualização rápida do ambiente.

Clique em "Editar" e atualize o "Valor atual" de "environment", "region" e "cloud-function-id":

Defina os valores atuais. Defina os valores atuais.

Por enquanto, deixe "request-id" em branco. Vamos preencher esse campo mais tarde. Para os outros campos, use os valores de frontend_service_cloudfunction_url, que foi retornado da conclusão bem-sucedida da implantação do Terraform no pré-requisito 1.6. O URL segue este formato: https://--frontend-service--uc.a.run.app

2. 2. Codelab de testes locais

Tempo estimado para a conclusão: menos de 1 hora

Você pode usar a ferramenta de teste local na sua máquina para fazer a agregação e gerar relatórios resumidos usando os relatórios de depuração não criptografados. Antes de começar, verifique se você concluiu todos os pré-requisitos marcados com "Teste local".

Etapas do codelab

Etapa 2.1. Acionar relatório: acione a geração de relatórios da API Private Aggregation para coletar o relatório.

Etapa 2.2. Criar relatório AVRO de depuração: converta o relatório JSON coletado em um relatório formatado em AVRO. Essa etapa é semelhante a quando as adtechs coletam os relatórios dos endpoints de relatórios da API e convertem os relatórios JSON para o formato AVRO.

Etapa 2.3. Recupere as chaves de agrupamento: elas são projetadas por adtechs. Neste codelab, como os buckets são predefinidos, recupere as chaves conforme fornecidas.

Etapa 2.4. Criar AVRO de domínio de saída: depois que as chaves de agrupamento forem recuperadas, crie o arquivo AVRO de domínio de saída.

Etapa 2.5. Criar relatório de resumo: use a Ferramenta de teste local para criar relatórios de resumo no ambiente local.

Etapa 2.6. Analise os relatórios de resumo: analise o relatório de resumo criado pela ferramenta de teste local.

2.1. Relatório de acionador

Para acionar um relatório de agregação particular, use o site de demonstração do Sandbox de privacidade (https://privacy-sandbox-demos-news.dev/?env=gcp) ou seu próprio site (por exemplo, https://adtechexample.com). Se você estiver usando seu próprio site e não tiver concluído a inscrição e a atestação e a integração do serviço de agregação, use uma flag do Chrome e uma opção de linha de comando.

Para esta demonstração, vamos usar o site de demonstração do Sandbox de privacidade. Siga o link para acessar o site e ver os relatórios em chrome://private-aggregation-internals:

Página "Internos do Chrome". Página "Internos do Chrome".

O relatório enviado ao endpoint {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage também pode ser encontrado no "Corpo do relatório" dos relatórios exibidos na página "Internos do Chrome".

Muitos relatórios podem aparecer aqui, mas para este codelab, use o relatório agregável específico do Google Cloud e gerado pelo endpoint de depuração. O "URL do relatório" vai conter "/debug/", e o aggregation_coordinator_origin field do "Corpo do relatório" vai conter este URL: https://publickeyservice.msmt.gcp.privacysandboxservices.com.

Relatório de depuração do Google Cloud. Relatório de depuração do Google Cloud.

2.2. Criar relatório agregável de depuração

Copie o relatório encontrado no "Corpo do relatório" de chrome://private-aggregation-internals e crie um arquivo JSON na pasta privacy-sandbox-demos/tools/aggregatable_report_converter/out/artifacts/aggregatable_report_converter_jar (no repositório baixado no pré-requisito 1.5).

Neste exemplo, estamos usando o vim porque estamos usando o Linux. Mas você pode usar qualquer editor de texto.

vim report.json

Cole o relatório em report.json e salve o arquivo.

O código JSON do relatório. O código JSON do relatório.

Depois disso, use aggregatable_report_converter.jar para ajudar a criar o relatório agregável de depuração. Isso cria um relatório agregável chamado report.avro no diretório atual.

java -jar aggregatable_report_converter.jar \
  --request_type convertToAvro \
  --input_file report.json \
  --debug

2.3. Recuperar a chave de bucket do relatório

Para criar o arquivo output_domain.avro, você precisa das chaves do bucket que podem ser recuperadas dos relatórios.

As chaves de agrupamento são projetadas pela adtech. No entanto, nesse caso, o site Demonstração do Sandbox de privacidade cria as chaves de agrupamento. Como a agregação privada para este site está no modo de depuração, podemos usar o debug_cleartext_payload do "Corpo do relatório" para receber a chave do bucket.

Copie o debug_cleartext_payload do corpo do relatório.

Depurar payload de texto não criptografado. Depurar payload de texto não criptografado.

Abra goo.gle/ags-payload-decoder, cole seu debug_cleartext_payload na caixa "INPUT" e clique em "Decode".

O botão de decodificação. O botão "Decodificar".

A página retorna o valor decimal da chave do bucket. Confira a seguir um exemplo de chave de bucket.

Uma chave de bucket de exemplo. Uma chave de bucket de amostra.

2.4. Criar AVRO de domínio de saída

Agora que temos a chave do bucket, vamos criar o output_domain.avro na mesma pasta em que estamos trabalhando. Verifique se você substituiu a chave do bucket pela chave recuperada.

java -jar aggregatable_report_converter.jar \
  --request_type createDomainAvro \
  --bucket_key <bucket key>

O script cria o arquivo output_domain.avro na pasta atual.

2.5. Criar relatórios de resumo usando a Ferramenta de teste local

Vamos usar o LocalTestingTool_{version}.jar baixado no pré-requisito 1.3 para criar os relatórios de resumo com o seguinte comando. Substitua {version} pela versão que você baixou. Não se esqueça de mover LocalTestingTool_{version}.jar para o diretório atual ou adicionar um caminho relativo para referenciar a localização atual.

java -jar LocalTestingTool_{version}.jar \
  --input_data_avro_file report.avro \
  --domain_avro_file output_domain.avro \
  --output_directory .

Você vai ver algo parecido com o seguinte depois que o comando for executado. Um relatório output.avro é criado quando isso é concluído.

Saída AVRO AVRO de saída

2.6. Analisar o relatório de resumo

O relatório de resumo criado está no formato AVRO. Para ler isso, é necessário converter de AVRO para um formato JSON. O ideal é que a adtech escreva um código para converter os relatórios AVRO de volta para JSON.

Vamos usar aggregatable_report_converter.jar para converter o relatório AVRO de volta para JSON.

java -jar aggregatable_report_converter.jar \
  --request_type convertToJson \
  --input_file output.avro

Isso retorna um relatório semelhante a este. Junto com um relatório output.json criado no mesmo diretório.

JSON de saída JSON de saída

Codelab concluído!

Resumo:você coletou um relatório de depuração, criou um arquivo de domínio de saída e gerou um resumo usando a ferramenta de teste local, que simula o comportamento de agregação do Serviço de agregação.

Próximas etapas:agora que você testou a ferramenta de teste local, faça o mesmo exercício com uma implantação ativa do serviço de agregação no seu ambiente. Revise os pré-requisitos para garantir que você configurou tudo para o modo "Serviço de agregação" e siga para a etapa 3.

3. 3. Codelab do serviço de agregação

Tempo estimado para a conclusão: 1 hora

Antes de começar, verifique se você concluiu todos os pré-requisitos marcados com "Serviço de agregação".

Etapas do codelab

Etapa 3.1. Criação de entrada do serviço de agregação: crie os relatórios do serviço de agregação que são agrupados em lotes para o serviço de agregação.

  • Etapa 3.1.1. Relatório de acionamento
  • Etapa 3.1.2 Coletar relatórios agregáveis
  • Etapa 3.1.3. Converter relatórios para AVRO
  • Etapa 3.1.4 Criar AVRO output_domain
  • Etapa 3.1.5. Mover relatórios para um bucket do Cloud Storage

Etapa 3.2. Uso do serviço: use a API do serviço de agregação para criar e analisar relatórios resumidos.

  • Etapa 3.2.1 Como usar o endpoint createJob para fazer lotes
  • Etapa 3.2.2 Como usar o endpoint getJob para recuperar o status do lote
  • Etapa 3.2.3 Como analisar o relatório de resumo

3.1. Criação de entrada do serviço de agregação

Crie os relatórios AVRO para agrupamento no serviço de agregação. Os comandos do shell nessas etapas podem ser executados no Cloud Shell do Google Cloud (desde que as dependências dos pré-requisitos sejam clonadas no ambiente shell do Cloud Shell) ou em um ambiente de execução local.

3.1.1. Relatório de acionamento

Siga o link para acessar o site e ver os relatórios em chrome://private-aggregation-internals:

Página interna do Chrome Página interna do Chrome

O relatório enviado ao endpoint {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage também pode ser encontrado no "Corpo do relatório" dos relatórios exibidos na página "Internos do Chrome".

Muitos relatórios podem aparecer aqui, mas para este codelab, use o relatório agregável específico do Google Cloud e gerado pelo endpoint de depuração. O "URL do relatório" vai conter "/debug/", e o aggregation_coordinator_origin field do "Corpo do relatório" vai conter este URL: https://publickeyservice.msmt.gcp.privacysandboxservices.com.

Relatório de depuração do Google Cloud. Relatório de depuração do Google Cloud.

3.1.2. Coletar relatórios agregáveis

Colete seus relatórios agregáveis dos endpoints .well-known da API correspondente.

  • Private Aggregation: {reporting-origin}/.well-known/private-aggregation/report-shared-storage
  • Relatórios de atribuição - Relatório de resumo: {reporting-origin}/.well-known/attribution-reporting/report-aggregate-attribution

Neste codelab, fazemos a coleta de relatórios manualmente. Em produção, espera-se que as adtechs coletem e convertam os relatórios de forma programática.

Copie o relatório JSON no "Corpo do relatório" de chrome://private-aggregation-internals.

Neste exemplo, usamos o vim porque estamos usando o Linux. Mas você pode usar qualquer editor de texto.

vim report.json

Cole o relatório em report.json e salve o arquivo.

Relatório JSON Relatório JSON

3.1.3. Converter relatórios para AVRO

Os relatórios recebidos dos endpoints .well-known estão no formato JSON e precisam ser convertidos para o formato AVRO. Depois de ter o relatório JSON, navegue até onde report.json está armazenado e use aggregatable_report_converter.jar para ajudar a criar o relatório agregável de depuração. Isso cria um relatório agregável chamado report.avro no diretório atual.

java -jar aggregatable_report_converter.jar \
  --request_type convertToAvro \
  --input_file report.json

3.1.4. Criar AVRO output_domain

Para criar o arquivo output_domain.avro, você precisa das chaves do bucket que podem ser recuperadas dos relatórios.

As chaves de agrupamento são projetadas pela adtech. No entanto, nesse caso, o site Demonstração do Sandbox de privacidade cria as chaves de agrupamento. Como a agregação privada para este site está no modo de depuração, podemos usar o debug_cleartext_payload do "Corpo do relatório" para receber a chave do bucket.

Copie o debug_cleartext_payload do corpo do relatório.

Depurar payload de texto não criptografado. Depurar payload de texto não criptografado.

Abra goo.gle/ags-payload-decoder, cole seu debug_cleartext_payload na caixa "INPUT" e clique em "Decode".

O botão de decodificação. O botão "Decodificar".

A página retorna o valor decimal da chave do bucket. Confira a seguir um exemplo de chave de bucket.

Uma chave de bucket de exemplo. Uma chave de bucket de amostra.

Agora que temos a chave do bucket, vamos criar o output_domain.avro na mesma pasta em que estamos trabalhando. Verifique se você substituiu a chave do bucket pela chave recuperada.

java -jar aggregatable_report_converter.jar \
  --request_type createDomainAvro \
  --bucket_key <bucket key>

O script cria o arquivo output_domain.avro na pasta atual.

3.1.5. Mover relatórios para um bucket do Cloud Storage

Depois que os relatórios AVRO e o domínio de saída forem criados, mova-os para o bucket no Cloud Storage (que você anotou no pré-requisito 1.6).

Se você tiver a CLI gcloud configurada no ambiente local, use os comandos a seguir para copiar os arquivos para as pastas correspondentes.

gcloud storage cp report.avro gs://<bucket_name>/reports/

gcloud storage cp output_domain.avro gs://<bucket_name>/output_domain/

Caso contrário, faça upload manual dos arquivos para o bucket. Crie uma pasta chamada "reports" e faça upload do arquivo report.avro nela. Crie uma pasta chamada "output_domains" e faça upload do arquivo output_domain.avro nela.

3.2. Uso do serviço de agregação

Lembre-se de que no pré-requisito 1.8 você selecionou curl ou Postman para fazer solicitações de API aos endpoints do serviço de agregação. Confira as instruções para as duas opções.

Se o job falhar com um erro, consulte nossa documentação de solução de problemas no GitHub para mais informações sobre como proceder.

3.2.1. Como usar o endpoint createJob para fazer lotes

Use uma das seguintes instruções do curl ou do Postman para criar um job.

curl

No "Terminal", crie um arquivo de corpo da solicitação (body.json) e cole o seguinte objeto JSON. Não se esqueça de atualizar os valores dos marcadores de posição. Consulte esta documentação da API para mais informações sobre o que cada campo representa.

{
    "job_request_id": "<job_request_id>",
    "input_data_blob_prefix": "<report_folder>/<report_name>.avro",
    "input_data_blob_prefixes": [ // Mutually exclusive to input_data_blob_prefix as of v2.11.0
      "<report_folder>/<report_name-1>/",
      "<report_folder>/<report_name-2>/",
      "<report_folder>/<report_name>.avro"
    ],
    "input_data_bucket_name": "<bucket_name>",
    "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
    "output_data_bucket_name": "<bucket_name>",
    "job_parameters": {
      "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
      "output_domain_bucket_name": "<bucket_name>",
      "attribution_report_to": "<reporting origin of report>",
      "reporting_site": "<domain of reporting origin(s) of report>", // Mutually exclusive to attribution_report_to as of v2.7.0
      "report_error_threshold_percentage": "10",
      "debug_run": "true"
    }
}

Execute a solicitação a seguir. Substitua os marcadores de posição no URL da solicitação curl pelos valores de frontend_service_cloudfunction_url, que é gerado após a conclusão da implantação do Terraform no pré-requisito 1.6.

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  -d @body.json \
  https://<environment>-<region>-frontend-service-<cloud-function-id>-uc.a.run.app/v1alpha/createJob

Você vai receber uma resposta HTTP 202 quando a solicitação for aceita pelo serviço de agregação. Outros códigos de resposta possíveis estão documentados nas especificações da API.

Postman

Para o endpoint createJob, é necessário um corpo de solicitação para fornecer ao serviço de agregação o local e os nomes de arquivo dos relatórios agregáveis, domínios de saída e relatórios de resumo.

Acesse a guia "Corpo" da solicitação createJob:

Guia &quot;Corpo&quot; Guia "Corpo"

Substitua os marcadores de posição no JSON fornecido. Para mais informações sobre esses campos e o que eles representam, consulte a documentação da API.

{
    "job_request_id": "<job_request_id>",
    "input_data_blob_prefix": "<report_folder>/",
    "input_data_blob_prefixes": [ // Mutually exclusive to input_data_blob_prefix as of v2.11.0
      "<report_folder>/<report_name-1>/",
      "<report_folder>/<report_name-2>/",
      "<report_folder>/<report_name>.avro"
    ],
    "input_data_bucket_name": "<bucket_name>",
    "output_data_blob_prefix": "<output_folder>/<summary_report_prefix>",
    "output_data_bucket_name": "<bucket_name>",
    "job_parameters": {
      "output_domain_blob_prefix": "<output_domain_folder>/<output_domain>.avro",
      "output_domain_bucket_name": "<bucket_name>",
      "attribution_report_to": "<reporting origin of report>",
      "reporting_site": "<domain of reporting origin(s) of report>", // Mutually exclusive to attribution_report_to as of v2.7.0
      "report_error_threshold_percentage": "10",
      "debug_run": "true"
    }
}

Envie a solicitação de API createJob:

Botão Enviar Botão "Enviar"

O código de resposta pode ser encontrado na metade inferior da página:

Código de resposta Código de resposta

Você vai receber uma resposta HTTP 202 quando a solicitação for aceita pelo serviço de agregação. Outros códigos de resposta possíveis estão documentados nas especificações da API.

3.2.2. Como usar o endpoint getJob para recuperar o status do lote

Use uma das seguintes instruções do curl ou do Postman para receber um job.

curl

Execute a seguinte solicitação no terminal. Substitua os marcadores de posição no URL pelos valores de frontend_service_cloudfunction_url, que é o mesmo URL usado para a solicitação createJob. Para "job_request_id", use o valor do job que você criou com o endpoint createJob.

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  https://<environment>-<region>-frontend-service-<cloud-function-id>-uc.a.run.app/v1alpha/getJob?job_request_id=<job_request_id>

O resultado precisa retornar o status da sua solicitação de job com um status HTTP 200. O "Corpo" da solicitação contém as informações necessárias, como job_status, return_message e error_messages (se o job tiver falhado).

Postman

Para verificar o status da solicitação de job, use o endpoint getJob. Na seção "Params" da solicitação getJob, atualize o valor job_request_id para o job_request_id enviado na solicitação createJob.

ID da solicitação de job ID da solicitação de job

Envie a solicitação getJob:

Botão Enviar Botão "Enviar"

O resultado precisa retornar o status da sua solicitação de job com um status HTTP 200. O "Corpo" da solicitação contém as informações necessárias, como job_status, return_message e error_messages (se o job tiver falhado).

JSON de resposta JSON de resposta

3.2.3. Como analisar o relatório de resumo

Depois de receber o relatório de resumo no bucket de saída do Cloud Storage, faça o download dele para o ambiente local. Os relatórios de resumo estão no formato AVRO e podem ser convertidos de volta para um JSON. Use aggregatable_report_converter.jar para ler o relatório com este comando.

java -jar aggregatable_report_converter.jar \
  --request_type convertToJson \
  --input_file <summary_report_avro>

Isso retorna um JSON de valores agregados de cada chave de intervalo semelhante ao seguinte.

Relatório de resumo. Relatório de resumo.

Se a solicitação createJob incluir debug_run como "true", você poderá receber o relatório de resumo na pasta de depuração localizada em output_data_blob_prefix. O relatório está no formato AVRO e pode ser convertido para JSON usando o comando anterior.

O relatório contém a chave do agrupamento, a métrica sem ruído e o ruído adicionado a ela para formar o relatório de resumo. O relatório é semelhante a este.

Relatório com ruído Relatório notificado

As anotações também contêm "in_reports" ou "in_domain" (ou ambos), que significam:

  • in_reports: a chave do agrupamento está disponível nos relatórios agregáveis.
  • in_domain: a chave do bucket está disponível no arquivo AVRO output_domain.

Codelab concluído!

Resumo:você implantou o serviço de agregação no seu próprio ambiente de nuvem, coletou um relatório de depuração, criou um arquivo de domínio de saída, armazenou esses arquivos em um bucket do Cloud Storage e executou um job com sucesso.

Próximas etapas:continue usando o serviço de agregação no seu ambiente ou exclua os recursos da nuvem que você acabou de criar seguindo as instruções de limpeza na etapa 4.

4. 4. Limpeza

Para excluir os recursos criados para o serviço de agregação usando o Terraform, use o comando "destroy" nas pastas adtech_setup e dev (ou outro ambiente):

$ cd <repository_root>/terraform/gcp/environments/adtech_setup
$ terraform destroy
$ cd <repository_root>/terraform/gcp/environments/dev
$ terraform destroy

Para excluir o bucket do Cloud Storage que contém seus relatórios agregáveis e de resumo:

$ gcloud storage buckets delete gs://my-bucket

Você também pode reverter as configurações de cookies do Chrome do pré-requisito 1.2 para o estado anterior.

5. 5. Apêndice

Exemplo de arquivo adtech_setup.auto.tfvars:

/**
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

project = "my-project-id"

# Required to generate identity token for access of Adtech Services API endpoints
service_account_token_creator_list = ["user:me@email.com"]

# Uncomment the below line if you like Terraform to create an Artifact registry repository
# for self-build container artifacts. "artifact_repo_location" defaults to "us".
artifact_repo_name     = "my-ags-artifacts"

# Note: Either one of [1] or [2] must be uncommented.

# [1] Uncomment below lines if you like Terraform grant needed permissions to
# pre-existing service accounts
# deploy_service_account_email = "<YourDeployServiceAccountName>@<ProjectID>.iam.gserviceaccount.com"
# worker_service_account_email = "<YourWorkerServiceAccountName>@<ProjectID>.iam.gserviceaccount.com"

# [2] Uncomment below lines if you like Terraform to create service accounts
# and needed permissions granted e.g "deploy-sa" or "worker-sa"
deploy_service_account_name = "deploy-sa"
worker_service_account_name = "worker-sa"
# Uncomment the below line if you want Terraform to create the
# below bucket. "data_bucket_location" defaults to "us".
data_bucket_name     = "my-ags-data"

# Uncomment the below lines if you want to specify service account customer role names
# deploy_sa_role_name = "<YourDeploySACustomRole>"
# worker_sa_role_name = "<YourWorkerSACustomRole>"

Exemplo de arquivo dev.auto.tfvars:

/**
 * Copyright 2022 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

# Example values required by job_service.tf
#
# These values should be modified for each of your environments.
region      = "us-central1"
region_zone = "us-central1-c"

project_id  = "my-project-id"
environment = "operator-demo-env"

# Co-locate your Cloud Spanner instance configuration with the region above.
# https://cloud.google.com/spanner/docs/instance-configurations#regional-configurations
spanner_instance_config = "regional-us-central1"

# Adjust this based on the job load you expect for your deployment.
# Monitor the spanner instance utilization to decide on scale out / scale in.
# https://console.cloud.google.com/spanner/instances
spanner_processing_units = 100

# Uncomment the line below at your own risk to disable Spanner database protection.
# This needs to be set to false and applied before destroying all resources is possible.
spanner_database_deletion_protection = false

instance_type = "n2d-standard-8" # 8 cores, 32GiB

# Container image location that packages the job service application
# If not set otherwise, uncomment and edit the line below:
#worker_image = "<location>/<project>/<repository>/<image>:<tag or digest>"

# Service account created and onboarded for worker
user_provided_worker_sa_email = "worker-sa@my-project-id.iam.gserviceaccount.com"

min_worker_instances = 1
max_worker_instances = 20