图像未从 Amazon S3 存储桶加载

Posted

技术标签:

【中文标题】图像未从 Amazon S3 存储桶加载【英文标题】:Images are not loading from an Amazon S3 bucket 【发布时间】:2021-11-14 17:51:12 【问题描述】:

我正在做一个 Django 项目。我在 Amazon S3 上托管了我的静态文件。它已成功上传到它。但是,当我运行服务器时,图像没有加载。 当我检查图像字段时,它显示: https://django-ecommerce-files.s3.amazonaws.com/images/logo.png%22%20id=%22image%22%20style=%22width:%2040px;%20height:40px%22%3E 当我双击它时。它显示了这个错误:

<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>07PX6KHYASHT3008</RequestId>
  <HostId>pJCxChq1JHlw/GL0Zy/W+PvX1TevOf/C60Huyidi8+0GMAs8geYlXSrEgo6m9vllL0PouTn6NAA= 
  </HostId>
</Error>

【问题讨论】:

【参考方案1】:

使用 S3 存储桶时,需要让您的资源(文件)可公开访问。您可以在上传到 S3 时以编程方式执行此操作,也可以从 AWS 控制台执行此操作。请检查如何启用对文件的公开访问here

【讨论】:

它适用于静态文件。但是,每当我从系统中添加新图像时,它都不会加载。有没有办法解决这个问题? 还是同样的权限/访问问题吗? 没有。它说“服务器响应状态为 400(错误请求)”。它显示此错误:InvalidRequest 不支持您提供的授权机制。请使用 AWS4-HMAC-SHA256.19KCKVYHY43FT2AJ+VcQe1t1iuS8by3C2cESj4yXNszpqUfk8NQWbnkhEtXRQO8YYJxg7rt3nPaibHQEvgYAxBcbZ8Y= 好的。请参考这个***.com/questions/26533245/… 非常感谢。上述链接中的解决方案之一帮助我清除了错误。现在,一切正常。【参考方案2】:

确保您已更改 S3 存储桶的公共访问设置,以便它允许您的应用访问文件(使用正确的凭据)。

您的要求可能会有所不同,因此请查看他们的user manual。

检查存储桶下的权限选项卡。

或者,您也可以查看 S3 存储桶上允许的操作,它必须配置为允许读/写。参考the docs 的几个例子

【讨论】:

【参考方案3】:

我不确定这是否有效。您可以尝试在您的 s3 上启用静态托管吗?

    转到您的 s3。 转到属性,向下滚动到底部 启用静态托管

s3 上的 png 文件看起来像这样(顺便说一句,链接有效):

https://aws-cicd-react.s3.ap-southeast-1.amazonaws.com/logo512.png

附录: 如果您想查看文件的网址:

    在您的 s3 中,单击文件,然后转到属性 查看对象 URL

【讨论】:

以上是关于图像未从 Amazon S3 存储桶加载的主要内容,如果未能解决你的问题,请参考以下文章

使用 amazon sdk 和存储桶策略从 ios 应用程序将图像上传到 amazon s3

尽管存储桶是公共的,但 Amazon S3 base64 图像不适用于 og:image 标签

如何(批量)删除Amazon S3存储桶中几百个文件的列表

图像保存的 con Amazon S3 存储桶未显示在 HTML5 画布上。跨域问题

在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)

如何通过 PHP SDK 在 Amazon S3 存储桶下创建文件夹?