4

我想img在我的私人存储桶中创建一个名为public的文件夹。我正在使用 Boto3。我只想使用脚本公开这个文件夹而不是其他任何东西..

这就是我目前连接到存储桶的方式以及我已经走了多远......

ACCESS_KEY_ID = 'xxxxx'
ACCESS_KEY_SECRET = 'xxxx'
bucket_name = 'mybucket'
sourceDir = "../../docs/buildHTML/html/"
destDir = ''

r = boto3.setup_default_session(region_name='eu-west-1')
s3 = boto3.resource('s3', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=ACCESS_KEY_SECRET)
bucket = s3.Bucket(bucket_name)

所以我有桶,这行得通。我现在如何使img已经存在的文件夹公开?

4

1 回答 1

8

您需要向存储桶添加策略,如下所示:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicReadImages",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::mybucket/abc/img/*"]
    }
  ]
}

您可以通过 AWS 控制台或任何开发工具包来执行此操作。在boto3,我认为你这样做:

bucket = s3.Bucket(bucket_name)

response = bucket.put(
    Policy = '<policy string here>'
)
于 2015-09-04T15:13:21.890 回答