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

1. 1. Pré-requisitos

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

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

Para realizar este codelab em qualquer modo, alguns pré-requisitos são necessários. Cada requisito é marcado conforme necessário para o teste local ou o serviço de agregação.

1.1. Inscrição e atestado completos (serviço de agregação)

Para usar as APIs do Sandbox de privacidade, confira se você concluiu a inscrição e a certificação para o Chrome e o Android.

1.2. Ativar as APIs do Sandbox de privacidade (teste local e serviço de agregação)

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

No navegador, acesse chrome://flags/#privacy-sandbox-ads-apis e ative as APIs do Sandbox de privacidade.

Ativando as APIs do Sandbox de privacidade

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

No navegador, acesse chrome://settings/cookies. Confira se os cookies de terceiros NÃO estão sendo bloqueados. Dependendo da sua versão do Chrome, você verá diferentes opções nesse menu de configurações, mas as configurações aceitáveis são as seguintes:

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

Ativação de cookies

1.3. Fazer o download da Ferramenta de teste local

Para realizar testes locais, é necessário fazer o download da 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 da função do Cloud no GitHub. Ele precisa ter o nome LocalTestingTool_{version}.jar.

1.4. Verifique se o JAVA JRE está instalado (serviço de agregação e teste local)

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

Verificar a versão do Java

Se ele não estiver instalado, faça o download e instale-o no site do Java ou no site do openJDK (link em inglês).

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

Você pode fazer o download de uma cópia do aggregatable_report_converter no repositório de demonstrações do Sandbox de privacidade do GitHub (em inglês).

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

O serviço de agregação requer um ambiente de execução confiável com um provedor de nuvem. Neste codelab, o serviço de agregação será implantado no GCP, mas a AWS também tem suporte.

1.6.1. Implantação

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 GCP 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. Criar um bucket do Cloud Storage para armazenar o estado do Terraform.
  3. Faça o download das dependências.
  4. Atualize adtech_setup.auto.tfvars e execute o Terraform adtech_setup. Consulte o Apêndice para encontrar um exemplo de arquivo adtech_setup.auto.tfvars.
  5. Atualize dev.auto.tfvars, personifique a conta de serviço de implantação e execute o Terraform dev. Consulte o Apêndice para encontrar um exemplo de arquivo dev.auto.tfvars.
  6. Quando a implantação estiver concluída, capture frontend_service_cloudfunction_url da saída do Terraform, que será necessária para fazer solicitações ao serviço de agregação em etapas posteriores.

1.6.2. Bucket de relatórios

Depois de configurar o projeto, você vai criar um bucket no Cloud Storage para armazenar os relatórios agregáveis e os relatórios de resumo deste codelab. Este é um exemplo de comando gcloud para criar um bucket. Substitua os espaços reservados por um nome e local de sua escolha.

gcloud storage buckets create gs://<bucket-name> --location=<location>

1,7. Integração completa do serviço de agregação (serviço de agregação)

O serviço de agregação requer integração aos coordenadores para que eles possam usar o serviço. Preencha o formulário de integração do serviço de agregação. Para isso, informe o site dos relatórios e outras informações, selecione "Google Cloud" e digite o endereço da conta de serviço. Essa conta de serviço é criada no pré-requisito anterior (1.6. Configure um ambiente do GCP). Dica: se você usar os nomes padrão fornecidos, essa conta de serviço começará com "worker-sa@".

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

1,8. Determinar 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 Aggregate Service: cURL e Postman. O cURL é a maneira mais rápida e fácil de chamar os endpoints da API do terminal, já que requer configuração mínima e nenhum outro software. No entanto, se você não quiser usar cURL, poderá usar 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, você vai encontrar instruções detalhadas para usar as duas opções. Você pode visualizá-las agora para determinar qual método usará. Se você selecionar Postman, faça a configuração inicial a seguir.

1.8.1. Configurar espaço de trabalho

Crie uma conta do Postman. Após a inscrição, um espaço de trabalho será criado automaticamente.

Espaço de trabalho do Postman

Se um espaço de trabalho não for criado para você, acesse "Espaços de trabalho" na parte de cima e selecione "Criar espaço de trabalho".

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

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

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

Botão &quot;Importar&quot;

Isso vai criar a coleção do "Sandbox de privacidade do GCP" para você com as solicitações HTTP createJob e getJob.

1.8.2. configurar a autorização

Clique na coleção "Sandbox de privacidade do GCP" e acesse a guia "Autorização".

Botão de autorização

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

gcloud auth print-identity-token

Depois, cole o valor do token no campo "Token" da guia "Autorização do Postman":

Campo do token

1.8.3. Configurar o ambiente

Acesse a "Visualização rápida do ambiente" no canto superior direito:

Botão Ambiente (Environment)

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

Definir valores atuais

Você pode deixar "request-id" em branco por enquanto, pois isso será preenchido mais tarde. Para os outros campos, use os valores de frontend_service_cloudfunction_url, que foram retornados após a conclusão 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: <1 hora

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

Etapas do codelab

Etapa 2.1. Acionar relatório: acione o relatório de agregação privada para coletar o relatório.

Etapa 2.2. Criar relatório de depuração AVRO: converta o relatório JSON coletado em um relatório formatado AVRO. Essa etapa será semelhante a quando as adTechs coletam os relatórios dos endpoints da API e convertem os relatórios JSON em relatórios formatados pelo AVRO.

Etapa 2.3. Recuperar as chaves de bucket: as chaves de bucket são projetadas por adTechs. Neste codelab, como os buckets são predefinidos, recupere as chaves de bucket conforme elas são fornecidas.

Etapa 2.4. Criar o domínio de saída AVRO: depois que as chaves de intervalo forem recuperadas, crie o arquivo AVRO do 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: consulte o relatório de resumo criado pela Ferramenta de teste local.

2.1. Acionar relatório

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 as etapas Inscrição e atestado e Integração do serviço de agregação, será necessário usar uma flag do Chrome e um switch da CLI.

Para esta demonstração, vamos usar o site de demonstração do Sandbox de privacidade. Siga o link para acessar o site. Depois, você poderá visualizar os relatórios em chrome://private-aggregation-internals:

Página de componentes 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 "Detalhes internos do Chrome".

Talvez apareçam muitos relatórios aqui, mas neste codelab, use o relatório agregável específico do GCP 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 GCP

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 (dentro do repositório transferido por download no Pré-requisito 1.5).

Neste exemplo, estamos usando vim, já que estamos usando Linux. Mas você pode usar o editor de texto que quiser.

vim report.json

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

JSON de 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. Extrair a chave do bucket no relatório

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

As chaves de bucket são projetadas pela adTech. No entanto, nesse caso, o site da demonstração do Sandbox de privacidade cria as chaves do bucket. Como a agregação particular desse site está no modo de depuração, podemos usar o debug_cleartext_payload do "Corpo do relatório" para acessar a chave do bucket.

Copie o debug_cleartext_payload do corpo do relatório.

Depurar payload de texto não criptografado

Abra goo.gle/ags-payload-decoder e cole o debug_cleartext_payload na caixa "ENTRADA" e clique em "Decodificar".

Botão &quot;Decodificar&quot;

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

Chave do bucket

2.4. Criar domínio de saída AVRO

Agora que temos a chave do bucket, vamos criar o output_domain.avro na mesma pasta em que estamos trabalhando. Substitua a chave do bucket pela chave do bucket que você recuperou.

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. Crie relatórios de resumo usando a Ferramenta de teste local

Usaremos o LocalTestingTool_{version}.jar que foi baixado no Pré-requisito 1.3 para criar os relatórios de resumo usando o comando abaixo. Substitua {version} pela versão que você transferiu por download. Não se esqueça de mover LocalTestingTool_{version}.jar para o diretório atual ou adicionar um caminho relativo para se referir ao local atual.

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

Quando o comando for executado, você verá algo semelhante ao exemplo abaixo. Um relatório output.avro será criado assim que esse processo for concluído.

AVRO de saída

2,6 Analise o relatório de resumo

O relatório de resumo que é criado está no formato AVRO. Para conseguir ler isso, é necessário converter o arquivo do AVRO para o formato JSON. O ideal é que a adTech escreva o código para converter os relatórios AVRO de volta em JSON.

Usaremos 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 vai retornar um relatório semelhante ao exemplo abaixo. Junto com um relatório output.json criado no mesmo diretório.

JSON de saída

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 rotulados com "Serviço de agregação".

Etapas do codelab

Etapa 3.1. Criação de entradas do serviço de agregação: crie os relatórios do serviço de agregação em lote para o serviço.

  • Etapa 3.1.1. Acionar relatório
  • Etapa 3.1.2. Coletar relatórios agregáveis
  • Etapa 3.1.3. Converter relatórios para AVRO
  • Etapa 3.1.4. Criar AVRO de domínio de saída
  • Etapa 3.1.5. Mover relatórios para o bucket do Cloud Storage

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

  • Etapa 3.2.1. Usando o endpoint createJob para agrupar
  • Etapa 3.2.2. Como usar o endpoint getJob para recuperar o status do lote
  • Etapa 3.2.3. Revisão do relatório de resumo

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

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

3.1.1. Acionar relatório

Siga o link para acessar o site. Depois, você poderá visualizar os relatórios em chrome://private-aggregation-internals:

Página de componentes 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 "Detalhes internos do Chrome".

Talvez apareçam muitos relatórios aqui, mas neste codelab, use o relatório agregável específico do GCP 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 GCP

3.1.2. Coletar relatórios agregáveis

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

  • Agregação particular: {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, vamos coletar os relatórios manualmente. Na produção, as adtechs precisam coletar e converter os relatórios de forma programática.

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

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

vim report.json

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

JSON de relatório

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 de relatório 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 de domínio de saída

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

As chaves de bucket são projetadas pela adTech. No entanto, nesse caso, o site da demonstração do Sandbox de privacidade cria as chaves do bucket. Como a agregação particular desse site está no modo de depuração, podemos usar o debug_cleartext_payload do "Corpo do relatório" para acessar a chave do bucket.

Copie o debug_cleartext_payload do corpo do relatório.

Depurar payload de texto não criptografado

Abra goo.gle/ags-payload-decoder e cole o debug_cleartext_payload na caixa "ENTRADA" e clique em "Decodificar".

Botão &quot;Decodificar&quot;

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

Chave do bucket

Agora que temos a chave do bucket, vamos criar o output_domain.avro na mesma pasta em que estamos trabalhando. Substitua a chave do bucket pela chave do bucket que você recuperou.

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 o bucket do Cloud Storage

Depois de criar os relatórios do AVRO e o domínio de saída, mova os relatórios e o domínio de saída para o bucket no Cloud Storage (que você criou como etapa final no pré-requisito 1.6).

Se você tiver a configuração da CLI gcloud no ambiente local, use os comandos abaixo 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 o upload manual dos arquivos no 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. Abaixo, você encontrará instruções para as duas opções.

3.2.1. Usando o endpoint createJob para agrupar

Use as instruções de cURL ou Postman abaixo para criar uma vaga.

cURL

No seu "Terminal", crie um arquivo de corpo da solicitação (body.json) e cole o seguinte: Atualize os valores do marcador. Consulte a 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_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>",
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

Execute a solicitação abaixo. Substitua os marcadores no URL da solicitação cURL pelos valores de frontend_service_cloudfunction_url, que são gerados 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.

Carteiro

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, dos domínios de saída e dos relatórios de resumo.

Navegue até a guia "Corpo" da solicitação createJob:

Guia &quot;Corpo&quot;

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>/<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>",
    "report_error_threshold_percentage": "10",
    "debug_run": "true"
  }
}

Envie a solicitação de API createJob:

Botão Enviar

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

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 as instruções de cURL ou Postman abaixo para conseguir uma vaga.

cURL

Execute a solicitação abaixo no seu 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 criado 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 deve retornar o status da solicitação do job com um status HTTP 200. A solicitação "Body" contém as informações necessárias, como job_status, return_message e error_messages (se o job tiver gerado um erro).

Carteiro

Para verificar o status da solicitação do job, use o endpoint getJob. Na seção "Parâmetros" da solicitação getJob, atualize o valor job_request_id para o job_request_id que foi enviado na solicitação createJob.

ID da solicitação do job

Envie a solicitação getJob:

Botão Enviar

O resultado deve retornar o status da solicitação do job com um status HTTP 200. A solicitação "Body" contém as informações necessárias, como job_status, return_message e error_messages (se o job tiver gerado um erro).

JSON de resposta

3.2.3. Revisão do 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 usando o comando abaixo.

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

Isso retorna um json com os valores agregados de cada chave de bucket que é semelhante ao exemplo abaixo.

Relatório do 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 usando o comando acima para um JSON.

O relatório contém a chave do bucket, a métrica sem ruído e o ruído que é adicionado à métrica sem ruído para formar o relatório de resumo. O relatório é semelhante ao mostrado abaixo.

Relatório com ruído

As anotações também contêm "in_reports" e/ou "in_domain", o que significa que:

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

4. 4. Limpeza

Para excluir os recursos criados para o serviço de agregação pelo Terraform, use o comando destroy nas pastas adtech_setup e dev (ou de 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 os relatórios agregáveis e de resumo:

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

Também é possível 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