AWS IAM 不允许 PutObject

pQu*_*123 1 amazon-s3 amazon-web-services

这是我所做的:

1) 向 IAM 用户添加了以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::bucket-name"
        }
    ] }
Run Code Online (Sandbox Code Playgroud)

2)我使用 aws-cli 作为该用户登录

3)运行以下命令:

aws s3 sync ./dist s3://bucket-name/ --delete
Run Code Online (Sandbox Code Playgroud)

我得到了一堆这样的:

调用 PutObject 操作时发生错误 (AccessDenied):拒绝访问

奇怪的是,这工作正常:

aws s3api list-objects --bucket bucket-name
Run Code Online (Sandbox Code Playgroud)

这意味着我的政策在某种程度上起作用了......

提前致谢

pQu*_*123 11

好的,我想通了。政策必须是:

[
  {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ] 
  }
]
Run Code Online (Sandbox Code Playgroud)

注意资源的差异。基本上,存储桶本身被视为与其内部对象不同的资源。