本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 對服務控制政策 (SCPs進行故障診斷 AWS Organizations
使用此處的資訊來協助您診斷和修正服務控制政策 (SCPs中常見的錯誤。
中的服務控制政策 (SCPs) AWS Organizations 類似於 IAM 政策,並共用通用語法。此語法的開頭為 JavaScript 物件標記法
AWS Organizations 使用 IAM 語法和文法的子集。如需詳細資訊,請參閱SCP 語法。
常見的政策錯誤
多個政策物件
一個 SCP 必須僅包含一個 JSON 物件。可在兩旁放置 { } 括弧來表示物件。雖然您可以在外側括弧對中嵌入額外的 { } 括弧以在 JSON 物件中巢套其他物件,但是一個政策只能包含一個最外層的 { } 括弧對。以下範例不正確,因為它在最上層包含兩個物件 (以紅色
標示):
不過,您可以使用正確的政策語法來達成前述範例的意圖。可以將兩個資料塊合併到單個 Statement
元素中,而非包含兩個各自擁有 Statement
元素的完整政策物件。Statement
元素將兩個物件組成的陣列作為其值,如以下範例所示:
此範例無法進一步的壓縮到具有一個元素的 Statement
,因為這兩個元素有不同的效果。一般而言,只有在每個陳述式中的 Effect
和 Resource
元素完全相同時,您才可以結合陳述式。
多個陳述式元素
此錯誤可能會先以上一章節中錯誤的變異顯示。但是,它在語法上是不同類型的錯誤。在以下範例中,頂層只有一個政策物件,由單一 { } 括弧組表示。但是,該物件包含兩個 Statement
元素。
一個 SCP 只能包含一個 Statement
元素,名稱 (Statement
) 在冒號左側,它的值在冒號右側。Statement
元素的值必須是物件,以 { } 括弧表示,其中包含一個 Effect
元素、一個 Action
元素和一個 Resource
元素。以下範例不正確,因為在政策物件中包含兩個 Statement
元素:
由於值物件可以是多個值物件的陣列,您可以將兩個 Statement
元素結合到具有物件陣列的一個元素來解決這個問題,如以下範例所示:
Statement
元素的值是一種物件陣列。此範例中的陣列包含兩個物件,每個物件是 Statement
元素的正確值。陣列中的每個物件之間用逗號隔開。
政策文件大小超過上限
SCP 文件的大小上限是 5,120 個字元。此大小上限包括所有字元 (包含空格)。若要減少 SCP 的大小,您可以移除引號外部的所有空格字元 (例如空格和換行字元)。
注意
如果您使用 來儲存政策 AWS Management Console,則 JSON 元素與引號外部之間的額外空格會被移除且不計算在內。如果您使用 SDK 操作或 儲存政策 AWS CLI,則政策會完全按照您提供的方式儲存,而不會自動移除字元。