排解問題

本頁說明如何解決使用 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 主題設定。前往「主題」頁面。

      前往「主題」

    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 角色。詳情請參閱「使用 IAM 控管存取權」。

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

    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) 的 Identity and Access Management (IAM) 權限。

    如果再次嘗試建立資源後,仍發生先前的錯誤,請完成下列步驟,確認 Eventarc 服務代理程式存在於 Google Cloud 專案中,且具備必要角色:

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

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

    2. 在「按照主體查看」分頁標籤中,選取「包含 Google 提供的角色授予項目」核取方塊。
    3. 在主體清單中,找出 Eventarc 服務代理程式,格式如下:

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

    4. 確認服務代理程式是否具備「Eventarc 服務代理程式」角色。如果服務代理沒有該角色,請授予角色。

  • 如果您嘗試使用跨專案服務帳戶,但遇到 iam.serviceAccounts.getAccessToken 或 iam.serviceAccounts.actAs 的權限遭拒錯誤,或是收到類似 ...cross-project service accounts are disabled 或 Failed 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的帳單控制台設定預算和快訊。詳情請參閱「建立預算」。