使用aws-sdk和ruby更改s3文件访问权限

4

我尝试将项目迁移到 aws-sdk 2。为此需要使用 AWS SDK for Ruby - Version 2。

我已经找到了所有的方法,但是我无法更改文件的访问权限(使其公开)。

在较新的版本中,我使用以下方法:

bucket.objects[file_path].acl = :public_read

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

这是到旧的API文档的链接。

这是到新的API文档的链接。

1个回答

9
我假设你想在S3上传对象之后更改对象ACL。如果可以的话,请考虑在将对象发送到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


说明:本文介绍资源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,这样上传的任何对象都将自动变为公开状态,而无需手动指定。您可以通过为存储桶设置策略来实现此目的。

如何使Amazon S3中的存储桶公开


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接