在 Google Cloud Platform (GCP) 上使用匯總服務

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」= 已啟用

啟用 Cookie

1.3. 下載本機測試工具 (本機測試)

您必須下載本機測試工具才能進行本機測試。這項工具會根據未加密的偵錯報表產生摘要報表。

您可以在 GitHub 中的 Cloud Function JAR 封存檔下載本機測試工具。其名稱應為 LocalTestingTool_{version}.jar

1.4. 確認已安裝 JAVA JRE (本機測試和匯總服務)

開啟「Terminal」,然後使用 java --version 檢查機器是否已安裝 Java 或 openJDK。

檢查 Java 版本

如果尚未安裝,您可以前往 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 資源。

部署作業操作說明中的重點步驟:

  1. 在環境中設定「gcloud」CLI 和 Terraform。
  2. 建立 Cloud Storage 值區,以儲存 Terraform 狀態。
  3. 下載依附元件。
  4. 更新 adtech_setup.auto.tfvars 並執行 adtech_setup Terraform。如需 adtech_setup.auto.tfvars 檔案範例,請參閱附錄。請記下這裡建立的資料值區名稱,我們會在程式碼研究室中使用這個名稱來儲存我們建立的檔案。
  5. 更新 dev.auto.tfvars、模擬部署服務帳戶,然後執行 dev Terraform。如需 dev.auto.tfvars 檔案範例,請參閱附錄。
  6. 部署完成後,請從 Terraform 輸出中擷取 frontend_service_cloudfunction_url,因為您在後續步驟中需要用來向匯總服務提出要求。

1.7. 完成匯總服務新手上路程序 (匯總服務)

匯總服務需要透過協調員才能使用。填寫匯總服務新手上路表單,提供報表網站和其他資訊,選取「Google Cloud」,然後輸入服務帳戶地址。這個服務帳戶是在先前的必要條件 (1.6. 設定 GCP 環境)。(提示:如果您使用我們提供的預設名稱,這個服務帳戶的開頭會是「worker-sa@」)。

設定流程最多可能需要 2 週才能完成。

1.8. 決定呼叫 API 端點的方法 (匯總服務)

本程式碼研究室提供 2 種呼叫匯總服務 API 端點的方法:cURLPostman。cURL 是從終端呼叫 API 端點的快速簡便方法,因為只需要最少的設定,而且不需要額外軟體。不過,如果您不想使用 cURL,可以改用 Postman 執行及儲存 API 要求,以供日後使用。

在第 3.2 節中,匯總服務用途,您將找到使用這兩種選項的詳細操作說明。您可以現在預覽這些內容,決定要使用哪一種方法。如果您選取 Postman,請執行下列初始設定。

1.8.1. 設定工作區

註冊 Postman 帳戶。註冊後,系統會自動為你建立工作區。

Postman Workspace

如果系統尚未為您建立工作區,請前往頂端導覽項目中的「工作區」,然後選取「建立工作區」。

選取「空白工作區」,按一下「下一步」,然後將其命名為「GCP Privacy Sandbox」。選取「個人」並按一下「建立」。

下載預先設定的JSON 設定全域環境檔案

透過「Import」按鈕,將兩個 JSON 檔案匯入「My Workspace」。

匯入按鈕

系統會為您建立「GCP Privacy Sandbox」集合,以及 createJobgetJob 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://--frontend-service--uc.a.run.app

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 查看報表:

Chrome 內部頁面

傳送至 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage 端點的報表也會顯示在 Chrome 內部頁面上顯示的報表「報表內容」中。

您可能會在這裡看到許多報表,但在本程式碼研究室中,請使用由偵錯端點產生的 GCP 專屬可匯總報表。「報表網址」會包含「/debug/」,而「報表主體」的 aggregation_coordinator_origin field 會包含以下網址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。

GCP 偵錯報表

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 中,然後儲存檔案。

回報 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

輸出 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

輸出 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 查看報表:

Chrome 內部頁面

傳送至 {reporting-origin}/.well-known/private-aggregation/debug/report-shared-storage 端點的報表也會顯示在 Chrome 內部頁面上顯示的報表「報表內容」中。

您可能會在這裡看到許多報表,但在本程式碼研究室中,請使用由偵錯端點產生的 GCP 專屬可匯總報表。「報表網址」會包含「/debug/」,而「報表主體」的 aggregation_coordinator_origin field 會包含以下網址:https://publickeyservice.msmt.gcp.privacysandboxservices.com。

GCP 偵錯報表

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 中,然後儲存檔案。

回報 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」分頁:

「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_statusreturn_messageerror_messages (如果工作發生錯誤)。

Postman

如要查看工作要求的狀態,您可以使用 getJob 端點。在 getJob 要求的「Params」部分,將 job_request_id 值更新為 createJob 要求中傳送的 job_request_id

工作要求 ID

「傳送」getJob 要求:

[傳送] 按鈕

結果應會傳回工作要求的狀態,並附上 HTTP 狀態 200。要求的「Body」包含必要資訊,例如 job_statusreturn_messageerror_messages (如果工作發生錯誤)。

回應 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:bucket 索引鍵可在 output_domain AVRO 檔案中使用。

程式碼研究室已完成!

摘要:您已在自己的雲端環境中部署了匯總服務、收集偵錯報告、建構輸出網域檔案、將這些檔案儲存在 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