使用 Google Cloud Platform (GCP) 上的汇总服务

1. 1. 前提条件

预计完成时间:1-2 小时

您可以通过以下 2 种模式完成此 Codelab:本地测试汇总服务。本地测试模式需要本地机器和 Chrome 浏览器(无需创建/使用 Google Cloud 资源)。汇总服务模式需要在 Google Cloud 上完整部署汇总服务。

无论采用哪种模式,您都需要满足一些前提条件才能完成此 Codelab。每个要求都会相应地标记为“本地测试”或“汇总服务”所需的要求。

1.1. 完成注册和证明(汇总服务)

如需使用 Privacy Sandbox API,请验证您是否已完成 Chrome 和 Android 的注册和证明

1.2. 启用广告隐私权 API(本地测试和汇总服务)

由于我们将使用 Privacy Sandbox,因此建议您启用 Privacy Sandbox 广告 API。

在浏览器中,前往 chrome://settings/adPrivacy 并启用所有广告隐私权 API。

另请验证第三方 Cookie 是否已启用

chrome://settings/cookies 中,确保未屏蔽第三方 Cookie。根据您的 Chrome 版本,此设置菜单中显示的选项可能会有所不同,但可接受的配置包括:

  • “阻止所有第三方 Cookie”= 已停用
  • “阻止第三方 Cookie”= 已停用
  • “在无痕模式下阻止第三方 Cookie”= 已启用

启用 Cookie 启用 Cookie

1.3. 下载本地测试工具(本地测试)

本地测试需要下载本地测试工具。该工具将根据未加密的调试报告生成摘要报告。

您可以在 GitHub 中的 Cloud Functions JAR 归档中下载本地测试工具。应命名为 LocalTestingTool_{version}.jar

1.4. 验证是否已安装 JAVA JRE(本地测试和汇总服务)

打开“终端”,然后使用 java --version 检查您的机器是否已安装 Java 或 openJDK。

检查 Java 版本。 检查 Java 版本。

如果未安装,您可以从 Java 网站openJDK 网站下载并安装。

1.5. 下载 aggregatable_report_converter(本地测试和汇总服务)

您可以从 Privacy Sandbox 演示 GitHub 代码库下载 aggregatable_report_converter 的副本。GitHub 代码库中提到了使用 IntelliJ 或 Eclipse,但这两者都不是必需的。如果您不使用这些工具,请改为将 JAR 文件下载到本地环境。

1.6. 设置 Cloud Platform 环境(汇总服务)

汇总服务需要使用云服务提供商提供的可信执行环境。在此 Codelab 中,聚合服务将部署在 Google Cloud 中,但也支持 AWS

按照 GitHub 中的部署说明设置 gcloud CLI、下载 Terraform 二进制文件和模块,并为汇总服务创建 Google Cloud 资源。

部署说明中的关键步骤:

  1. 在您的环境中设置“gcloud”CLI 和 Terraform。
  2. 创建 Cloud Storage 存储分区以存储 Terraform 状态。
  3. 下载依赖项。
  4. 更新 adtech_setup.auto.tfvars 并运行 adtech_setup Terraform。如需查看 adtech_setup.auto.tfvars 文件示例,请参阅附录。记下此处创建的数据存储分区的名称 - 这将在 Codelab 中用于存储我们创建的文件。
  5. 更新 dev.auto.tfvars,模拟部署服务账号,然后运行 dev Terraform。如需查看 dev.auto.tfvars 文件示例,请参阅附录。
  6. 部署完成后,从 Terraform 输出中捕获 frontend_service_cloudfunction_url,后续步骤中需要使用此值向汇总服务发出请求。

1.7. 完成 Aggregation Service 初始配置(Aggregation Service)

汇总服务需要加入协调器才能使用。填写汇总服务初始配置表单,提供您的报告网站和其他信息,选择“Google Cloud”,然后输入您的服务账号地址。此服务账号是在之前的前提条件(1.6. 设置 Google Cloud 环境)。(提示:如果您使用提供的默认名称,此服务账号将以“worker-sa@”开头)。

初始配置流程最多需要 2 周的时间才能完成。

1.8. 确定您调用 API 端点(汇总服务)的方法

此 Codelab 提供了 2 种用于调用汇总服务 API 端点的选项:c网址Postman。c网址 是从终端调用 API 端点的更快更简单的方式,因为它只需要极少的设置,并且不需要额外的软件。不过,如果您不想使用 c网址,也可以使用 Postman 来执行和保存 API 请求,以供日后使用。

在第 3.2 部分中。汇总服务使用情况,您会找到有关如何使用这两种选项的详细说明。您可以先预览一下,确定要使用哪种方法。如果您选择 Postman,请执行以下初始设置。

1.8.1. 设置工作区

注册 Postman 账号。注册后,系统会自动为您创建一个工作区。

Postman 工作区。 Postman 工作区。

如果系统未为您创建工作区,请前往顶部导航栏中的“工作区”,然后选择“创建工作区”。

选择“空白工作区”,点击“下一步”,然后将其命名为“GCP Privacy Sandbox”。选择“个人”,然后点击“创建”。

下载预配置的工作区 JSON 配置全局环境文件

使用“导入”按钮将这两个 JSON 文件导入到“我的工作区”。

“导入”按钮。 “导入”按钮。

这会为您创建“GCP Privacy Sandbox”集合以及 createJobgetJob HTTP 请求。

1.8.2. 设置授权

点击“GCP Privacy Sandbox”集合,然后前往“授权”标签页。

授权按钮。 授权按钮。

您将使用“不记名令牌”方法。在终端环境中,运行以下命令并复制输出内容。

gcloud auth print-identity-token

然后,将此令牌值粘贴到 Postman 授权标签页的“令牌”字段中:

体验 “令牌”字段。

1.8.3. 设置环境

前往右上角的“环境概览”:

“环境”快速查看按钮。 “环境”快速查看按钮。

点击“修改”,然后更新“environment”“region”和“cloud-function-id”的“当前值”:

设置当前值。 设置当前值。

您可以暂时将“request-id”留空,我们稍后会填写。对于其他字段,请使用 frontend_service_cloudfunction_url 中的值,该值是在前提条件 1.6 中成功完成 Terraform 部署后返回的。网址采用以下格式:https://--frontend-service--uc.a.run.app

2. 2. 本地测试 Codelab

预计完成时间:<1 小时

您可以使用本地测试工具在自己的机器上执行汇总,并使用未加密的调试报告生成摘要报告。开始之前,请验证您是否已完成所有标记为“本地测试”的前提条件。

Codelab 步骤

第 2.1 步。触发报告:触发 Private Aggregation 报告,以便能够收集报告。

第 2.2 步:创建调试 AVRO 报告:将收集的 JSON 报告转换为 AVRO 格式的报告。此步骤类似于广告技术平台从 API 报告端点收集报告并将 JSON 报告转换为 AVRO 格式的报告。

第 2.3 步。检索分桶键:分桶键由广告技术平台设计。在此 Codelab 中,由于存储分区是预定义的,因此请按提供的形式检索存储分区键。

第 2.4 步。创建输出网域 AVRO:检索到存储分区密钥后,创建输出网域 AVRO 文件。

第 2.5 步。创建摘要报告:使用本地测试工具,以便在本地环境中创建摘要报告。

第 2.6 步。查看摘要报告:查看本地测试工具创建的摘要报告。

2.1. 触发报告

如需触发私密汇总报告,您可以使用 Privacy Sandbox Demos 演示网站 (https://privacy-sandbox-demos-news.dev/?env=gcp) 或您自己的网站(例如 https://adtechexample.com)。如果您使用的是自己的网站,但尚未完成注册和证明以及汇总服务启用流程,则需要使用 Chrome flag 和 CLI 开关

在此演示中,我们将使用 Privacy Sandbox 演示网站。点击链接前往相应网站;然后,您可以在 chrome://private-aggregation-internals 查看报告:

Chrome 内部页面。 Chrome 内部页面。

发送到 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage 端点的报告也会显示在 Chrome Internals 页面上显示的报告的“报告正文”中。

您可能会在此处看到许多报告,但对于此 Codelab,请使用由调试端点生成的特定于 Google Cloud 的可汇总报告。“报告网址”将包含“/debug/”,而“报告正文”的 aggregation_coordinator_origin field 将包含以下网址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。

Google Cloud 调试报告。 Google Cloud 调试报告。

2.2. 创建调试可汇总的报告

复制 chrome://private-aggregation-internals 的“报告正文”中的报告,并在 privacy-sandbox-demos/tools/aggregatable_report_converter/out/artifacts/aggregatable_report_converter_jar 文件夹(位于前提条件 1.5 中下载的代码库内)中创建一个 JSON 文件。

在此示例中,我们使用的是 vim,因为我们使用的是 Linux。不过,您可以使用任何所需的文本编辑器。

vim report.json

将报告粘贴到 report.json 中,然后保存文件。

报告 JSON 代码。 报告 JSON 代码。

获得该信息后,使用 aggregatable_report_converter.jar 帮助创建调试可汇总报告。此命令会在当前目录中创建一个名为 report.avro 的可汇总报告。

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

2.3. 从报告中检索存储分区密钥

如需创建 output_domain.avro 文件,您需要可从报告中检索到的存储分区键。

分桶键由广告技术平台设计。不过,在本例中,分桶键由网站 Privacy Sandbox 演示创建。由于相应网站的 Private Aggregation 处于调试模式,我们可以使用“报告正文”中的 debug_cleartext_payload 获取分桶键。

请继续操作,从报告正文中复制 debug_cleartext_payload

调试明文载荷。 调试明文载荷。

打开 goo.gle/ags-payload-decoder,将 debug_cleartext_payload 粘贴到“INPUT”框中,然后点击“Decode”。

解码按钮。 “解码”按钮。

该网页会返回分桶键的十进制值。以下是存储分区密钥示例。

一个示例存储分区密钥。 一个示例分桶键。

2.4. 创建输出网域 AVRO

现在我们有了存储分区密钥,接下来在之前使用的文件夹中创建 output_domain.avro。验证您是否已将存储分区密钥替换为您检索到的存储分区密钥。

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

该脚本会在当前文件夹中创建 output_domain.avro 文件。

2.5. 使用本地测试工具创建摘要报告

我们将使用在前提条件 1.3 中下载的 LocalTestingTool_{version}.jar,通过以下命令创建摘要报告。将 {version} 替换为您下载的版本。请务必将 LocalTestingTool_{version}.jar 移至当前目录,或添加相对路径以引用其当前位置。

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

运行该命令后,您应该会看到如下所示的内容。完成后,系统会生成一份报告 output.avro

输出 AVRO 输出 AVRO

2.6. 查看摘要报告

创建的摘要报告采用 AVRO 格式。为了能够读取此文件,您需要将其从 AVRO 格式转换为 JSON 格式。理想情况下,广告技术平台应编写代码将 AVRO 报告转换回 JSON。

我们将使用 aggregatable_report_converter.jar 将 AVRO 报告转换回 JSON。

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

这会返回类似于以下内容的报告。以及在同一目录中创建的报告 output.json

输出 JSON 输出 JSON

Codelab 已完成!

总结:您已收集调试报告、构建输出网域文件,并使用模拟 Aggregation Service 汇总行为的本地测试工具生成摘要报告。

后续步骤:现在,您已经试用了本地测试工具,接下来可以在自己的环境中尝试对汇总服务进行实时部署。重新查看前提条件,确保您已为“汇总服务”模式设置好一切,然后继续执行第 3 步。

3. 3. 汇总服务 Codelab

预计完成时间:1 小时

开始之前,请验证您是否已完成所有标记为“汇总服务”的前提条件。

Codelab 步骤

第 3.1 步。创建汇总服务输入:创建为汇总服务分批处理的汇总服务报告。

  • 第 3.1.1 步。触发报告
  • 第 3.1.2 步。收集可汇总的报告
  • 第 3.1.3 步。将报告转换为 AVRO 格式
  • 第 3.1.4 步。创建 output_domain AVRO
  • 第 3.1.5 步。将报告移至 Cloud Storage 存储分区

第 3.2 步。汇总服务使用情况:使用汇总服务 API 创建摘要报告并查看摘要报告。

  • 第 3.2.1 步。使用 createJob 端点进行批量处理
  • 第 3.2.2 步。使用 getJob 端点检索批处理状态
  • 第 3.2.3 步。查看摘要报告

3.1. 创建 Aggregation Service 输入

继续操作,创建 AVRO 报告以批量发送到汇总服务。这些步骤中的 shell 命令可以在 Google Cloud 的 Cloud Shell 中运行(前提是将“前提条件”中的依赖项克隆到您的 Cloud Shell 环境中),也可以在本地执行环境中运行。

3.1.1. 触发报告

点击链接前往相应网站;然后,您可以在 chrome://private-aggregation-internals 查看报告:

Chrome 内部页面 Chrome 内部页面

发送到 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage 端点的报告也会显示在 Chrome Internals 页面上所显示报告的“报告正文”中。

您可能会在此处看到许多报告,但对于此 Codelab,请使用由调试端点生成的特定于 Google Cloud 的可汇总报告。“报告网址”将包含“/debug/”,而“报告正文”的 aggregation_coordinator_origin field 将包含以下网址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。

Google Cloud 调试报告。 Google Cloud 调试报告。

3.1.2. 收集可汇总的报告

从相应 API 的 .well-known 端点收集可汇总报告。

  • 不公开汇总:{reporting-origin}/.well-known/private-aggregation/report-shared-storage
  • Attribution Reporting - 摘要报告:{reporting-origin}/.well-known/attribution-reporting/report-aggregate-attribution

在此 Codelab 中,我们将手动执行报告集合。在生产环境中,广告技术平台应以程序化方式收集和转换报告。

我们继续操作,从 chrome://private-aggregation-internals 中复制“报告正文”中的 JSON 报告。

在此示例中,我们使用 vim,因为我们使用的是 Linux。不过,您可以使用任何所需的文本编辑器。

vim report.json

将报告粘贴到 report.json 中,然后保存文件。

报告 JSON 报告 JSON

3.1.3. 将报告转换为 AVRO 格式

.well-known 端点收到的报告为 JSON 格式,需要转换为 AVRO 报告格式。获得 JSON 报告后,前往 report.json 的存储位置,然后使用 aggregatable_report_converter.jar 帮助创建调试可汇总报告。此命令会在当前目录中创建一个名为 report.avro 的可汇总报告。

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

3.1.4. 创建 output_domain AVRO

如需创建 output_domain.avro 文件,您需要可从报告中检索到的存储分区键。

分桶键由广告技术平台设计。不过,在本例中,分桶键由网站 Privacy Sandbox 演示创建。由于相应网站的 Private Aggregation 处于调试模式,我们可以使用“报告正文”中的 debug_cleartext_payload 获取分桶键。

请继续操作,从报告正文中复制 debug_cleartext_payload

调试明文载荷。 调试明文载荷。

打开 goo.gle/ags-payload-decoder,将 debug_cleartext_payload 粘贴到“INPUT”框中,然后点击“Decode”。

解码按钮。 “解码”按钮。

该网页会返回分桶键的十进制值。以下是存储分区密钥示例。

一个示例存储分区密钥。 一个示例分桶键。

现在我们有了存储分区密钥,接下来在之前使用的文件夹中创建 output_domain.avro。验证您是否已将存储分区密钥替换为您检索到的存储分区密钥。

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

该脚本会在当前文件夹中创建 output_domain.avro 文件。

3.1.5. 将报告移至 Cloud Storage 存储分区

创建 AVRO 报告和输出网域后,继续将报告和输出网域移至 Cloud Storage 中的存储分区(您在前提条件 1.6 中记下的存储分区)。

如果您已在本地环境中设置 gcloud CLI,请使用以下命令将文件复制到相应文件夹。

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

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

否则,请手动将文件上传到存储分区。创建一个名为“reports”的文件夹,并将 report.avro 文件上传到该文件夹中。创建一个名为“output_domains”的文件夹,并将 output_domain.avro 文件上传到该文件夹。

3.2. Aggregation Service 用量

请回想一下,在前提条件 1.8 中,您选择了 curl 或 Postman 来向汇总服务端点发出 API 请求。下面提供了这两种选项的说明。

如果作业因错误而失败,请查看 GitHub 中的问题排查文档,详细了解如何继续操作。

3.2.1. 使用 createJob 端点进行批量处理

使用以下任一 curl 或 Postman 说明来创建作业。

curl

在“终端”中,创建一个请求正文文件 (body.json),然后粘贴以下 JSON 对象。请务必更新占位值。如需详细了解每个字段的含义,请参阅此 API 文档

{
    "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"
    }
}

执行以下请求。将 curl 请求网址中的占位符替换为 frontend_service_cloudfunction_url 中的值,该值是在前提条件 1.6 中成功完成 Terraform 部署后输出的。

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

当汇总服务接受请求后,您应该会收到 HTTP 202 响应。其他可能的响应代码已在 API 规范中记录

Postman

对于 createJob 端点,需要提供请求正文,以便向汇总服务提供可汇总报告、输出网域和摘要报告的位置和文件名。

前往 createJob 请求的“正文”标签页:

正文标签页 “身体”标签页

替换所提供的 JSON 中的占位符。如需详细了解这些字段及其表示的含义,请参阅 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"
    }
}

“发送”createJob API 请求:

“发送”按钮 “发送”按钮

您可以在页面下半部分找到响应代码:

响应代码 响应代码

当汇总服务接受请求后,您应该会收到 HTTP 202 响应。其他可能的响应代码已在 API 规范中记录

3.2.2. 使用 getJob 端点检索批处理状态

使用以下任一 curl 或 Postman 说明来获取作业。

curl

在终端中执行以下请求。将网址中的占位符替换为 frontend_service_cloudfunction_url 中的值,该网址与您用于 createJob 请求的网址相同。对于“job_request_id”,请使用您通过 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>

结果应返回作业请求的状态,并显示 HTTP 状态 200。请求“正文”包含必要的信息,例如 job_statusreturn_messageerror_messages(如果作业出错)。

Postman

如需检查作业请求的状态,您可以使用 getJob 端点。在 getJob 请求的“Params”部分中,将 job_request_id 值更新为 createJob 请求中发送的 job_request_id

作业请求 ID 作业请求 ID

“发送”getJob 请求:

“发送”按钮 “发送”按钮

结果应返回作业请求的状态,并显示 HTTP 状态 200。请求“正文”包含必要的信息,例如 job_statusreturn_messageerror_messages(如果作业出错)。

响应 JSON 响应 JSON

3.2.3. 查看摘要报告

在输出 Cloud Storage 存储分区中收到摘要报告后,您可以将其下载到本地环境。摘要报告采用 AVRO 格式,可以转换回 JSON 格式。您可以使用 aggregatable_report_converter.jar 通过此命令读取报告。

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

此函数会返回一个 JSON,其中包含每个分桶键的汇总值,如下所示。

摘要报告。 摘要报告。

如果您的 createJob 请求包含 debug_run(值为 true),那么您可以在 output_data_blob_prefix 中的调试文件夹中收到摘要报告。报告采用 AVRO 格式,可以使用上述命令转换为 JSON 格式。

报告包含以下内容:分桶键、未添加噪声的指标,以及为形成汇总报告而添加到未添加噪声的指标中的噪声。报告类似于以下内容。

噪声报告 添加了噪声的报告

注释还包含“in_reports”或“in_domain”(或两者兼有),这意味着:

  • in_reports - 桶键可在可汇总报告中使用。
  • in_domain - 存储分区密钥位于 output_domain AVRO 文件中。

Codelab 已完成!

总结:您已在自己的云环境中部署了汇总服务,收集了调试报告,构建了输出网域文件,将这些文件存储在 Cloud Storage 存储分区中,并成功运行了作业!

后续步骤:继续在您的环境中运行汇总服务,或按照第 4 步中的清理说明删除您刚刚创建的云资源。

4. 4. 清理

如需使用 Terraform 删除为汇总服务创建的资源,请在 adtech_setupdev(或其他环境)文件夹中使用 destroy 命令:

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

如需删除包含可汇总报告和摘要报告的 Cloud Storage 存储分区,请执行以下操作:

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

您还可以选择将 Chrome Cookie 设置从前提条件 1.2 中的状态恢复到之前的状态。

5. 5. 附录

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>"

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