2016-12-21 33 views
0

我正在学习AWS CLI,但我试图从本地文件夹复制到S3中的存储桶...因此,当我键入命令输出返回下一个错误:存储桶策略编辑器:策略无法解析为有效的JSON字符串

upload failed: ./lalala.txt to s3://buecket_name/ An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

所以我搜一下这个和互联网告诉我,问题是在桶策略编辑器,所以我尝试编辑政策,但是当我点击保存错误是:

Bucket Policy Editor:Policy could not be parsed as a valid JSON string

我的策略脚本:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets" 
     "Resource": "arn:aws:s3:::bucket-name*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:ListBucket", 
     "s3:GetBucketLocation", 
     "s3:PutObject" 
     ], 
     "Resource": "arn:aws:s3:::bucket-name" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": "arn:aws:s3:::bucket-name/*" 
    } 
    ] 
} 

_____UPDATE_____:

所以,球员,我试图改变脚本添加 “校长”,因为下面的人建议,但错误继续:

Policy could not be parsed as a valid JSON string

当前脚本:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:Sao Paulo:X1X8XX6YYY16X:name-bucket*" 
    }, 
    "Principal": { 
     "AWS": [ 
     "arn:aws:iam::AWS-account-ID:root" 
     ] 
    } 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:ListBucket", 
     "s3:GetBucketLocation", 
     "s3:PutObject" 
     ], 
     "Resource": "arn:aws:s3:::bucket-name" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": "arn:aws:s3:::bucket-name/*" 
    } 
    ] 
} 

所以大家好,我做错了什么?

感谢先进!

回答

1

你缺少第1作用部后一个逗号:

"Action": "s3:ListAllMyBuckets", 

验证JSONs可以通过服务,如jslint来完成。

+0

我把逗号,现在的错误是:'缺少必填字段主体 - 未定义' –

+1

@DouglasDiasdaSilva - 您需要指定一个描述谁可以访问您的S3存储桶的“Principal”字段。详情请见[S3 Documentation](http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html)。 – birryree

0

进行读/写于特定的桶政策是如下

{ 
"Version": "2012-10-17", 
"Statement": [   
    { 
     "Sid": "S3Actions", 
     "Resource": [ 
      "arn:aws:s3:::bucket-name/*", 
      "arn:aws:s3:::bucket-name"    
     ], 
     "Action": [ 
      "s3:DeleteObject", 
      "s3:PutBucketAcl", 
      "s3:PutObject", 
      "s3:PutObjectAcl", 
      "s3:Get*", 
      "s3:List*" 
     ], 
     "Effect": "Allow" 
    } 
] 
} 

您也可以使用Policy Simulator在这里您可以选择的政策和尝试,以确保适当的动作被选择来执行你的API通话没有任何问题。

+0

我尝试这样做,但错误将继续... –

+0

@DouglasDiasdaSilva:有一个额外的逗号可能导致策略失败。我已经更新了它,所以请再试一次,它应该工作。 – Rajesh

+0

这是工作,谢谢兄弟! –