【问题标题】:Folder Specific IAM Permissions for boto3 S3 API Callsboto3 S3 API 调用的文件夹特定 IAM 权限
【发布时间】:2017-07-10 15:28:44
【问题描述】:

所以我有一个用户的 IAM 权限设置为以下。这意味着只允许他们创建/删除/列表/等。桶的“Target_Folder/”中的对象。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt123456789",
        "Effect": "Allow",
        "Action": [
            "s3:CreateBucket",
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::bucket/Target_Folder/*"
        ]
    }
  ]
}

使用 boto3,我在配置中嵌入了相关的 aws_access_key_id 和 aws_secret_access_key。这样做之后,我发现我无法在“/Target_Folder/”中执行任何操作,例如:

import boto3
import boto.s3.transfer
#Need to manually import S3Transfer() for some reason.
from boto.s3.transfer import S3Transfer 

bucket = 'bucket'
prefix = 'Test_Folder/'

client = boto3.client(s3)

#Attempt to print objects under the Target_Folder
response = client.list_objects(Bucket = bucket, Prefix = prefix)
for file in response['Contents']:
    print(file['key'])


#Attempt to upload file
transfer = S3Transfer(client)
transfer.upload_file('C:/filepath/file', bucket, prefix)

最终,无论采用何种方法,我都会收到"botocore.exceptions.ClientError: An error occured (SignatureDoesNotMatch)...."。相反,如果我使用具有更多开放存储桶权限的 key/secret_key 对,我与 API 交互没有问题。

抱歉,如果这已在另一个线程中得到回答或澄清,我在搜索时找不到任何好的。

【问题讨论】:

    标签: python-3.x amazon-s3 boto3


    【解决方案1】:

    首先,s3 存储桶bucket 应该存在。

    你需要在s3桶上分配s3:ListBucket权限,然后你可以给这个桶里的对象访问权限

    {
    "Version": "2012-10-17",
    "Statement": [
        {
           "Effect":"Allow",
           "Action":[
              "s3:ListBucket",
              "s3:GetBucketLocation"
           ],
           "Resource":"arn:aws:s3:::bucket"
        },
        {
            "Sid": "Stmt123456789",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",   # and this should be removed.
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket/Target_Folder/*"
            ]
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多