我发送了一封自动发送电子邮件的订单,现在我正试图找到一个下载PDF收据的链接。
用户在尝试下载时在浏览器中收到错误“此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。”
我已经进入水桶并在收据桶上运行“公开”,仍然没有运气。文件结构是:
应用程序名/上传/订单/收据
如果允许用户下载收据的权限,我需要做些什么?
答案 0 :(得分:0)
当您公开存储桶时,您应该获得一个看起来像这样的新网址
http://bucketName.s3-website-us-east-1.amazonaws.com/uploads/order/receipt
...你应该在邮件中使用那个。
但请记住,所有数据都是公开的,也许您会更好地使用您为每个客户分发的预先签名的s3网址。
答案 1 :(得分:0)
在s3上遇到与特定文件类似的问题。通过使用mv命令和--acl
参数更改文件的访问权限来解决此问题。尝试访问名为data.jsonlines
的文件时出现ACCESS DENIED
错误。通过运行以下命令解决它:
aws s3 cp s3://<s3 bucket name>/path/to/file/data.jsonlines s3://cfa-opengazettes-ke/gazettes/data_copy.jsonlines
aws s3 mv --acl public-read s3://<s3 bucket name>/path/to/file/data_copy.jsonlines s3://cfa-opengazettes-ke/gazettes/data.jsonlines
或者您可以通过运行来合并:
aws s3 cp s3://<s3 bucket name>/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://<s3 bucket name>/path/to/file/data_out.jsonlines
这些命令执行以下步骤:
复制:s3://<s3 bucket name>/path/to/file/data.jsonlines
到
s3://c<s3 bucket name>/path/to/file/data_copy.jsonlines
移动:s3://<s3 bucket name>/path/to/file/data_copy.jsonlines
到
s3://cfa-opengazettes-ke/path/to/file/data.jsonlines
基本上,它会创建文件的副本,然后在移动过程中删除它,同时更改文件的权限。
请注意--acl
选项和参数public-read
。来自documentation:
提供了一些更有用的信息- acl(string)设置执行命令时对象的ACL。如果您使用此参数,您必须具有 &#34; S3:PutObjectAcl&#34;权限列在您的操作列表中 IAM政策。仅接受私有,公开阅读的值, public-read-write , authenticated-read , aws-exec-read , 存储桶拥有者阅读,存储桶拥有者完全控制和日志传递 - 写入。