【问题标题】:How to fetch ACL permission for a AWS S3 folder to check whether it has permission to write a new file如何获取 AWS S3 文件夹的 ACL 权限以检查它是否具有写入新文件的权限
【发布时间】:2019-05-06 12:58:49
【问题描述】:

我想检查是否可以使用S3::ObjectACL将新文件写入S3文件夹

vs3 = AWS::S3.new
obj = s3.buckets["my_bucket"].object["folder1/sub-folder/"]
puts obj.acl.grants

但是上面的代码返回

Aws::S3::Errors::NoSuchKey (The specified key does not exist.)

但上述代码适用于特定文件但不适用于文件夹。如何让它适用于 S3 前缀?

【问题讨论】:

    标签: ruby amazon-web-services amazon-s3 permissions acl


    【解决方案1】:

    文件夹实际上并不存在于 Amazon S3 中。例如,您可以使用此AWS Command-Line Interface (CLI) 命令在不存在的文件夹中创建对象:

    aws s3 cp foo.txt s3://my-bucket/unicorn/soup/foo.txt
    

    这将导致unicornsoup 目录神奇地出现,因为它们实际上并不存在。如果该对象被删除,这些目录也会消失(因为它们不存在!)。

    Amazon S3 是一个平面对象存储系统。对象的路径实际上存储在对象的Key(文件名)中。一些 API 调用有助于维持目录存在的虚构,但实际上它们并不存在。

    有时希望“创建”一个目录,例如通过管理控制台。这是通过创建一个具有目录名称的零长度对象来完成的。这不会“创建”目录,它只是使其在某些 API 调用中显示为通用前缀

    此外,由于目录不存在,无法在目录上设置 ACL。您无法通过设置目录权限来控制某人是否可以在目录中创建对象(因为,是的!目录不存在)。

    如果您想授予 任何人 写入文件夹的权限,您可以使用 Bucket Policy,该策略使用特定的前缀授予访问权限>。如果您希望向特定 IAM 用户授予访问权限,则可以将策略附加到 IAM 用户。

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 2016-04-14
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 2011-05-12
      相关资源
      最近更新 更多