图像未从 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
确保您已更改 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 标签
图像保存的 con Amazon S3 存储桶未显示在 HTML5 画布上。跨域问题