在尝试让我的 AWS S3 配置与 AWS Lightsail 实例上的 Discourse 配合使用时,我把头撞在墙上 3 个小时后,我坚信一个简单直接的教程会很有帮助。这其中有各种各样的弯路可以走。我的意思是,我远程使用提供的 AWS S3 URL 拉取文件创建存储桶没有问题,但是一旦你引入了 CDN、S3 端点(设置用户体验明确说明可以留空,但在尝试上传时会给出“端点不能为空”的内部消息),以及像使用 CDN 经由亚马逊 CloudFront 时到底需要什么权限级别这样的基本问题。
这太多了。我搜索了整个互联网,但找不到任何接近的教程,更不用说与今天的 Discourse 相关的最新教程了。
感谢任何指点。
我认为我目前的主要障碍是权限,至少从 Discourse 要求提供密钥 ID 和密钥密文的角度来看是这样。我为此在 IAM 中创建了一个用户,但 S3 存储桶信息中没有任何内容似乎将此用户与该存储桶关联起来,所以我不知道这是否是脱节之处。老实说,我使用 LightSail 和 AWS 已经 8 年多了,但这个 S3 领域是用一种开发用户体验风格的混淆方式编写的,有 50 种不同的方法可以做事情。一点也不直观。
嗨,Jay。是的,我已经看过那个很多次了。因为它来自 2020 年,它有像 DISCOURSE_S3_REGION 这样的设置,但管理区域没有这样的设置。
另外……在正确设置 S3 并验证它工作后再耙取我的旧数据,难道不是应该这样吗?
这就是我所说的。Discourse 中的设置对用户在了解 AWS、shell 和 Discourse 方面做出了很多假设,就像开发人员那样。
这是我目前的情况。
我有一个内容分发网络(CDN)正在工作,并且手动上传了一个文件,该文件有效:
https://s3.kitmaker.net/IMG_7184.JPG
当我通过 Discourse 上传时,我收到:
无法打开到 discourse-kitmaker.s3.kitmaker.net:443 的 TCP 连接 (getaddrinfo: 未知的主机名或服务)
这是我当前的设置:
哦,嘿,这是我之前忽略的“区域”设置。是的,但设置正确后它也没有帮助。
pfaffman
(Jay Pfaffman)
6
但你表明你没有遵循那些说明。
这就是为什么你需要遵循那些说明,而不是在用户体验(UX)中进行操作。
这些是需要遵循的说明。
并且不要错过你添加到 yml 文件中以便将资产上传到 s3 的部分。
我会在测试站点上操作,以免弄乱你的线上站点。
是的。将 s3 设置添加到 yml 文件中的 env 中,重建,然后测试它们是否工作,然后运行 rake 任务。它们必须在那里设置,而不是在数据库中。我不确定他们为什么没有在用户体验(UX)中隐藏它们。
但还有这个:How are you authenticating Discourse to AWS? Help us improve the settings!
1 个赞
感谢您提供的链接。您发布的第一个链接在 AWS 区域有一个另一个链接(https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229),该链接发布于 2013 年,所以我立即遇到了它们要求我放入 X 存储桶策略(这似乎已过时)的情况,而 AWS CDN 已经用自己的策略替换了该策略。要更改它吗?还是保留它?这就是我所说的垃圾。呜呜!
1 个赞
问题不在于 app.yml 中的“填空”设置或管理员设置。更多的是这些设置与创建的存储桶或 CDN 等的交互方式的组合。因此,需要阐明的是亚马逊方面的问题。我的意思是,我明白,那不是 Discourse,但对于通过 S3 实际正常运行的 DISCOURSE 用户来说,这将非常有帮助。我希望这有道理。
pfaffman
(Jay Pfaffman)
9
我明白了。我有一段时间没有设置 aws 存储桶了。那部分可能会更复杂,但这不是你发帖中展示的做法。
但那也相当直接,你粘贴内容进去,然后如果你遇到错误,你可以解决它们。
这是你描述的唯一问题。
你是如何设置存储桶的?你给了用户什么权限?你生成密钥了吗?你收到了什么错误(但我以为你说你把图片添加到了帖子中并且成功了?)
1 个赞