限制和配額可避免 Google 基礎架構在自動化流程中,以不當方式使用 Directory API。API 要求過多可能是因為無害的錯字,也可能是因為系統設計不佳,導致不必要的 API 呼叫。無論原因為何,只要來自特定來源的流量達到一定程度,就必須封鎖,以確保 Google Workspace 系統整體運作正常。這項機制可確保個別開發人員的行為不會對整個社群造成負面影響。
如果 API 要求失敗 (這種情況很少發生),API 會傳回 HTTP 狀態碼和錯誤原因。此外,回應主體也會詳細說明錯誤原因。
下表列出可能的錯誤代碼、原因、對應說明,以及因達到配額限制而發生錯誤時的應變措施建議。
| Code | 原因 | 說明 | 應變措施建議 |
|---|---|---|---|
| 403 | userRateLimitExceeded | 表示已超過使用者頻率限制。在 Google Cloud 控制台中,預設值為每位使用者每分鐘 2,400 項查詢 (每個 Google Cloud 專案)。 | 請前往 Google Cloud 專案的 Admin SDK API 配額頁面提高每位使用者的上限,或使用指數輪詢降低傳送要求的頻率。 |
| 403 | quotaExceeded | 表示某項作業的並行要求數量已達上限。 | 請使用指數輪詢重試。您必須降低傳送要求的頻率。 |
| 429 | rateLimitExceeded | 表示某項作業的並行要求數量已達上限。 | 請使用指數輪詢重試。您必須降低傳送要求的頻率。 這項限制是針對每個 Google Workspace 帳戶,而非每個 API 用戶端或每位使用者。 這項上限無法提高。 |
實行指數輪詢
指數輪詢是指用戶端定期重試失敗的要求,並逐漸增加重試次數。這是網路應用程式的標準錯誤處理策略。使用指數輪詢可以提升頻寬使用的效率,減少取得成功回應所需的要求數,並最大化並行環境中的要求總處理量。
下列是簡單的指數輪詢實作流程:
- 對 API 提出要求
- 收到含有可重試錯誤代碼的錯誤回應
- 等待 1 秒 +
random_number_milliseconds秒 - 重試要求
- 收到含有可重試錯誤代碼的錯誤回應
- 等待 2 秒 +
random_number_milliseconds秒 - 重試要求
- 收到含有可重試錯誤代碼的錯誤回應
- 等待 4 秒 +
random_number_milliseconds秒 - 重試要求
- 收到含有可重試錯誤代碼的錯誤回應
- 等待 8 秒 +
random_number_milliseconds秒 - 重試要求
- 收到含有可重試錯誤代碼的錯誤回應
- 等待 16 秒 +
random_number_milliseconds秒 - 重試要求
- 如果仍發生錯誤,請停止並記錄錯誤。
在上述流程中,random_number_milliseconds 是小於或等於 1000 的隨機毫秒數。這是為了避免在某些並行實作中發生特定鎖定錯誤。每次等待後,都必須重新定義 random_number_milliseconds。
注意:等待時間一律是 (2 ^ n) + random_number_milliseconds,其中 n 是一開始定義為 0 的單調遞增整數。對於每個疊代 (每次要求),n 會遞增 1。
演算法已設定為會在 n 等於 5 時終止。這個上限只是為了防止用戶端無限重試,導致要求在總延遲時間達到約 32 秒之後,才會被視為「無法復原的錯誤」。如有需要,API 用戶端可以實作更多次嘗試。
API 限制和配額
| API 限制類別 | 限制 |
|---|---|
| 建立使用者 | 使用 Directory API 時,每個網域每秒最多只能建立 10 位使用者。 |
| 刪除使用者 | 使用 Directory API 時,每個網域每秒最多可刪除 5 位使用者。這是每個網域的後端服務限制,無法在 Google Cloud 控制台專案配額中調整。傳送批次要求時,請確保所有批次的作業總數不超過每秒查詢次數 (QPS) 5 次。 |
| 刪除群組成員 | 使用 Directory API 時,每個網域每秒最多可刪除 30 位群組成員。這是每個網域的後端服務限制,無法在 Google Cloud 控制台專案配額中調整。傳送批次要求時,請確保所有批次的作業總數不超過每秒查詢次數 (QPS)。 |
| 群組已新增為其他群組的成員 | 子群組成員最多可能需要 10 分鐘,才會顯示為上層群組成員。這項限制可能會因系統容量而異。 |
| 行動裝置 |
使用 Directory API 時,您最多可以執行:
|
| 重新命名使用者 | 最多可能需要 10 分鐘,才會在所有服務中生效。建議您先將使用者登出所有瀏覽器工作階段和服務,再重新命名。詳情請參閱「更新使用者」。 |
| 建立/更新組織單位 |
|
| API 配額類別 | 配額 |
Chrome 裝置 annotatedLocation,字元數上限
|
裝置位置資訊的字元數上限為 200。 |
Chrome 裝置 notes,字元數上限
|
裝置附註資訊的字元數上限為 500。 |
Chrome 裝置,最多 user 個字元
|
裝置使用者名稱的長度上限為 100 個字元。 |
| 網域別名數量上限 | 網域別名數量上限為 20 個。 |
| 群組,說明 | 說明長度上限為 4,096 個字元。 |
| 每個帳戶的群組數量 | 如果使用舊版免費 G Suite 帳戶,群組數量上限為 10 個。其他版本則沒有群組數量限制。 |
| 群組、每個群組的成員 | 如果使用舊版免費 G Suite 帳戶,群組最多可包含 100 位成員。其他版本則沒有群組成員人數限制。 如要瞭解每位使用者的群組成員資格限制,請參閱「瞭解網路論壇政策與使用限制」。 |
| maxResults 查詢字串 | API 會傳回:
|
| 多個網域,帳戶允許的網域數量上限 | 600 個 (1 個主網域 + 599 個額外網域) |
| 組織單位,一次可移動的使用者人數上限 | 一次可移動 20 位使用者。而且使用者的主要電子郵件地址必須已存在於帳戶中。 |
| 使用者別名 | 每個使用者帳戶最多可有 30 個別名。 |
| 使用者別名,使用已刪除的別名 | 刪除的使用者別名可以立即再次使用。 |
| 其他類型的限制 | 限制和規範 |
|---|---|
| 計費和建立使用者 | 如果使用者採用 Google Workspace 彈性方案,透過這個 API 建立使用者會產生費用,並計入客戶帳單帳戶。舉例來說,如果您採用 Google Workspace 彈性方案,建立 10 位使用者後,系統會根據建立時間按比例計算,向您的帳戶收取 10 份 Google Workspace 授權的費用。如果您採用年繳方案,代表您已預先承諾支付一定數量的授權費用,因此只能建立約定數量的使用者。如要進一步瞭解計費方案和帳單帳戶,請造訪管理員說明中心。 |
| First and Last Names | 名字和姓氏最多 40 個字元。支援 Unicode/UTF-8 字元,可包含空格、英文字母 (a-z)、數字 (0-9)、連字號 (-)、正斜線 (/) 和半形句號 (.)。如要進一步瞭解字元使用規則,請參閱管理說明中心。 |
| 群組,刪除 | 刪除群組並不會刪除群組成員的使用者帳戶。 |
| 群組和群組成員、電子郵件地址變更 | 在這個版本的 API 中,您可以在啟用 Google Workspace 服務前變更群組的電子郵件地址。請使用 Google 管理控制台變更群組成員的電子郵件地址。變更後,API 會自動反映電子郵件地址變更。 |
| 群組、設定 | 您可以使用 Google 管理控制台,管理網路論壇的存取權設定、共用選項、監控和討論封存。如要進一步瞭解群組設定,請造訪管理員說明中心。 |
| 群組、傳送訊息 | 為防範垃圾郵件和電子郵件濫用行為,Google 限制了您一次可傳送給外部收件者的郵件數量。如果您傳送郵件給群組,每位外部成員都會計為一位收件者。詳情請參閱「電子郵件傳送上限」和「避免寄給 Gmail 使用者的郵件遭到封鎖或歸類為垃圾郵件」。 |
| 網路論壇,傳送 NDR 郵件 | 您無法將無法送達回條 (NDR,又稱「退信通知」) 傳送或轉寄給群組。 |
| 使用者建立的群組,限制 | 如要瞭解使用者建立的群組限制,請參閱管理說明中心 |
| 組織單位、開啟/關閉服務 | 您可以使用 Google 管理控制台,為組織單位開啟或關閉服務。 |
| 密碼 | 可以包含任何字元組合。至少須有 8 個字元。長度上限為 100 個半形字元。 |
| 相片 | 在這個版本的 API 中,相片是指使用者最新的 Google 個人資料相片。 |
| 使用者名稱 | 使用者名稱可以包含英文字母 (a-z)、數字 (0-9)、連字號 (-)、底線 (_),Google Workspace 也能辨識點號或句號 (.)。這與 Gmail 不同。使用者名稱不得包含等號 (=)、角括號 (< 和 >) 或連續多個點號 (.)。詳情請參閱管理說明中心。 |
| 使用者名稱、重新命名 | Google Hangouts 會在重新命名後捨棄所有記住的即時通訊邀請。使用者必須再次要求權限,才能與好友聊天。舊的使用者名稱會保留為電子郵件別名,確保電子郵件轉寄設定能持續傳送郵件,且無法做為新的使用者名稱。如要進一步瞭解重新命名使用者帶來的影響,請參閱管理員說明中心。重新命名後,請使用「刪除使用者別名」作業移除電子郵件別名。 |
| 使用者位於多個網域 | Google Workspace 帳戶可以包含您的任何網域。在多網域帳戶中,某個網域的使用者可以與其他帳戶網域的使用者共用服務。多個網域元件如下:
|
| 警告、群組成員 | GROUP_CANNOT_CONTAIN_CYCLE:API 不允許群組成員資格出現循環。舉例來說,如果群組 1 是群組 2 的成員,群組 2 就不能是群組 1 的成員。 |