瞭解實用的疑難排解步驟,解決您在使用 Cloud Healthcare API 時遇到的問題。
無法啟用 Cloud Healthcare API
在Google Cloud 專案中首次啟用 Cloud Healthcare API 時,您可能會遇到權限錯誤,表示您沒有權限為專案啟用 Google CloudAPI。
如要瞭解如何啟用 Google Cloud API (包括 Cloud Healthcare API),請參閱「啟用及停用 API」。
無法驗證 Cloud Healthcare API
呼叫 Cloud Healthcare API 時,您可能會收到一則錯誤訊息,指出您的「應用程式預設憑證」無法使用。
請參閱「驗證 API」一文,進一步瞭解如何設定應用程式預設憑證,或是如何手動將驗證憑證傳送至應用程式或指令。
缺少 Cloud Healthcare API 服務帳戶或 Healthcare Service Agent 角色
啟用 Cloud Healthcare API 並建立第一個資料集時,系統會自動建立 Cloud Healthcare 服務代理人服務帳戶。這是由 Google 代管的服務帳戶。您無法完全刪除該服務帳戶,但在特定情況下,該帳戶可能不會出現在 Identity and Access Management 頁面中,而您可能會遇到 Cloud Healthcare API 相關問題。
為了使 Cloud Healthcare API 正常運作並完成諸如發布及接收 Pub/Sub 訊息,或將指標寫入 Cloud Logging 等工作,Cloud Healthcare 服務代理人服務帳戶就必須存在,且必須具有 Healthcare 服務代理人 IAM 角色。
如果您遇到下列任一問題,可重新建立 Cloud Healthcare 服務代理人服務帳戶,或授予 Healthcare 服務代理人 IAM 角色:
- 您無法在 「身分與存取權管理」頁面中找到 Cloud Healthcare 服務代理人服務帳戶。
- 您可以找到 Cloud Healthcare 服務代理人服務帳戶,但其中不包含 Healthcare 服務代理人角色。
使用 Google Cloud CLI,透過服務帳戶的 ID (格式為 service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com
) 將 healthcare.serviceAgent
角色新增至 Cloud Healthcare Service Agent 服務帳戶。
如要重新建立服務帳戶或授予 Healthcare 服務代理人 IAM 角色,請執行 gcloud projects add-iam-policy-binding
指令。如要找出 PROJECT_ID 和 PROJECT_NUMBER,請參閱「識別專案」一文。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \ --role=roles/healthcare.serviceAgent
如果要求成功,命令提示字元就會顯示類似以下範例的訊息:
Updated IAM policy for project [PROJECT_ID]. bindings: ... - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com role: roles/healthcare.serviceAgent ... etag: VALUE version: VALUE
再次回到「Identity and Access Management 頁面」,並驗證以下內容:
- 「Member」欄包含
service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount
格式的服務帳戶 ID。 - 在與該「Member」(成員) 位於同一列的「Name」(名稱) 欄中,包含「Cloud Healthcare Service Agent」(Cloud Healthcare 服務代理人)。
- 在與該「Member」(成員) 位於同一列的「Role」(角色) 欄中,包含「Healthcare Service Agent」(Healthcare 服務代理人)。
因累積大量負載而中止 FHIR 交易套件
執行 FHIR 交易套件時,您可能會收到錯誤訊息,指出要求「因執行交易套件的累積負載過大而中止」。
執行交易包時,您可以建立的鎖定爭用情況數量沒有限制。舉例來說,如果您建構一組套件,其中每個套件都會更新單一常見的病患資源,並建立一些非常見的其他資源,然後並行執行這些資源,由於每個套件都必須在整個交易中鎖定該常見病患,因此所需時間會迅速增加。因此,這些作業會開始逾時。當 Cloud Healthcare API 偵測到交易套件逾時時,會暫時拒絕所有交易套件,並顯示這則錯誤訊息,以便清除競爭狀態。
如要避免這個問題,請嘗試下列任一做法:
- 如果不需要交易語意,請使用批次套件。批次套件並非不可分割,因此可完全避免這個問題。不過,這會降低參照完整性強制執行功能。
- 如果您可以找出哪些資源正在並行更新,請判斷是否可以排除或避免這些更新。在 FHIR 中,如果您建立 Observation 等新資源,並且更新已存在且不會變更的相關患者 (或機構、位置、裝置等),就會發生這種情況。
- 在用戶端設定頻率限制:如果交易套件執行時間過長,請在要求開始逾時前降低擷取率。