【问题标题】:Amazon S3: set permissions using aws-sdk-rubyAmazon S3:使用 aws-sdk-ruby 设置权限
【发布时间】:2014-05-28 17:23:57
【问题描述】:

对于 S3 中的新图像路径,我收到 拒绝访问。这在同一个桶中,我使用过,对于其他图像,一切都很好。会不会是权限问题?如果是这样,我如何使用 aws-sdk-ruby 获取(和设置)权限?

文档中的示例很差,我无法访问亚马逊仪表板。

我可以通过 gem 进行这些操作吗?

【问题讨论】:

  • 您是否在 aws s3 管理控制台中检查了该存储桶的权限?我知道使用 gem 可以为给定文件设置 acl(访问控制列表)。我将在下面发布一个示例
  • 我没有,我无权访问控制台
  • 您的密钥是否有权设置权限?如果是这样,您也许可以安装像 3hubapp.com 这样的桌面应用程序并控制它们
  • 我还发现了一个不错且简单的 chrome 扩展,名为 Extended S3 Browser

标签: ruby-on-rails ruby amazon-web-services amazon-s3


【解决方案1】:

来自他们的文档@aws-sdk doc
也可以参考bucket doc

S3 支持许多用于存储桶和对象的固定 ACL。其中包括:

:private
:public_read
:public_read_write
:authenticated_read
:bucket_owner_read (object-only)
:bucket_owner_full_control (object-only)
:log_delivery_write (bucket-only)

以下是向存储桶提供标准 ACL 的示例:

s3.buckets['bucket-name'].acl = :public_read

【讨论】:

    【解决方案2】:

    语法发生了变化

    gem 'aws-sdk', '~> 2'

    现在是圆括号,而不是方括号。 和单数

    s3.bucket(object) 
    

    而不是

    s3.buckets[object]
    

    完整示例:

    s3 = Aws::S3::Resource.new
    source = s3.bucket('bucket-name').object('some/path/filename.txt')
    destination = s3.bucket('same-or-other-bucket').object('destination/filename2.txt')
    
    copy_to(destination, acl:'public-read')
    

    【讨论】:

    • 我还没有找到如何在新版本中设置.acl的任何想法_
    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 2015-07-05
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多