[英]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存储桶。
仔细检查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.