簡體   English   中英

為什么此 IAM 政策存在語法錯誤?

[英]Why does this IAM policy have a syntax error?

我是 AWS 的新手/正在學習 AWS,目前使用LocalStack代替真實的AWS

arn:aws:s3:::my-bucket/path/to/foo.json是新創建的S3存儲桶中 object 的有效S3密鑰。 因為存儲桶是新創建的並且是原始的,除了一個文件上傳之外,其中的任何內容都無法從外部訪問。 我正在嘗試通過示例來了解IAM ,以創建一個授予對S3存儲桶部分讀取訪問權限的策略。

我基於AWS CLI 參考中的此示例創建了以下策略文件:

$ cat ./policy
{
  "Version": "2020-04-27",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "s3:Get*",
          "s3:List*"
      ],
      "Resource": [
          "arn:aws:s3:::my-bucket/path/to/foo.json"
      ]
    }
  ]
}

在同一個鏈接示例中,我嘗試使用此命令創建我的策略,但失敗了:

$ aws --endpoint-url=http://localhost:4593 iam create-policy --policy-name my-bucket-policy --policy-document file://policy

An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.

為什么此命令失敗,或者有什么方法可以讓我獲得更具描述性的錯誤消息?

policy是我在其中執行aws CLI 命令的cwd中的一個文件)

根據我的閱讀,錯誤消息暗示 JSON 格式錯誤,但像https://jsonlint.com/這樣的短絨表明文本是有效的 JSON。 此外,源示例中的更改很小並且看起來很合理: "Version"更改為今天的日期, "Resource" ARN更改為與我相關的內容。

給出的版本不正確。 應該是:“2012-10-17”

編輯:原則錯誤。 看評論。 基於資源的策略需要原則:

主體(僅在某些情況下需要)– 如果您創建基於資源的策略則必須指明您希望允許或拒絕訪問的帳戶、用戶、角色或聯合用戶。 如果您要創建IAM 權限策略以附加到用戶或角色,則不能包含此元素。 主體隱含為該用戶或角色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM