1. 1. 先決條件
預計完成時間:1 到 2 小時
您可以透過 2 種模式執行這個程式碼研究室:本機測試或匯總服務。本機測試模式需要本機電腦和 Chrome 瀏覽器 (不需建立/使用 Google Cloud 資源)。匯總服務模式需要在 Google Cloud 上完整部署匯總服務。
無論您在哪種模式下執行本程式碼研究室,都需要符合一些先決條件。每項必要條件都會標示是否適用於本機測試或匯整服務。
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 Function 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 環境 (匯總服務)
匯總服務必須使用採用雲端服務供應商的受信任執行環境。在本程式碼研究室中,匯總服務會部署在 GCP 中,但也支援 AWS。
請按照 GitHub 中的部署操作說明設定 gcloud CLI、下載 Terraform 二進位檔和模組,以及為匯總服務建立 GCP 資源。
部署作業操作說明中的重點步驟:
- 在環境中設定「gcloud」CLI 和 Terraform。
- 建立 Cloud Storage 值區,以儲存 Terraform 狀態。
- 下載依附元件。
- 更新
adtech_setup.auto.tfvars
並執行adtech_setup
Terraform。如需adtech_setup.auto.tfvars
檔案範例,請參閱附錄。請記下這裡建立的資料值區名稱,我們會在程式碼研究室中使用這個名稱來儲存我們建立的檔案。 - 更新
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 端點的方法 (匯總服務)
本程式碼研究室提供 2 種呼叫匯總服務 API 端點的方法:cURL 和 Postman。cURL 是從終端呼叫 API 端點的快速簡便方法,因為只需要最少的設定,而且不需要額外軟體。不過,如果您不想使用 cURL,可以改用 Postman 執行及儲存 API 要求,以供日後使用。
在第 3.2 節中,匯總服務用途,您將找到使用這兩種選項的詳細操作說明。您可以現在預覽這些內容,決定要使用哪一種方法。如果您選取 Postman,請執行下列初始設定。
1.8.1. 設定工作區
註冊 Postman 帳戶。註冊後,系統會自動為你建立工作區。
如果系統尚未為您建立工作區,請前往頂端導覽項目中的「工作區」,然後選取「建立工作區」。
選取「空白工作區」,按一下「下一步」,然後將其命名為「GCP Privacy Sandbox」。選取「個人」並按一下「建立」。
透過「Import」按鈕,將兩個 JSON 檔案匯入「My Workspace」。
系統會為您建立「GCP Privacy Sandbox」集合,以及 createJob
和 getJob
HTTP 要求。
1.8.2. 設定授權
按一下「GCP Privacy Sandbox」集合,然後前往「授權」分頁。
您將使用「Bearer Token」方法。在終端機環境中執行這項指令,並複製輸出內容。
gcloud auth print-identity-token
接著,將這個權杖值貼到 Postman 授權分頁的「權杖」欄位中:
1.8.3. 設定環境
前往右上角的「環境快速檢視」:
按一下「編輯」,然後更新「環境」、「region」和「cloud-function-id」的「Current Value」:
您可以先將「request-id」留空,我們會稍後填入。針對其他欄位,請使用 frontend_service_cloudfunction_url
的值,該值是在先決條件 1.6 中成功完成 Terraform 部署後傳回。網址格式如下:https://
2. 2. 本機測試程式碼研究室
預計完成時間:<1 小時
您可以使用電腦上的本機測試工具,使用未加密的偵錯報表執行匯總並產生摘要報表。開始前,請務必完成所有標示為「本機測試」的先決條件。
程式碼研究室步驟
步驟 2.1. 觸發報表:觸發私人匯總報表,以便收集報表。
步驟 2.2. 建立偵錯 AVRO 報表:將收集到的 JSON 報表轉換為 AVRO 格式的報表。這個步驟與廣告技術從 API 報表端點收集報表,並將 JSON 報表轉換為 AVRO 格式報表的步驟類似。
步驟 2.3. 擷取值區鍵:值區鍵是由 adTech 設計。在本程式碼研究室中,由於值區是預先定義的,請擷取提供的值區鍵。
步驟 2.4. 建立輸出網域 AVRO:擷取到資料夾鍵後,請建立輸出網域 AVRO 檔案。
步驟 2.5. 建立摘要報表:使用本機測試工具,即可在本機環境中建立摘要報表。
步驟 2.6. 查看摘要報表:查看當地測試工具建立的摘要報表。
2.1. 觸發條件報表
如要觸發私人匯總報表,您可以使用 Privacy Sandbox 示範網站 (https://privacy-sandbox-demos-news.dev/?env=gcp) 或您自己的網站 (例如 https://adtechexample.com)。如果您使用的是自有網站,且尚未完成註冊和認證,以及匯總服務的啟用程序,就必須使用 Chrome 旗標和 CLI 切換鈕。
在本示範中,我們會使用 Privacy Sandbox 示範網站。點選連結前往網站,然後在 chrome://private-aggregation-internals
查看報表:
傳送至 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage
端點的報表也會顯示在 Chrome 內部頁面上顯示的報表「報表內容」中。
您可能會在這裡看到許多報表,但在本程式碼研究室中,請使用由偵錯端點產生的 GCP 專屬可匯總報表。「報表網址」會包含「/debug/」,而「報表主體」的 aggregation_coordinator_origin field
會包含以下網址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。
2.2. 建立可匯總的偵錯報表
複製 chrome://private-aggregation-internals
的「Report Body」中找到的報表,並在 privacy-sandbox-demos/tools/aggregatable_report_converter/out/artifacts/aggregatable_report_converter_jar
資料夾 (在「Prerequisite 1.5」中下載的 repo 中) 建立 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
檔案,您需要從報表擷取值區鍵。
值區間鍵是由廣告技術設計。不過,在本例中,Privacy Sandbox 示範網站會建立值區鍵。由於這個網站的私人匯總資料處於偵錯模式,我們可以使用「報表內容」中的 debug_cleartext_payload
取得值區鍵。
請從報表內文複製 debug_cleartext_payload
。
開啟 goo.gle/ags-payload-decoder,然後在「輸入」方塊中貼上 debug_cleartext_payload
,並按一下「解碼」。
這個頁面會傳回值區塊鍵的小數值。以下是值區鍵的範例。
2.4. 建立輸出網域 AVRO
有了值區鍵後,我們就會在目前使用的資料夾中建立 output_domain.avro
。請務必將 bucket 鍵取代為您擷取的 bucket 鍵。
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 格式。理想情況下,adTech 應編寫程式碼,將 AVRO 報表轉換回 JSON。
我們將使用 aggregatable_report_converter.jar
將 AVRO 報表轉換回 JSON。
java -jar aggregatable_report_converter.jar \
--request_type convertToJson \
--input_file output.avro
這會傳回類似以下的報表。以及在同一個目錄中建立的報表 output.json
。
程式碼研究室已完成!
摘要:您已收集偵錯報表、建構輸出網域檔案,並使用本機測試工具 (模擬匯總服務的匯總行為) 產生摘要報表。
後續步驟:現在您已嘗試本機測試工具,可以嘗試在自己的環境中,針對匯總服務的即時部署執行相同的操作。請再次查看前置條件,確認您已為「匯總服務」模式設定所有內容,然後繼續進行步驟 3。
3. 3. 匯總服務程式碼研究室
預計完成時間:1 小時
開始前,請確認您已完成所有標示為「匯總服務」的先決條件。
程式碼研究室步驟
步驟 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. 匯總服務用途:使用 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 內部頁面上顯示的報表「報表內容」中。
您可能會在這裡看到許多報表,但在本程式碼研究室中,請使用由偵錯端點產生的 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
在本程式碼研究室中,我們會手動執行報表收集作業。在實際工作環境中,廣告技術應以程式輔助方式收集及轉換報表。
我們現在就來複製 chrome://private-aggregation-internals
中的「報表內文」JSON 報表。
在本範例中,我們使用 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
檔案,您需要從報表擷取值區鍵。
值區間鍵是由廣告技術設計。不過,在本例中,Privacy Sandbox 示範網站會建立值區鍵。由於這個網站的私人匯總資料處於偵錯模式,我們可以使用「報表內容」中的 debug_cleartext_payload
取得值區鍵。
請從報表內文複製 debug_cleartext_payload
。
開啟 goo.gle/ags-payload-decoder,然後在「輸入」方塊中貼上 debug_cleartext_payload
,並按一下「解碼」。
這個頁面會傳回值區塊鍵的小數值。以下是值區鍵的範例。
有了值區鍵後,我們可以在先前使用的資料夾中建立 output_domain.avro
。請務必將 bucket 鍵取代為您擷取的 bucket 鍵。
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 中,您選用了 cURL 或 Postman,用於向匯總服務端點提出 API 要求。請參閱下方兩種選項的操作說明。
如果工作因錯誤而失敗,請參閱 GitHub 中的疑難排解說明文件,進一步瞭解如何繼續操作。
3.2.1. 使用 createJob
端點進行批次處理
請按照下方的 cURL 或 Postman 操作說明建立工作。
cURL
在「Terminal」中建立要求主體檔案 (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"
}
}
執行下列要求。將 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
要求的「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"
}
}
「傳送」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。要求的「Body」包含必要資訊,例如 job_status
、return_message
和 error_messages
(如果工作發生錯誤)。
Postman
如要查看工作要求的狀態,您可以使用 getJob
端點。在 getJob
要求的「Params」部分,將 job_request_id
值更新為 createJob
要求中傳送的 job_request_id
。
「傳送」getJob
要求:
結果應會傳回工作要求的狀態,並附上 HTTP 狀態 200。要求的「Body」包含必要資訊,例如 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
中的偵錯資料夾中收到摘要報表。這份報表採用 AVRO 格式,可使用上述指令轉換為 JSON。
報表包含值區鍵、未經雜訊處理的指標,以及加入至未經雜訊處理指標的雜訊,以便形成摘要報表。報表會類似下方內容。
註解也包含「in_reports」和/或「in_domain」,代表以下意思:
- in_reports - 可匯總報表內的桶值鍵。
- in_domain:bucket 索引鍵可在 output_domain AVRO 檔案中使用。
程式碼研究室已完成!
摘要:您已在自己的雲端環境中部署了匯總服務、收集偵錯報告、建構輸出網域檔案、將這些檔案儲存在 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