當我嘗試新增或編輯我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體政策時,我收到「政策中的主體無效」錯誤。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
如果您的 Amazon S3 儲存貯體政策包含無效的主體元素值,那麼您會收到「政策中的主體無效」錯誤。若要解決此錯誤,請依照下列疑難排解步驟操作。
確認您的儲存貯體政策是否使用受支援的主體元素值
請確定您為 S3 儲存貯體政策中的主體元素指定下列支援的值:
**注意:**如果您使用萬用字元星號 (\ *) 作為主體元素,則會授予所有經過驗證的使用者和匿名使用者存取權。
檢查主體值的格式是否正確
檢閱儲存貯體政策中主體元素的格式是否正確。如果主體元素包含一個使用者,請使用以下格式:
"Principal": { "AWS": "arn:aws:iam::111111111111:user/user-name1"
}
**注意:**將 user-name1 替換為您 IAM 使用者的名稱。
如果主體元素包含多個 IAM 使用者或角色,請使用以下格式:
"Principal": { "AWS": [
"arn:aws:iam::111111111111:user/user-name1",
"arn:aws:iam::111111111111:role/role-name1"
]
}
**注意:**將 user-name1 替換為您 IAM 使用者的名稱,將 role-name1 替換為您 IAM 角色的名稱。
如果主體元素包含所有使用者,請使用以下格式:
{ "Principal": "*"
}
注意:最佳做法是不要在資源型政策的主體元素中使用萬用字元 (\ *) 並使允許生效。只有在授予公開或匿名存取權時,才使用萬用字元 (*)。在主體元素中指定預定的主體、服務或 AWS 帳戶。然後,使用條件元素來限制存取。
注意: 當您授予匿名存取權時,任何人都可以存取您的儲存貯體。建議您不要對 S3 儲存貯體授予匿名寫入存取權。如需詳細資訊,請參閱 Amazon S3 如何與 IAM 搭配使用。
請確定未刪除 IAM 使用者或角色
如果您嘗試將具有唯一識別碼的儲存貯體政策儲存為主體元素,則會出現「政策中的主體無效」錯誤。這是因為主體元素只支援有效的 IAM ARN。若要解決此錯誤,您必須從主體元素中移除任何唯一識別碼。
如果您的儲存貯體政策在主體元素中包含 IAM 使用者或角色,請確認未刪除這些 IAM 身分。若要識別儲存貯體政策中已刪除的 IAM 使用者和角色,請在主體元素中指定唯一識別碼,而不是完整的 ARN。
範例:
"Principal": { "AWS": [
"arn:aws:iam::111111111111:user/user-name1",
"AIDAJQABLZS4A3QDU576Q",
"arn:aws:iam::111111111111:user/user-name2"
]
}
**注意:**將 user-name1 和 user-name2 替換為您 IAM 使用者的名稱。
請確認 IAM 主體的帳戶已啟用區域
當您套用 S3 儲存貯體政策時,AWS 會檢查 IAM 主體帳戶中是否有可用的必要 AWS 區域。您的儲存貯體可能位於 AWS 預設未啟用的 AWS 區域。在這種情況下,請確認您已在 IAM 主體的帳戶中啟用該區域。在跨帳戶情境中,請為兩個 AWS 帳戶啟用該 AWS 區域。如需詳細資訊,請參閱啟用或停用您帳戶中的 AWS 區域。
使用 IAM Access Analyzer 確認您的儲存貯體存取權
若要在部署權限之前確認對 S3 儲存貯體的存取權,請使用 AWS Identity and Access Management Access Analyzer。您可以檢閱從另一個 AWS 帳戶授予您資源的 S3 儲存貯體政策。
您也可以使用 IAM Access Analyzer 來分析 AWS CloudTrail 事件,以根據該活動產生 IAM 政策。如需詳細資訊,請參閱 IAM Access Analyzer 政策產生。
若要啟用 IAM Access Analyzer,請參閱 AWS Identity and Access Management Access Analyzer 入門。
**注意:**AWS 會對您每月建立的未使用存取分析向您收取費用。如需詳細資訊,請參閱 IAM Access Analyzer 的定價。
若要對 IAM Access Analyzer 權限進行疑難排解,請參閱如何解決使用 IAM Access Analyzer 所產生政策的權限問題?