在amazon s3 boto bucket中设置特定权限

我在桶里面有一个叫做'笨桶'的桶,我有多个文件。 我希望能够为每个文件的URL设置权限。 我不太确定,但我假设我是否需要一个存储桶中的每个文件的URL。 我的网址会是这样吗?

https://ben-bucket.s3.amazonaws.com/<file_name>

所以基本上,我想设置一个公共访问该URL。 我会怎么做? 我试过这个,它不起作用

    bucket = s3.Bucket('ben-bucket').Object('db.sqlite')
    bucket.BucketAcl('public-read')
    print bucket_acl

代码提供。 db.sqlite是我的桶中的文件之一ben-bucket代码不起作用。 我希望能够公开访问以下URL

https://ben-bucket.s3.amazonaws.com/db.sqlite

我提供的代码没有设置公开阅读权限。


默认情况下,Amazon S3中的所有对象都是私有的。 然后,您可以添加权限,以便人们可以访问您的对象。 这可以通过以下方式完成:

  • 访问控制列表单个对象的权限
  • 一个桶策略 ,根据路径,IP地址,引用者等来授予范围广泛的访问权限
  • IAM用户和组使用AWS凭证向用户授予权限
  • 预先签名的网址
  • 如果你想授予你整个桶的公共访问权限,最简单的选择就是像这样创建一个桶策略 (来自桶策略示例):

    {
      "Version":"2012-10-17",
      "Statement":[
        {
          "Sid":"AddPerm",
          "Effect":"Allow",
          "Principal": "*",
          "Action":["s3:GetObject"],
          "Resource":["arn:aws:s3:::MY-BUCKET/*"]
        }
      ]
    }
    

    如果您希望仅向桶中的子目录授予公共访问权限,请使用:

    {
      "Version":"2012-10-17",
      "Statement":[
        {
          "Sid":"AddPerm",
          "Effect":"Allow",
          "Principal": "*",
          "Action":["s3:GetObject"],
          "Resource":["arn:aws:s3:::MY-BUCKET/PATH/*"]
        }
      ]
    }
    

    是的,您还可以设置每个文件的权限。 代码为:

    import boto3
    s3 = boto3.resource('s3')
    object = s3.Bucket('ben-bucket').Object('db.sqlite')
    object.Acl().put(ACL='public-read')
    

    参考:Boto3 S3访问控制

    链接地址: http://www.djcxy.com/p/93545.html

    上一篇: Setting specific permission in amazon s3 boto bucket

    下一篇: Cloudfront 403 error while accessing files uploaded by another account