【问题标题】:Change s3 file access with aws-sdk -> 2 and ruby使用 aws-sdk -> 2 和 ruby​​ 更改 s3 文件访问
【发布时间】:2017-04-13 16:36:27
【问题描述】:

我尝试将我的项目迁移到 aws-sdk 2。为此需要使用 AWS SDK for Ruby - 版本 2。 我找到了所有方法,但我无法更改对文件的访问(公开)。 在以后的版本中我使用这个:

bucket.objects[file_path].acl = :public_read

但我找不到使用新 api 版本进行更改的方法。

这是old api documentation的链接

这是new api documentations的链接

【问题讨论】:

    标签: ruby api amazon-s3


    【解决方案1】:

    我在这里假设您想在对象 ACL 上传到 S3 后更改它。如果可以,请考虑在对象发送到 S3 时而不是之后设置 ACL。

    有两种方法可以做到这一点。它们都相似并且执行相同的操作。选择你最喜欢的或者你觉得比较舒服的。

    使用客户端 API

    client = Aws::S3::Client.new(region: myregion)
    resp = client.put_object_acl({ acl: "public-read", bucket: mybucket, key: mykey })
    

    文档:

    http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html#put_object_acl-instance_method


    资源 API

    s3 = Aws::S3::Resource.new(region: myregion)
    bucket = s3.bucket(mybucket)
    object = bucket.object(mykey)
    resp = object.acl.put({ acl: "public-read" })
    

    文档:

    http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/ObjectAcl.html#put-instance_method


    奖金

    如果您的存储桶中的所有对象都需要公开,您可以在整个存储桶上设置默认 ACL,这样上传的任何对象都将自动公开,而无需您指定。您可以通过为您的存储桶设置存储桶策略来做到这一点。

    Make a bucket public in Amazon S3

    【讨论】:

      猜你喜欢
      • 2014-01-07
      • 2021-02-23
      • 2018-04-07
      • 1970-01-01
      • 2014-05-27
      • 2022-01-20
      • 2012-10-03
      • 1970-01-01
      • 2015-07-09
      相关资源
      最近更新 更多