繁体   English   中英

如何配置aws s3存储桶接受Heroku上的签名网址?

[英]How to configure aws s3 bucket to accept signed urls on Heroku?

我使用Node.js从aws s3使用来自(aws-sdk)模块的putObject获取签名的url。 当我在本地运行我的服务器时,上传到S3没有问题。 当我将代码部署到heroku并选择要上传的文件时,我在chrome控制台中收到以下错误:

https://torhuw-hrns.s3.amazonaws.com/5f522890-0283-11e6-a696-b1fc6f56c785-T ... 4&Signature = P7ybw4%2B2qqNRNKTZbc%2FMWLhPn1o%3D&x-amz-acl = public-read-write无法加载资源:服务器响应状态为403(禁止)

我正在使用Node.js(aws-sdk)s3getSignedUrl方法来获取签名并将其发送到前端以将我的文件上传到我的s3存储桶。

我遵循的教程是Node.js中的Direct to S3 File Uploads

仔细检查S3存储桶的权限和CORS配置。 您需要确保策略允许“s3:PutObject”在您的存储桶上,并且您需要确保CORSRule允许PUT / POST并允许您的应用程序域。

要调试这些内容,您可以考虑暂时放宽所有权限以“全开”并在完全不受限制时检查它是否有效。

好吧,我通过创建一个更新CORS配置的新存储桶,创建新的access_key_ID和access_secret_access_key以及更新heroku环境变量来解决这个问题(我还选择了存储桶与我的heroku应用程序位于同一区域,但不确定是否这是解)。 使用的CORS配置是:

 <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM