【问题标题】:How to configure aws s3 bucket to accept signed urls on Heroku?如何配置 aws s3 存储桶以接受 Heroku 上的签名网址?
【发布时间】:2016-08-06 15:35:42
【问题描述】:

我正在使用 Node.js 使用 (aws-sdk) 模块中的 putObject 从 aws s3 获取签名的 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 存储桶。

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

【问题讨论】:

    标签: amazon-web-services heroku amazon-s3 permissions acl


    【解决方案1】:

    好的,我通过创建一个新的存储桶来更新 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>

    【讨论】:

      【解决方案2】:

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

      要调试这些东西,您可以考虑暂时将所有权限放宽到“全开”,并检查它在完全不受限制的情况下是否有效。

      【讨论】:

      • “全开”是指授予 AmazonS3FullAccess 权限、在 CORS 配置中设置 * 的 AllowedOrigin 等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2019-01-27
      • 2017-09-21
      • 1970-01-01
      • 2016-03-02
      • 2017-05-21
      • 2019-11-02
      相关资源
      最近更新 更多