“拒绝访问” – 用户对S3 Bucket的权限
我发送了一封自动发送电子邮件的订单,现在我正试图找到一个下载PDF收据的链接。
用户在尝试下载时在浏览器中收到错误“此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。”
我已经进入水桶并在收据桶上运行“公开”,仍然没有运气。 文件结构是:
应用程序名称/上传/顺序/收据
我需要做什么才能允许用户下载收据的权限?
当您公开存储桶时,您应该获得一个看起来像这样的新URL
http://bucketName.s3-website-us-east-1.amazonaws.com/uploads/order/receipt
…你应该在邮件中使用那个。
但请记住,所有数据都是公开的,也许您会更好地使用您为每个客户分配的预先签名的s3url。
与s3上的特定文件有类似的问题。 通过使用mv命令和--acl
参数更改文件的访问权限来解决此问题。 尝试访问名为data.jsonlines
的文件时出现ACCESS DENIED
错误。 通过运行以下命令解决它:
aws s3 cp s3:///path/to/file/data.jsonlines s3://cfa-opengazettes-ke/gazettes/data_copy.jsonlines aws s3 mv --acl public-read s3:// /path/to/file/data_copy.jsonlines s3://cfa-opengazettes-ke/gazettes/data.jsonlines
或者您可以通过运行来组合它们:
aws s3 cp s3:///path/to/file/data_out.jsonlines s3://cfa-opengazettes-ke/gazettes/data_out2.jsonlines && aws s3 mv --acl public-read s3://cfa-opengazettes-ke/gazettes/data_out2.jsonlines s3:// /path/to/file/data_out.jsonlines
这些命令执行以下步骤:
-
copy:
s3://
to/path/to/file/data.jsonlines s3://c
/path/to/file/data_copy.jsonlines -
move:
s3://
to/path/to/file/data_copy.jsonlines s3://cfa-opengazettes-ke/path/to/file/data.jsonlines
基本上,它会创建文件的副本,然后在移动过程中删除它,同时更改文件的权限。
注意--acl
选项和参数public-read
。 从文档 :
–acl(string)设置执行命令时对象的ACL。 如果使用此参数,则必须在IAM策略的操作列表中包含“s3:PutObjectAcl”权限。 仅接受private , public-read , public-read-write , authenticated-read , aws-exec-read , bucket-owner-read , bucket-owner-full-control和log-delivery-write的值 。
此AWS页面上的一些更有用的信息