本頁說明使用 Cloud DNS 時可能收到的常見錯誤訊息、這些訊息的含義,以及解決錯誤的建議做法。
一般錯誤
本節說明一般錯誤。
alreadyExists
指定資源已經存在,無法建立重複資源。
建議做法:在建立資源時,先用適當的 get/list API 確認現有資源,避免重複建立。
若在新增記錄時遇到此錯誤,通常是因為系統將單一記錄視為一個記錄集,因此每個項目 (如有多個) 都會被當成不同的記錄。如需在同一網域名稱系統 (DNS) 名稱的記錄集中新增兩個值或字串,請在兩個值之間加入空格。
如要進一步瞭解如何解決此錯誤,請參閱「修正記錄衝突錯誤」。
accessNotConfigured
未設定存取權
如要解決此錯誤,您必須在專案中啟用 Cloud DNS API。
inactiveBillingState
專案
example_project處於停止計費狀態,無法接受要求。計費狀態可能需要幾分鐘才會更新。
建議做法:啟用專案的計費功能。如要啟用新專案的計費功能,或重新啟用現有專案的計費功能,請參閱「啟用專案的計費功能」,採取適當步驟。
preconditionFailed
這是一般錯誤,代表要求內容與伺服器資源當前的狀態不相容。用戶端必須做出修正後再重試。如果您傳送 create 變更要求,試圖刪除名稱和類型都與現有資源記錄集不符的項目,就會發生此錯誤。
請先讀取區域當前狀態,確認要刪除的目標,因為資源可能在您上次查看後變動。
錯誤訊息會指出要求中出錯部分的路徑。例如,entity.change.deletions[6] 表示 POST 要求主體中 change 物件底下 deletions 陣列的第七個元素。
建議做法:修正要求中標記為有問題的部分。
required
這是一般錯誤,表示要求缺少某些必要部分。例如,建立代管區域的要求需包含名稱、DNS 名稱和說明。如果缺少其中任一欄位,就會失敗並出現此錯誤。
建議做法:填入必要參數,然後再試一次。
notFound
指定資源不存在。
建議做法:確認您使用的是現有資源名稱。
quotaExceeded
當您執行的變更會導致用量超出配額限制,就會出現此錯誤。配額是以專案為單位管理。舉例來說,每個區域中可建立的資源記錄集是有限的。如要提高配額,請洽詢 Google Cloud 銷售團隊。關於新專案的預設配額,請參閱 Cloud DNS 資源配額與限制。如要瞭解 DNS 的各項限制,請參閱 Projects.get 作業說明。
建議做法:檢查專案,瞭解為何已使用這麼多資源。如要申請提高專案配額,請在 Google Cloud 控制台的「Quotas」(配額) 頁面操作。您也可以參閱「申請調整配額」一節說明。
與代管區域相關的錯誤
本節列出與代管區域相關的錯誤。
invalidFieldValue
entity.managedZone.name值無效。
建立代管區域時,若區域名稱未以字母開頭、未以字母或數字結尾,或是包含小寫字母、數字或連字號以外的字元,就可能失敗並出現此錯誤。
managedZoneDnsNameNotAvailable
指定代管區域無法使用,因此無法建立。
如果在建立代管區域時出現此錯誤,可能原因如下:
- 指定區域的 DNS 名稱為保留名稱,例如:根網域 (
.)、.com或.co.uk。 - 目前沒有能託管該區域 DNS 名稱的名稱伺服器。Cloud DNS 使用的名稱伺服器集區是有限資源。任何針對名稱伺服器的 DNS 查詢,都必須能明確對應到單一代管區域。詳情請參閱名稱伺服器限制。
建議做法:如果您是該 DNS 名稱的註冊擁有者,請檢查是否有重疊區域。如要設定網域與其子網域的 DNS,建議先建立一個上層區域,再在其中加入每個子網域的記錄。
verifyManagedZoneDnsNameOwnership
請驗證
example.com網域 (或上層網域) 的擁有權,然後再試一次。
建議做法:遇到此錯誤時,請務必驗證網域擁有權,然後再試一次。
與代管記錄相關的錯誤
本節說明與記錄相關的錯誤。
containerNotEmpty
因為指定的資源不是空的,所以無法刪除。
建議動作:如果您要刪除資源,則必須先清空該資源。
invalidZoneApex
指定的資源記錄集無效,因為頂層只能包含一個特定類型的資源記錄集。
在 DNS 的概念中,Apex 指區域中允許標籤數最少的 DNS 名稱,也是區域階層的頂層。區域頂層是 ManagedZone.dnsName 所指定的 DNS 名稱。
出現此錯誤,代表您的變更會導致違反 DNS 規則,因為區域頂層必須只包含一個特定類型的資源記錄集。以下操作都可能導致此錯誤:
- 嘗試從區域頂層刪除必要的
NS資源記錄集。 - 嘗試從區域頂層刪除必要的
SOA資源記錄集。 - 嘗試在區域「頂層以外」位置,建立
SOA類型的資源記錄集。
建議做法:如果遇到此錯誤,表示您嘗試的操作違反了 DNS 規則。請檢查要求是否有誤,切勿刪除必須保留的資源記錄集。
invalidRecordCount
entity.change.additions[XX]資源記錄集為<SOA_OR_CNAME>類型,因此只能包含一筆記錄。
根據 DNS 規則,SOA 和 CNAME 資源記錄集只能包含一筆資源記錄。若您嘗試執行的變更違反上述規則,就會出現此錯誤。例如:
{
kind: "dns#rrset"
name: "blog.example.com.",
type: "CNAME",
rrdata: [ "www.example.com.", "www2.example.com." ],
...
}
建議做法:如果遇到此錯誤,請檢查您的要求,因為您嘗試執行了不允許的操作。
cnameResourceRecordSetConflict
entity.change.additions[XX]資源記錄集無效,因為 DNS 名稱example.com只能包含「一個 CNAME 資源記錄集」,或「其他類型的資源記錄集」,兩者不可共存。
如果您針對同一個 DNS 名稱建立兩種資源記錄集 (例如 A 記錄和 CNAME 記錄),就會發生此錯誤。常見情況是試圖在區域頂層建立 CNAME 記錄。這樣做不可能成功,因為這會與同一名稱的必要 SOA 和 NS 記錄發生衝突。
建議做法:選擇其中一種記錄即可。
wildcardNotAllowed
指定的資源記錄集類型不適合做為萬用字元。
在 DNS 中,萬用字元是一種特殊的資源記錄集,可用來回應針對不存在網域名稱的要求。Cloud DNS 的一項限制是:您無法建立 NS 類型的萬用字元資源記錄集。
建議做法:目前不支援萬用字元 NS 資源記錄集。如有需求,請洽詢 Cloud DNS 支援團隊,或加入 cloud-dns-discuss 並說明您的目標。
recordTypeDisallowedAtZoneApex
指定的資源記錄無法與其他類型的記錄共存,包括區域頂層必須具備的
SOA記錄。
您無法在頂層放置 CNAME 資源記錄,因為該記錄不能與其他類型的資源記錄共存,包括區域頂層必須具備的 SOA 資源記錄。
建議做法:使用 ALIAS 資源記錄。ALIAS 資源記錄是 Cloud DNS 的自訂記錄類型,功能類似 CNAME 資源記錄,但只能用於區域頂層,而且只會回應位址記錄 (A 或 AAAA) 的查詢。詳情請參閱「別名記錄」。
invalidValue
這是一般錯誤,表示您的要求無效,而且與伺服器當前狀態無關。錯誤訊息中會指出要求出錯部分的路徑及無效值。引起這個錯誤的原因很多,例如:
- 指定資源記錄集的名稱無效。例如,
cymbal...group不是有效的 DNS 名稱 (因為中間包含空的標籤)。 - 指定資源記錄集的類型無效。例如,A 和 CNAME 是有效類型,但「group」不是。
- 指定資源記錄集中沒有任何記錄。
- 指定的資源記錄資料無效。以 A 類型的資源記錄為例,
1.1.1.1是有效資料,X.X.X.X 是無效資料。 - 指定資源記錄集的存留時間值無效。存留時間必須是非負數的整數。
- 指定資源名稱過長。
建議做法:修正您的要求。
與威脅偵測相關的錯誤
本節說明啟用威脅偵測時的常見錯誤。只有 ThreatDetectorAdmin 角色能執行特權操作
您必須具備 Threat Detector Admin 角色,才能啟用 DNS 威脅偵測功能。
建議做法:獲得 roles/networksecurity.dnsThreatDetectorAdmin 角色。
FAILED_PRECONDITION
指定的上層資源底下已存在其他 DNS 威脅偵測工具。
建議做法:檢查目前設定狀態,使用現有的 DNS 威脅偵測工具,或移除後再建立新的偵測工具。
gcloud
gcloud beta network-security dns-threat-detectors describe --location=global RESOURCE_REPORTED_IN_ERROR_MESSAGE
將 RESOURCE_REPORTED_IN_ERROR_MESSAGE 替換為錯誤訊息中所顯示,指定上層資源底下的其他 DNS 威脅偵測工具。
後續步驟
- 如要進一步瞭解功能,請參閱「Cloud DNS 總覽」。
- 如要瞭解如何解決使用 Cloud DNS 可能遇到的常見問題,請參閱這篇文章。
- 如需其他協助,請參閱這個頁面。