傳入佈建 API 問題疑難排解

簡介

本文件涵蓋輸入佈建 API 的常見錯誤和問題,以及如何進行疑難排解。

疑難排解案例

無效的資料格式

問題描述

  • 您收到錯誤訊息 Invalid Data Format,HTTP 回應碼為 400(錯誤的要求)。

可能的原因

  1. 您會根據佈建 /bulkUpload API 規格傳送有效的大量要求,但尚未將 HTTP 要求標頭「Content-Type」設定為 application/scim+json。
  2. 您傳送的批次請求不符合佈建 /bulkUpload API 規格。

解決方法:

  1. 確定 HTTP 要求已將 Content-Type 標頭設定為值 application/scim+json。
  2. 請確保大量請求酬載符合佈建 /bulkUpload API 規格。

佈建記錄中沒有任何記錄

問題描述

  • 您已將要求傳送至佈建 /bulkUpload API 端點,而且您收到 HTTP 202 回應碼,但佈建記錄中沒有對應至要求的資料。

可能的原因

  1. 您的 API 驅動佈建應用程式已暫停。
  2. 佈建服務尚未將大量要求處理的詳細資料更新至佈建記錄檔中。
  3. 您的內部部署布建代理程式狀態為非使用中(如果您正在執行 /使用 API 導向的內部使用者布建至內部部署 Active Directory)。

解決方法:

  1. 確認您的佈建應用程式正在執行。 如果未執行,請選取功能表選項 開始佈建 來處理資料。
  2. 重新啟動內部部署代理程式,將內部部署佈建代理程式狀態變更為使用中。
  3. 在處理要求和寫入布建記錄之間,預期會有 5 分鐘到 10 分鐘的延遲。 如果您的 API 用戶端將資料傳送至佈建 /bulkUpload API 端點,則會導致要求調用和佈建記錄查詢之間出現時間延遲。

禁止 403 回應碼

問題描述

  • 您已將要求傳送至佈建 /bulkUpload API 端點,並取得 HTTP 403(禁止)回應碼。

可能的原因

  • 圖形許可權 SynchronizationData-User.Upload 未指派給您的 API 用戶端。

解決方法:

  • 將 Graph 權限 SynchronizationData-User.Upload 指派給 API 用戶端,然後重試作業。

請求過多 429 回應碼

bulkUpload API 端點會強制執行下列節流限制,並在違反這些限制時傳回 429 回應碼。

  • 每 5 秒 40 個 API 呼叫 – 如果呼叫次數在 5 秒範圍內超出此限制,則用戶端會收到 429 回應。 避免這種情況的一種方法是使用客戶端要求提交邏輯中的延遲,以調整提交請求的速度。 

  • 在 24 小時內 6,000 個 API 呼叫 – 如果呼叫數目超過此限制,則用戶端會取得 429 個回應。 避免這種情況的一種方法是確保您的 SCIM 大量承載已最佳化,以針對每個 API 呼叫使用最多 50 筆記錄。 使用此方法,您可以每隔 24 小時傳送 300K 筆記錄。

儲存桶已滿 500 回應碼

問題描述

  • SCIM 用戶端會收到 HTTP 500(內部伺服器錯誤)訊息:「儲存已接收資料的桶已滿,請等待同步服務處理已接收資料並重試此請求。」
  • 當大量人力資源資料集傳送到配置 /bulkUpload 端點時,你可能會在初始同步或全同步週期中看到這個錯誤。

發生此錯誤的原因

  • 「bucket」是佈建服務用來在處理前緩衝傳入 /bulkUpload 酬載的暫時接收佇列。
  • 每個 API 驅動的配置工作都有專屬的擷取佇列。
  • 佈建服務會持續處理佇列中的承載資料,然後刪除已處理的資料。 如果這個處理後刪除的循環跟不上或停止運作,佇列中的資料可能會不斷累積,直到儲存桶被裝滿。

可能原因與解決

原因 Resolution
承載資料處理失敗,原因是對應不正確(例如,嘗試更新由內部部署 Active Directory 管理的 Microsoft Entra ID 屬性)或資料無效。 失敗的有效載荷仍留在隊列中,最終可填滿桶。 檢視配置日誌以識別失敗的請求處理,修正映射或資料問題,重新啟動配置工作,並重新傳送請求。
API 驅動的配置工作處於 暫停 或 停止 狀態。 請求會持續進入佇列,但處理程序不會執行。 恢復佈建工作,讓它能處理並清空佇列中的請求。
API 驅動的配置工作長時間處於 隔離 狀態。 請求會持續進入佇列,但處理程序未執行。 重新啟動佈建作業以解除隔離。 重新啟動時,已排隊的資料會被清除,這可能需要時間。 等大約 40 分鐘,然後重新發送 SCIM /bulkUpload 請求。
來源系統傳送 SCIM 資料的速度比配置工作處理的速度還快。 Pace 請求提交。 每次批量上傳後,請檢查 HTTP 狀態碼。 如果收到 HTTP 500 錯誤並顯示儲存貯體已滿訊息,請先暫停用戶端(例如 5 到 10 分鐘),再重試。

未經授權的 401 回應碼

問題描述

  • 您已將要求傳送至佈建 /bulkUpload API 端點,並取得 HTTP 401(未經授權)回應碼。 錯誤碼會顯示「InvalidAuthenticationToken」,並顯示「存取權杖已過期或尚未有效」的訊息。

可能的原因

  • 您的存取權杖已到期。

解決方法:

  • 為您的 API 用戶端產生新的存取權杖。

作業進入隔離狀態

問題描述

  • 您剛啟動佈建應用程式,而該應用程式目前處於隔離狀態。

可能的原因

  • 在開始工作之前,您尚未設定通知電子郵件。

解析: 移至 [編輯佈建] 功能表項目。 在 「設定」 底下,「發生失敗時傳送電子郵件通知」 旁邊有一個複選框,以及一個用於輸入 「通知電子郵件」 的欄位。 請務必勾選方塊、提供電子郵件,並儲存變更。 按 重新啟動佈建 以將工作從隔離區中取出。

建立使用者 - 無效的 UPN

問題描述 使用者佈建失敗。 佈建記錄會顯示錯誤碼:AzureActiveDirectoryInvalidUserPrincipalName。

解決方法:

  1. 已進入 編輯屬性對應 頁面。
  2. 選取 UserPrincipalName 對應,並將其更新為使用 RandomString 函式。
  3. 複製此運算式並貼入運算式方塊中:Join("", Replace([userName], , "(?<Suffix>@(.)*)", "Suffix", "", , ), RandomString(3, 3, 0, 0, 0, ), "@", DefaultDomain())

此運算式會將隨機數附加至 Microsoft Entra ID 所接受的 UPN 值,以修正此問題。

使用者建立失敗 - 無效網域

問題描述 使用者佈建失敗。 佈建記錄會顯示錯誤訊息,指出 domain does not exist。

解決方法:

  1. 移至 [編輯屬性對應] 頁面。
  2. 選取 UserPrincipalName 對應,並將此運算式複製並貼到運算式輸入方塊中:Join("", Replace([userName], , "(?<Suffix>@(.)*)", "Suffix", "", , ), RandomString(3, 3, 0, 0, 0, ), "@", DefaultDomain())

此運算式會將預設網域附加至 Microsoft Entra ID 所接受的 UPN 值,以修正此問題。

已知限制:地址、電子郵件地址及電話號碼為多值欄位

問題描述

  • API 驅動的佈建目前不會處理 addresses、emails 和 phoneNumbers 中的 SCIM 多值屬性;當 type 值為 home 或任何其他非 work 的值時。
  • 此限制適用於像 addresses[type eq "home"]、 addresses[type eq "any-other-value"]、 phoneNumbers[type eq "home"]和 這樣的表達式。

現況

  • 只有 addresses[type eq "work"], emails[type eq "work"] 且 phoneNumbers[type eq "work"] 數值會被處理。

Workaround

  • 當你需要 API 驅動的配置處理屬性時,請使用 該 work 類型傳送支援的值。

下一步