AccessDenied for ListObjects for S3 bucket when permissions are s3:*

前端 未结 13 791
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-29 22:02

I am getting:

An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

When I try to get folder from

相关标签:
13条回答
  • 2021-01-29 22:20

    I tried the following:

    aws s3 ls s3.console.aws.amazon.com/s3/buckets/{bucket name}
    

    This gave me the error:

    An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
    

    Using this form worked:

    aws s3 ls {bucket name}
    
    0 讨论(0)
  • 2021-01-29 22:21

    I was thinking the error is due to "s3:ListObjects" action but I had to add the action "s3:ListBucket" to solve the issue "AccessDenied for ListObjects for S3 bucket"

    0 讨论(0)
  • 2021-01-29 22:26

    I'm adding an answer with the same direction as the accepted answer but with small (important) differences and adding more details.

    Consider the configuration below:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": ["arn:aws:s3:::<Bucket-Name>"]
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:PutObject",
            "s3:DeleteObject"
          ],
          "Resource": ["arn:aws:s3:::<Bucket-Name>/*"]
        }
      ]
    }
    

    The policy grants programmatic write-delete access and is separated into two parts:
    The ListBucket action provides permissions on the bucket level and the other PutObject/DeleteObject actions require permissions on the objects inside the bucket.

    The first Resource element specifies arn:aws:s3:::<Bucket-Name> for the ListBucket action so that applications can list all objects in the bucket.

    The second Resource element specifies arn:aws:s3:::<Bucket-Name>/* for the PutObject, and DeletObject actions so that applications can write or delete any objects in the bucket.

    The separation into two different 'arns' is important from security reasons in order to specify bucket-level and object-level fine grained permissions.

    Notice that if I would have specified just GetObject in the 2nd block what would happen is that in cases of programmatic access I would receive an error like:

    Upload failed: <file-name> to <bucket-name>:<path-in-bucket> An error occurred (AccessDenied) when calling the PutObject operation: Access Denied.

    0 讨论(0)
  • 2021-01-29 22:28

    Ran into a similar issues, for me the problem was that I had different AWS keys set in my bash_profile.

    I answered a similar question here: https://stackoverflow.com/a/57317494/11871462

    If you have conflicting AWS keys in your bash_profile, AWS CLI defaults to these instead.

    0 讨论(0)
  • 2021-01-29 22:29

    I had this issue my requirement i wanted to allow user to write to specific path

    {
                "Sid": "raspiiotallowspecificBucket",
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::<bucketname>/scripts",
                    "arn:aws:s3:::<bucketname>/scripts/*"
                ]
            },
    

    and problem was solved with this change

    {
                "Sid": "raspiiotallowspecificBucket",
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::<bucketname>",
                    "arn:aws:s3:::<bucketname>/*"
                ]
            },
    
    0 讨论(0)
  • 2021-01-29 22:35

    I like this better than any of the previous answers. It shows how to use the YAML format and lets you use a variable to specify the bucket.

        - PolicyName: "AllowIncomingBucket"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: "Allow"
                Action: "s3:*"
                Resource:
                  - !Ref S3BucketArn
                  - !Join ["/", [!Ref S3BucketArn, '*']]
    
    0 讨论(0)
提交回复
热议问题