1. 1. 前提条件
预计完成时间:1-2 小时
执行此 Codelab 有两种模式:本地测试或聚合服务。本地测试模式需要本地计算机和 Chrome 浏览器(无需创建/使用 Google Cloud 资源)。汇总服务模式需要在 Google Cloud 上完整部署汇总服务。
如需在任一模式下执行此 Codelab,您需要满足一些前提条件。每项要求都会相应地注明是本地测试还是汇总服务所必需的。
1.1. 完成注册和证明(汇总服务)
如需使用 Privacy Sandbox API,请确保您已针对 Chrome 和 Android 完成注册和证明。
1.2. 启用广告隐私权 API(本地测试和汇总服务)
由于我们将使用 Privacy Sandbox,因此建议您启用 Privacy Sandbox Ads API。
在浏览器中,前往 chrome://settings/adPrivacy
并启用所有广告隐私权 API。
此外,请确保已启用第三方 Cookie。
从 chrome://settings/cookies
中,确保第三方 Cookie 未被屏蔽。此设置菜单上可能会显示不同的选项,具体取决于您的 Chrome 版本,不过可接受的配置包括:
- “阻止所有第三方 Cookie”= 已停用
- “阻止第三方 Cookie”= 已停用
- “在无痕模式下阻止第三方 Cookie”= 已启用
1.3. 下载本地测试工具(本地测试)
使用本地测试时,您需要下载本地测试工具。该工具将根据未加密的调试报告生成摘要报告。
您可以在 GitHub 中的 Cloud Functions JAR 归档中下载本地测试工具。应将其命名为 LocalTestingTool_{version}.jar
。
1.4. 确保已安装 JAVA JRE(本地测试和汇总服务)
打开“Terminal”(终端),然后使用 java --version
检查机器是否已安装 Java 或 openJDK。
如果未安装,您可以从 Java 网站或 openJDK 网站下载并安装。
1.5. 下载 aggregatable_report_converter(本地测试和汇总服务)
您可以从 Privacy Sandbox 演示 GitHub 代码库中下载 aggregatable_report_converter 的副本。GitHub 代码库提及使用 IntelliJ 或 Eclipse,但两者都不是必需项。如果您不使用这些工具,请改为将 JAR 文件下载到本地环境。
1.6. 设置 GCP 环境(聚合服务)
汇总服务要求使用采用云服务提供商的可信执行环境。在此 Codelab 中,汇总服务将部署在 GCP 中,但也支持 AWS。
按照 GitHub 中的部署说明设置 gcloud CLI,下载 Terraform 二进制文件和模块,并为聚合服务创建 GCP 资源。
“部署说明”中的关键步骤:
- 设置“gcloud”在您的环境中使用 CLI 和 Terraform。
- 创建一个 Cloud Storage 存储分区来存储 Terraform 状态。
- 下载依赖项。
- 更新
adtech_setup.auto.tfvars
并运行adtech_setup
Terraform。如需查看示例adtech_setup.auto.tfvars
文件,请参阅附录。记下此处创建的数据存储分区的名称 - 此 Codelab 将用来存储我们创建的文件。 - 更新
dev.auto.tfvars
,模拟部署服务账号并运行dev
Terraform。如需查看示例dev.auto.tfvars
文件,请参阅附录。 - 部署完成后,从 Terraform 输出中捕获
frontend_service_cloudfunction_url
,在后续步骤中向汇总服务发出请求时需要用到该文件。
1.7.完成汇总服务新手入门(汇总服务)
整合服务要求必须通过培训,协调员才能使用服务。填写汇总服务新手入门表单,提供您的举报网站和其他信息,选择“Google Cloud”,然后输入您的服务账号地址。此服务账号在之前的前提条件 (1.6.设置 GCP 环境)。(提示:如果您使用提供的默认名称,则此服务账号将以“worker-sa@”开头)。
新手入门流程最多需要 2 周才能完成。
1.8.确定调用 API 端点的方法(聚合服务)
此 Codelab 提供了 2 个用于调用 Aggregation Service API 端点的选项:cURL 和 cURL。使用 c网址 时,从终端调用 API 端点的速度更快、更简便,因为使用 c网址 所需的设置极少,无需额外的软件。但是,如果您不想使用 c网址,则可以改用 Postman 执行并保存 API 请求,以备将来使用。
在第 3.2 节中:您可以在“Aggregation Service Usage”中找到关于使用这两个选项的详细说明。您可以立即预览这些结果,以确定要使用的方法。如果您选择 Postman,请执行以下初始设置。
1.8.1.设置工作区
注册 Postman 账号。注册后,系统会自动为您创建一个工作区。
如果系统没有为您创建工作区,请前往“工作区”顶部导航项,然后选择“创建工作区”。
选择“空白工作区”,点击“下一步”,将其命名为“GCP Privacy Sandbox”。选择“个人”然后点击“创建”。
将两个 JSON 文件导入“我的工作区”通过“导入”菜单按钮。
此操作将创建“GCP Privacy Sandbox”以及 createJob
和 getJob
HTTP 请求。
1.8.2.设置授权
点击“GCP Privacy Sandbox”然后找到“授权”部分标签页。
您将使用“不记名令牌”方法。在终端环境中,运行以下命令并复制输出。
gcloud auth print-identity-token
然后,将此令牌值粘贴到字段中:
1.8.3.设置环境
前往“环境快速查看”:
点击“修改”然后更新“Current Value”为“environment”“region”和“cloud-function-id”:
您可以保留“request-id”暂时为空,稍后我们会进行填充。对于其他字段,请使用 frontend_service_cloudfunction_url
中的值,该值是在前提条件 1.6 中成功完成 Terraform 部署后返回的。网址格式如下:https://
2. 2. 本地测试 Codelab
预计完成时间:不到 1 小时
您可以使用计算机上的本地测试工具执行汇总,并使用未加密的调试报告生成摘要报告。开始之前,请确保您已完成带有“本地测试”标签的所有前提条件。
Codelab 步骤
第 2.1 步:触发报告:触发私密汇总报告以便收集报告。
第 2.2 步:创建调试 AVRO 报告:将收集的 JSON 报告转换为 AVRO 格式的报告。此步骤与广告技术平台从 API 报告端点收集报告并将 JSON 报告转换为 AVRO 格式的报告时类似。
第 2.3 步:检索存储分区键:存储分区键由广告技术平台设计。在此 Codelab 中,由于分桶是预定义的,因此请检索提供的存储分区键。
第 2.4 步:创建输出网域 AVRO:检索存储分区密钥后,创建输出网域 AVRO 文件。
第 2.5 步:创建摘要报告:使用本地测试工具在本地环境中创建摘要报告。
第 2.6 步:查看摘要报告:查看本地测试工具创建的摘要报告。
2.1. 触发器报告
如需触发私密汇总报告,您可以使用 Privacy Sandbox 演示网站 (https://privacy-sandbox-demos-news.dev/?env=gcp) 或您自己的网站(例如 https://adtechexample.com)。如果您使用的是自己的网站,并且尚未完成注册和证明和汇总服务新手入门,您将需要使用 Chrome flag 和 CLI 开关。
在本演示中,我们将使用 Privacy Sandbox 演示网站。点击链接前往该网站;然后,您可以在 chrome://private-aggregation-internals
上查看这些报告:
发送到 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage
端点的报告也可以在“报告正文”中找到Chrome 内部报告页面上显示的部分报告。
在这里,您可能会看到许多报告,但对于此 Codelab,请使用由调试端点生成的 GCP 专用可汇总报告。“举报网址”将包含“/debug/”以及“报告正文”的 aggregation_coordinator_origin field
将包含以下网址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。
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
中,然后保存您的文件。
完成上述操作后,使用 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
文件,您需要可从报告中检索到的存储分区键。
桶键由 adTech 设计。不过,在这种情况下,存储分区密钥由 Privacy Sandbox 演示网站创建。由于此网站的不公开汇总处于调试模式,因此我们可以使用“报告正文”中的 debug_cleartext_payload
以获取存储分区密钥。
接下来,从报告正文中复制 debug_cleartext_payload
。
打开 goo.gle/ags-payload-decoder,然后将您的 debug_cleartext_payload
粘贴到“INPUT”中框并点击“解码”。
页面返回存储分区键的小数值。以下是一个示例存储分区键。
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
。
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
报告。
Codelab 已完成!
摘要:您已收集调试报告,构建了输出网域文件,并使用本地测试工具生成了摘要报告(模拟了汇总服务的汇总行为)。
后续步骤:现在,您已经试用了本地测试工具,接下来可以在您自己的环境中实时部署汇总服务,尝试执行相同的操作。重新查看前提条件,确保您已为“汇总服务”完成所有设置,然后继续执行第 3 步。
3. 3. 汇总服务 Codelab
预计完成时间:1 小时
在开始之前,请确保您已完成带有“汇总服务”标签的所有前提条件。
Codelab 步骤
第 3.1 步:Aggregation Service Input Creation:创建为 Aggregation Service 进行批处理的汇总服务报告。
- 第 3.1.1 步:触发器报告
- 第 3.1.2 步:收集可汇总的报告
- 第 3.1.3 步:将报告转换为 AVRO
- 第 3.1.4 步:创建 output_domain AVRO
- 第 3.1.5 步:将报告移至 Cloud Storage 存储分区
第 3.2 步:Aggregation Service Usage:使用 Aggregation Service API 创建摘要报告并查看摘要报告。
- 第 3.2.1 步:使用
createJob
端点进行批处理 - 第 3.2.2 步:使用
getJob
端点检索批量状态 - 第 3.2.3 步:查看汇总报告
3.1. 创建汇总服务输入
继续创建 AVRO 报告,以便将其批量发送到汇总服务。这些步骤中的 shell 命令可以在 GCP 的 Cloud Shell 中运行(只要“前提条件”中的依赖项克隆到您的 Cloud Shell 环境中),或在本地执行环境中运行。
3.1.1. 触发器报告
点击链接前往该网站;然后,您可以在 chrome://private-aggregation-internals
上查看这些报告:
发送到 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage
端点的报告也可以在“报告正文”中找到Chrome 内部报告页面上显示的部分报告。
在这里,您可能会看到许多报告,但对于此 Codelab,请使用由调试端点生成的 GCP 专用可汇总报告。“举报网址”将包含“/debug/”以及“报告正文”的 aggregation_coordinator_origin field
将包含以下网址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。
3.1.2. 收集可汇总的报告
从相应 API 的 .well-known 端点收集可汇总报告。
- 不公开汇总:
{reporting-origin}/.well-known/private-aggregation/report-shared-storage
- 归因报告 - 摘要报告:
{reporting-origin}/.well-known/attribution-reporting/report-aggregate-attribution
对于此 Codelab,我们将手动执行报告收集。在生产环境中,广告技术人员应以编程方式收集并转换报告。
接下来,复制“报告正文”中的 JSON 报告chrome://private-aggregation-internals
起。
在本示例中,我们使用 vim,因为我们使用的是 linux。不过,您可以根据需要使用任何文本编辑器。
vim report.json
将报告粘贴到 report.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
文件,您需要可从报告中检索到的存储分区键。
桶键由 adTech 设计。不过,在这种情况下,存储分区密钥由 Privacy Sandbox 演示网站创建。由于此网站的不公开汇总处于调试模式,因此我们可以使用“报告正文”中的 debug_cleartext_payload
以获取存储分区密钥。
接下来,从报告正文中复制 debug_cleartext_payload
。
打开 goo.gle/ags-payload-decoder,然后将您的 debug_cleartext_payload
粘贴到“INPUT”中框并点击“解码”。
页面返回存储分区键的小数值。以下是一个示例存储分区键。
现在我们有了存储分区键,让我们在之前使用的文件夹中创建 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. 汇总服务使用情况
请记住,在前提条件 1.8 中,您已选择向汇总服务端点发出 API 请求,而选择了 c网址 或 Postman。您可以在下面找到有关这两个选项的说明。
如果您的作业因错误而失败,请查看我们在 GitHub 中的问题排查文档,详细了解如何继续操作。
3.2.1. 使用 createJob
端点进行批处理
按照下面的 c网址 或 Postman 说明创建作业。
cURL
在“终端”中,创建请求正文文件 (body.json
),然后将其粘贴到以下内容中。请务必更新占位值。如需详细了解每个字段所代表的含义,请参阅此 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>",
"reporting_site": "<domain of reporting origin(s) of report>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
"report_error_threshold_percentage": "10",
"debug_run": "true"
}
}
执行以下请求。将 c网址 请求网址中的占位符替换为 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>/<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>", // Only one of attribution_report_to or reporting_site is required as of v2.7.0
"report_error_threshold_percentage": "10",
"debug_run": "true"
}
}
“发送”createJob
API 请求:
响应代码位于网页的下半部分:
汇总服务接受请求后,您应该会收到 HTTP 202 响应。API 规范中介绍了其他可能的响应代码。
3.2.2. 使用 getJob
端点检索批量状态
按照下面的 c网址 或 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_status
、return_message
和 error_messages
等必要信息(如果作业出错)。
Postman
如需检查作业请求的状态,您可以使用 getJob
端点。在“参数”中部分中,将 job_request_id
值更新为 createJob
请求中发送的 job_request_id
。getJob
“发送”getJob
请求:
结果应返回 HTTP 状态为 200 的作业请求状态。请求“正文”包含 job_status
、return_message
和 error_messages
等必要信息(如果作业出错)。
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
中的“debug”文件夹中收到摘要报告。报告采用 AVRO 格式,可以使用上述命令将其转换为 JSON。
该报告包含桶键、未添加噪声的指标,以及添加到不带噪声的指标以生成摘要报告的噪声。报告类似于以下内容。
这些注释还包含“in_reports”和/或“in_domain”也就是说:
- in_reports - 存储分区键在可汇总报告中可用。
- in_domain - 存储分区密钥可在 output_domain AVRO 文件中找到。
Codelab 已完成!
摘要:您已在自己的云环境中部署了汇总服务,收集了调试报告,构建了输出网域文件,将这些文件存储在了 Cloud Storage 存储分区中,并且成功运行了作业!
后续步骤:继续在您的环境中使用汇总服务,或按照第 4 步中的清理说明删除刚刚创建的云资源。
4. 4. 清理
如需通过 Terraform 删除为聚合服务创建的资源,请在 adtech_setup
和 dev
(或其他环境)文件夹中使用 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