在 Cloud Run 中建構及建立 Python 工作
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
前往「IAM」頁面 - 選取專案。
- 按一下「授予存取權」 。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是 Google 帳戶的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下 「新增其他角色」,然後新增每個其他角色。
- 按一下 [Save]。
Install the Google Cloud CLI.
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
前往「IAM」頁面 - 選取專案。
- 按一下「授予存取權」 。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是 Google 帳戶的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下 「新增其他角色」,然後新增每個其他角色。
- 按一下 [Save]。
Install the Google Cloud CLI.
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
啟用 Cloud Run Admin API 和 Cloud Build API:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
啟用 Cloud Run Admin API 後,系統會自動建立 Compute Engine 預設服務帳戶。
-
請確認您已獲得服務身分的服務帳戶使用者角色。根據預設,服務身分是 Compute Engine 預設服務帳戶。
授予角色
如要授予服務身分資源的存取權,請使用
gcloud iam service-accounts add-iam-policy-binding
指令,並將醒目顯示的變數替換為適當的值:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
更改下列內容:
- SERVICE_ACCOUNT_EMAIL:您用來做為服務身分的服務帳戶電子郵件地址,例如:
- Compute Engine 預設服務帳戶:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- 您建立的服務帳戶:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- Compute Engine 預設服務帳戶:
- PRINCIPAL:使用者 ID。這通常是 Google 帳戶的電子郵件地址。
- SERVICE_ACCOUNT_EMAIL:您用來做為服務身分的服務帳戶電子郵件地址,例如:
- 將下列 IAM 角色授予 Cloud Build 服務帳戶。
按一下即可查看 Cloud Build 服務帳戶的必要角色
除非您覆寫這項行為,否則 Cloud Build 會自動使用 Compute Engine 預設服務帳戶做為預設的 Cloud Build 服務帳戶,建構您的原始碼和 Cloud Run 資源。如要讓 Cloud Build 建構來源,請要求管理員將 Cloud Run Builder (
roles/run.builder
) 授予專案中的 Compute Engine 預設服務帳戶:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
請將
PROJECT_NUMBER
替換為專案編號,並將PROJECT_ID
替換為專案 ID。 Google CloudGoogle Cloud如需如何找出專案 ID 和專案編號的詳細操作說明,請參閱「建立及管理專案」。將 Cloud Run 建構者角色授予 Compute Engine 預設服務帳戶後,需要幾分鐘才能傳播。
建立名為
jobs
的新目錄,然後將目錄變更為該目錄:mkdir jobs cd jobs
為實際工作程式碼建立
main.py
檔案。將下列範例行複製到檔案中:使用者可以透過 Cloud Run 工作指定工作要執行的工作數量。這個程式碼範例說明如何使用內建的
CLOUD_RUN_TASK_INDEX
環境變數。每個工作都代表一個正在執行的容器副本。 請注意,工作通常會並行執行。如果每個工作都能獨立處理部分資料,使用多個工作就很有幫助。每項工作都會知道自己的索引,並儲存在
CLOUD_RUN_TASK_INDEX
環境變數中。內建的CLOUD_RUN_TASK_COUNT
環境變數包含透過--tasks
參數在工作執行時間提供的任務數量。程式碼也顯示如何使用內建的
CLOUD_RUN_TASK_ATTEMPT
環境變數重試工作。這個變數包含這項工作重試的次數,第一次嘗試時為 0,每次重試都會遞增 1,最多為--max-retries
。您也可以透過這段程式碼產生失敗,測試重試機制並產生錯誤記錄,瞭解錯誤記錄的樣貌。
建立名為
Procfile
的文字檔 (不含副檔名),並在當中加入下列內容:
撰寫範例工作
如要以 Python 編寫工作,請按照下列步驟操作:
程式碼已完成,可以封裝在容器中。
建構工作容器、傳送至 Artifact Registry,並部署至 Cloud Run
重要事項:本快速入門導覽課程假設您在用於快速入門導覽課程的專案中,具備擁有者或編輯者角色。否則,請參閱 Cloud Run Source Developer 角色,瞭解從來源部署 Cloud Run 資源所需的權限。
本快速入門導覽課程會使用從來源部署功能,建構容器、將容器上傳至 Artifact Registry,並將工作部署至 Cloud Run:
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
其中 PROJECT_ID 是您的專案 ID,REGION 則是您的區域,例如 europe-west1
。請注意,您可以將各種參數變更為您想用於測試的值。SLEEP_MS
會模擬工作,並導致 X
% 的工作失敗,方便您實驗平行處理和重試失敗工作。FAIL_RATE
在 Cloud Run 中執行工作
如要執行剛建立的工作,請按照下列指示操作:
gcloud run jobs execute job-quickstart --region REGION
將 REGION 替換為您在建立及部署工作時使用的區域,例如 europe-west1
。
後續步驟
如要進一步瞭解如何從程式碼來源建構容器並推送至存放區,請參閱: