本頁說明如何解決使用 Eventarc 時可能遇到的問題。
如要瞭解你可能遇到的特定目的地問題,請參閱下列排解疑難文章:
Eventarc 提供者
本節提供疑難排解提示,協助解決事件來源 (供應商) 的問題。
提供者不存在
請確認供應者是否存在,以及您是否已適當指定觸發條件篩選器。
供應商產生了事件,但目標未收到
請確認您篩選的事件來自目標目的地支援區域的供應商。詳情請參閱 Eventarc 支援的位置和瞭解 Eventarc 位置。
觸發條件未傳送事件
確認供應商是否正在產生事件。檢查 Cloud 稽核記錄,確認受監控的服務正在寫入記錄。如果系統已記錄記錄檔,但未傳送事件,請與支援團隊聯絡。
確認是否有相同觸發條件名稱的 Pub/Sub 主題。
如要列出所有位置的觸發條件,請執行下列指令:
gcloud eventarc triggers list --location=-
如要列出 Pub/Sub 主題,請執行下列指令:
gcloud pubsub topics list
確認 Pub/Sub 主題名稱包含所建立觸發條件的名稱。如果缺少 Pub/Sub 主題,請在建立觸發程序時建立主題。
如要說明觸發條件並偵測觸發條件狀態的任何問題,請執行下列指令:
gcloud eventarc triggers describe TRIGGER_ID \ --location=LOCATION
更改下列內容:
TRIGGER_ID
:觸發條件的 ID 或完整 ID。LOCATION
:Eventarc 觸發條件的位置。
上述指令會傳回觸發條件。如果 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 主題的健康狀態:
確認 Pub/Sub 主題設定。前往「Topics」(主題)頁面。
監控訊息是否發布至主題 (使用以下指標):
topic/send_message_operation_count
。如果訊息未發布至主題,請檢查 Cloud 稽核記錄,並確認受監控的服務是否發出記錄。如果系統已記錄記錄檔,但未傳送事件,請與支援團隊聯絡。監控訊息是否已順利推送,方法是查看
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 專案中,且具備必要角色,請完成下列步驟:
前往 Google Cloud 控制台的「IAM」頁面。
在「權限」分頁中,選取「包含 Google 提供的角色授予項目」核取方塊。
在主體清單中,找出 Eventarc 服務代理程式,格式如下:
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
確認服務代理人具備 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 金鑰:
描述 Eventarc 觸發條件:
gcloud eventarc triggers describe TRIGGER_ID \ --location=LOCATION
更改下列內容:
TRIGGER_ID
:Eventarc 觸發程序的 IDLOCATION
:觸發條件的位置系統會傳回 Pub/Sub 主題 ID。例如:
topic: projects/PROJECT_ID/topics/TOPIC_ID
說明 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的帳單控制台設定預算和快訊。詳情請參閱「設定預算」。
相關資訊
- 如要進一步瞭解 Eventarc,請參閱總覽。
- 如需 Eventarc 疑難排解教學課程,請參閱「使用 Eventarc 針對 Cloud Run 服務進行偵錯」。
- 如要排解活動發布問題,請參閱「排解活動發布問題」。
- 如需其他協助,請參閱「取得支援」一文。