疑難排解

本頁面說明如何解決使用 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,請針對特定提供者、事件類型和目的地重新建立觸發條件,然後建立主題。

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

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

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

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

      前往「主題」

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

    3. 監控是否成功透過 response_code 的指標 subscription/push_request_count 推送訊息。如果系統回報推送錯誤,請檢查服務記錄。如果接收端傳回的狀態碼不是「OK」,表示 Cloud Run 程式碼無法正常運作,您必須與支援團隊聯絡

Eventarc 觸發條件

本節提供觸發事件問題的疑難排解提示。

權限遭拒錯誤

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

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

    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) 的權限

    如要確認Google Cloud 專案中是否有 Eventarc 服務代理,且該代理具有必要的角色,請完成下列步驟:

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

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

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

    3. 在「Principals」清單中,找出 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 主題。不過,Google Cloud 控制台不會顯示 CMEK 金鑰。您可以使用 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的帳單資訊主控台設定預算和快訊。詳情請參閱「建立預算」。