使用驗證來搭配 HTTP 目標

如果您已設定具備適當憑證的相關聯服務帳戶,Cloud Scheduler 即可呼叫需要驗證的 HTTP 目標。

設定服務帳戶

  1. 識別可用於從 Cloud Scheduler 到 HTTP 目標的現有服務帳戶,或是針對此用途建立新的服務帳戶。這是用戶端服務帳戶。

  2. 如果您的目標是 GCP 的一部分,請授予用戶端服務帳戶必要的身分與存取權管理角色以進行更新。GCP 中的每項服務都需要不同的角色。比方說,您必須為 Cloud Run 新增 Cloud Run Invoker 角色等等。

  3. Cloud Scheduler 本身必須具備自己的服務帳戶,而且該帳戶須被授予 Cloud Scheduler Service Agent 角色,這樣才能代表您的用戶端服務帳戶產生可對目標進行驗證的標頭憑證。當您啟用 Cloud Scheduler API 時,系統即會自動建立 Cloud Scheduler 服務帳戶並授予此角色,但如果您是在 2019 年 3 月 19 日「之前」啟用 Cloud Scheduler API,則必須手動新增角色

透過驗證建立排程器工作

您必須將下列兩項資訊新增至 create-job 要求,才能建立使用驗證的工作:

  • 選擇使用的憑證類型
  • 識別用戶端服務帳戶的電子郵件地址

    使用主控台

    1. 如同以往指定頻率。
    2. 指定 HTTP 當做目標類型。
    3. 照常新增網址和方法。
    4. Auth header (驗證標頭) 下拉式選單選取憑證類型。
    5. Service account (服務帳戶) 文字方塊中新增用戶端服務帳戶電子郵件地址。

    圖片

    使用 gcloud

    語法:

     gcloud scheduler jobs create http ${JOB_ID} --schedule="every 10 mins" --uri=${URI} --oidc-service-account-email=${CLIENT_SERVICE_ACCOUNT_EMAIL}
    

    其中:

    1. ${JOB_ID} 是工作的名稱,在專案中不得重複。請注意,即使您刪除了關聯的工作,仍然不得在專案中再次使用此名稱。
    2. 時間表也稱為頻率或工作間隔,亦即執行工作的頻率,例如「每 3 小時」。您在這裡提供的字串可以是任何與 Crontab 相容的字串。熟悉舊版 App Engine Cron 的開發人員也可以使用 App Engine Cron 語法
    3. ${URI} 是端點的完整網址。
    4. --oidc-service-account-email--oauth-service-account-email 會定義憑證類型。
    5. ${CLIENT_SERVICE_ACCOUNT_EMAIL} 是用戶端服務帳戶的電子郵件地址。
    6. 您也可以使用 gcloud 指令列參考資料中所述的其他選項參數。

選擇憑證類型

Cloud Scheduler 會依據用戶端服務帳戶建立標頭憑證 (由電子郵件識別),並且透過 HTTPS 傳送至目標,以在 Cloud Scheduler 和 HTTP 目標之間進行驗證。您可以使用 OIDC 憑證 或 Oauth 憑證。一般狀況會使用 OIDC,但 *.googleapis.com 上託管的 Google API 除外,這些 API 預期會使用 OAuth 憑證。

手動將 Cloud Scheduler 服務代理人角色新增至您的 Cloud Scheduler 服務帳戶

如果您是在 2019 年 3 月 19 日之前啟用 Cloud Scheduler API,才需要執行此操作。

使用主控台

  1. GCP 專案「Settings」(設定) 頁面上找出專案的專案編號。
  2. 複製編號。
  3. 開啟「IAM」管理控制台頁面
  4. 按一下 Add (新增)。隨即會開啟 Add members (新增成員) 畫面。
  5. 在「New members」(新增成員) 文字方塊中,新增格式如下的電子郵件地址:

    service-[project-number]@gcp-sa-cloudscheduler.iam.gserviceaccount.com
    

    將上面的 [project-number] 換成您的專案編號。

  6. Select a role (請選擇角色) 下拉式選單中選擇 Service Management (服務管理) > Cloud Scheduler Service Agent (Cloud Scheduler 服務代理人)

  7. 按一下 Save (儲存)。

使用 gcloud

  1. 找出專案編號:

    gcloud projects describe [project-id] --format='table(projectNumber)'
    

    將 [project-id] 替換為您的專案 ID。

  2. 複製編號。

  3. 使用您複製的專案編號,將 Cloud Scheduler Service Agent 角色授予 Cloud Scheduler 服務帳戶:

    gcloud projects add-iam-policy-binding [project-id] --member serviceAccount:service-[project-number]@gcp-sa-cloudscheduler.iam.gserviceaccount.com --role roles/cloudscheduler.serviceAgent
    

    將上述 [project-id] 替換為您的專案 ID,然後將 [project-number] 替換成專案編號。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Scheduler 說明文件