# 设置文件和图片上传到 S3

**URL:** <https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229>\
**Category:** Self-Hosting\
**Tags:** configuring, how-to\
**Created:** [2013年六月6日 19:37 UTC](https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229 "2013-06-06T19:37:43Z")\
**Posts on this page:** 1\
**Showing post:** 267

<div class="post-metadata">

**Author:** ![Denis\_Didkovsky](https://avatars.discourse-cdn.com/v4/letter/d/53a042/32.png) [@Denis\_Didkovsky](https://meta.discourse.org/u/Denis_Didkovsky)\
**Post date:** [2024年十月17日 17:21 UTC](https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229/267 "2024-10-17T17:21:47Z")

</div>

上面的帖子是否仍然是允许管理员进行设置的有效指南？如果不是，是否有其他地方可以找到 2024 年的正确 S3 指南？据称这是 Discourse 团队官方支持的。

我们按照上面的指南进行了实现，但图片在 Discourse 实例上显示为损坏，尽管它们已上传到 S3。

**我们的流程**

1. 按照上面的指南设置 S3 存储桶本身以及 S3 中的策略（所有步骤都已准确遵循）

2. 按照上面的指南在 app.yml 和管理员中设置环境变量（相同）

3. 重新构建应用程序

4. 完全没有使用 CDN，因为我们认为 CDN 是可选的，并且在没有 CDN 的情况下也应该可以工作。

_ **结果：** _

1. 图片已上传到 Discourse 的存储桶
2. 帖子中的链接已由 Discourse 正确替换为类似以下的亚马逊链接：  
[xxx-bucket.s3.dualstack.us-east-1.amazonaws.com/original/1X/a1b21eb5de071799d4b5e5215619d11d28602dfe.jpeg](http://xxx-bucket.s3.dualstack.us-east-1.amazonaws.com/original/1X/a1b21eb5de071799d4b5e5215619d11d28602dfe.jpeg)
3. 链接 **无法访问** （假设是因为官方指南中的 S3 策略）

对官方指南中 S3 策略的假设更改。 **Principal** ：此策略未指定 `Principal`，这意味着它适用于任何拥有正确权限的已认证用户。如果要允许匿名（公开）访问，我们需要指定`\"Principal\": \"*\"`。这也可能不是一个好的解决方案，因为它会使存储桶公开。  
**这是假设，因为我们希望有人能在 2024 年更新指南以使其正确。**

---

_[View the full topic](https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229)._
