如何获取AWS S3文件夹的ACL权限,以检查其是否有权编写新文件



我想检查是否可以使用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前缀?

文件夹实际上不存在于Amazon S3中。例如,您可以使用此AWS命令行界面(CLI(命令在不存在的文件夹中创建一个对象:

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

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

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

有时渴望"创建"一个目录,例如通过管理控制台。这是通过使用目录的名称创建零长度对象来完成的。这不是"创建"目录,而只是导致其在某些API调用中以 common前缀的形式出现。

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

如果您想授予任何人 写入文件夹,则可以使用 buck> bucke policy 使用特定的 prefix 。如果您希望授予对特定IAM用户的访问,则可以将策略附加到IAM用户。

最新更新