疑難排解

本頁說明如何解決使用 Eventarc 時可能遇到的問題。

如要瞭解你可能遇到的特定目的地問題,請參閱下列排解疑難文章:

Eventarc 提供者

本節提供疑難排解提示,協助解決事件來源 (供應商) 的問題。

提供者不存在

請確認供應者是否存在,以及您是否已適當指定觸發條件篩選器

供應商產生了事件,但目標未收到

請確認您篩選的事件來自目標目的地支援區域的供應商。詳情請參閱 Eventarc 支援的位置瞭解 Eventarc 位置

觸發條件未傳送事件

  1. 確認供應商是否正在產生事件。檢查 Cloud 稽核記錄,確認受監控的服務正在寫入記錄。如果系統已記錄記錄檔,但未傳送事件,請與支援團隊聯絡

  2. 確認是否有相同觸發條件名稱的 Pub/Sub 主題。

    1. 如要列出所有位置的觸發條件,請執行下列指令:

      gcloud eventarc triggers list --location=-
      
    2. 如要列出 Pub/Sub 主題,請執行下列指令:

      gcloud pubsub topics list
      

      確認 Pub/Sub 主題名稱包含所建立觸發條件的名稱。如果缺少 Pub/Sub 主題,請在建立觸發程序時建立主題

    3. 如要說明觸發條件並偵測觸發條件狀態的任何問題,請執行下列指令:

      gcloud eventarc triggers describe TRIGGER_ID \
        --location=LOCATION
      

      更改下列內容:

      • TRIGGER_ID:觸發條件的 ID 或完整 ID。
      • LOCATION:Eventarc 觸發條件的位置。
    4. 上述指令會傳回觸發條件。如果 Pub/Sub 主題有問題,系統會傳回下列其中一個條件:

      conditions:
      transport.pubsub.topic:
        code: NOT_FOUND
        message: Pub/Sub topic not found. Try recreating the trigger.

      conditions:
      transport.pubsub.topic:
        code: UNKNOWN
        message: Pub/Sub topic status is unknown. Try requesting the trigger description again.

      請按照下列指示操作 (如適用):

      • 如果傳回 Pub/Sub topic not found,請為特定提供者、事件類型和目的地重新建立觸發條件](/eventarc/standard/docs/event-providers-targets#triggers),然後建立主題。

      • 如果傳回 Pub/Sub topic status is unknown,請再次執行指令來描述觸發條件。

      • 如果問題仍未解決,請聯絡支援團隊。 詳情請參閱「管理觸發條件」。

  3. 確認 Pub/Sub 主題的健康狀態:

    1. 確認 Pub/Sub 主題設定。前往「Topics」(主題)頁面。

      前往「主題」

    2. 監控訊息是否發布至主題 (使用以下指標):topic/send_message_operation_count。如果訊息未發布至主題,請檢查 Cloud 稽核記錄,並確認受監控的服務是否發出記錄。如果系統已記錄記錄檔,但未傳送事件,請與支援團隊聯絡

    3. 監控訊息是否已順利推送,方法是查看 subscription/push_request_count (依 response_code) 指標。如果系統回報推送錯誤,請檢查服務記錄。如果接收端點傳回非 OK 狀態碼,表示 Cloud Run 程式碼無法正常運作,您必須與支援團隊聯絡

Eventarc 觸發條件

本節提供觸發程序問題的疑難排解提示。

權限遭拒錯誤

  • 如果遇到 Failed to load service details: permission denied 錯誤,請確認觸發條件權限設定正確無誤,且 Pub/Sub 服務帳戶已獲派 iam.serviceAccountTokenCreator 角色。詳情請參閱存取權控管一文。

  • 如果在嘗試建立觸發條件時遇到下列錯誤,請稍候幾分鐘 (最多七分鐘),然後再試一次:

    Permission denied while using the Eventarc Service Agent. If you recently
    started to use Eventarc, it may take a few minutes before all necessary
    permissions are propagated to the Service Agent. Otherwise, verify that it has
    Eventarc Service Agent role.
    

    服務代理程式會做為特定專案中特定 Google Cloud 服務的身分。詳情請參閱「服務代理程式」一文,並查看 Eventarc 服務代理程式角色 (roles/eventarc.serviceAgent) 的權限

    如要確認 Eventarc 服務代理存在於Google Cloud 專案中,且具備必要角色,請完成下列步驟:

    1. 前往 Google Cloud 控制台的「IAM」頁面。

      前往「身分與存取權管理」頁面

    2. 在「權限」分頁中,選取「包含 Google 提供的角色授予項目」核取方塊。

    3. 在主體清單中,找出 Eventarc 服務代理程式,格式如下:

      service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

    4. 確認服務代理人具備 Eventarc 服務代理人角色。如果服務代理沒有該角色,請授予角色

  • 如果您嘗試使用跨專案服務帳戶,但遇到 iam.serviceAccounts.getAccessTokeniam.serviceAccounts.actAs 的權限遭拒錯誤,或是收到類似 ...cross-project service accounts are disabledFailed to impersonate... 的錯誤訊息,請確認權限設定正確無誤。詳情請參閱「使用跨專案服務帳戶」。

Pub/Sub 主題未顯示 CMEK 金鑰

啟用使用客戶自行管理的加密金鑰 (CMEK) 的 Eventarc 管道,可保護 Eventarc Standard 用於傳輸層的 Pub/Sub 主題。不過,CMEK 金鑰不會透過Google Cloud 控制台顯示。您可以使用 Google Cloud CLI,確認 Pub/Sub 主題是否已啟用 CMEK 金鑰:

  1. 描述 Eventarc 觸發條件:

      gcloud eventarc triggers describe TRIGGER_ID \
          --location=LOCATION
    

    更改下列內容:

    • TRIGGER_ID:Eventarc 觸發程序的 ID
    • LOCATION:觸發條件的位置

      系統會傳回 Pub/Sub 主題 ID。例如:topic: projects/PROJECT_ID/topics/TOPIC_ID

  2. 說明 Pub/Sub 主題:

      gcloud pubsub topics describe TOPIC_ID
    

    TOPIC_ID 替換為上一個步驟中擷取的 Pub/Sub 主題 ID。

    系統會傳回 CMEK 金鑰名稱。例如:

      kmsKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/grants/GRANT_ID
    

使用 Eventarc 時產生預期外的費用

建立觸發條件時,請檢查設定的篩選器是否可能導致觸發條件無限期觸發。如要避免帳單產生非預期的費用,請使用 Google Cloud的帳單控制台設定預算和快訊。詳情請參閱「設定預算」。