Digital Ocean Spaces (S3) “无法在未设置凭证的情况下签署请求”

我正在尝试为 S3 存储设置 Digital Ocean Spaces。

当我尝试运行备份时,会看到这个……

上传照片时也是一样……

我的设置如下……

……但我不知道如何测试它们是否真的有效。我对这些系统不太了解。这只是为了一个小型的朋友群论坛。

最初我启用了以下内容,但由于在启用这些行时无法重建,我不得不将它们注释掉在 app.yml 中。我不知道现在是否仍然需要它们……

我已从 Digital Ocean Spaces 管理区域手动上传了一个文件,将其设置为公开,并且可以通过浏览器访问它。

我还手动在 DO Spaces 中创建了“*****-backups”文件夹。

这是一个例子,说明我了解得有多少。我被困在这里,不知道为什么。我不知何故退出了某些设置,不确定如何恢复。

image
出于某种原因,通常在 /var/discourse 中的内容现在似乎在 /var/www/discourse 中。

但此时我被卡住了。我在论坛上搜索过,但没有找到任何可以解决问题的内容。我陷入了同样的循环中一天了。这与此类似,但它是实际的 AWS S3 而不是 DO Spaces (S3)…

任何帮助都将不胜感激。谢谢。

1 个赞

您缺少所链接主题中推荐的 use_s3 设置。

您应该从所链接的主题中复制粘贴这些设置,而不是尝试输入它们。您需要冒号而不是等号。

如果您在 /var/www/discourse 看到内容,说明您在容器内。您需要退出才能返回到操作系统。

1 个赞

感谢您的反馈。

这个设置在里面。我猜只是用那个其他命令看不到。我注释掉了 CDN,因为它说有相关问题,所以我想把那个隔离出来。特别是由于我不能 100% 确定 URL 是否正确,因为示例是一个自定义域名而不是默认的 Spaces 域名。也许尝试隔离出来是个坏主意。我尝试了很多方法。
这是完整的设置……

不能 100% 确定,但我很确定我是复制/粘贴的。我通常会这样做。

我在尝试重建时确实遇到了一个错误,所以我回去把这些重新注释掉了……

我将再次尝试启用它们并运行它。

啊,‘exit’

这正是我在找的。谢谢。

在这个 S3 部分我遗漏了什么?

我删除了注释使其生效……

编辑:我刚意识到最后一行有一个拼写错误。不确定我怎么会搞砸的。

我保存并尝试重建,然后我看到了这个……

那个安全警告是新出现的。我运行了它,希望解决这个问题……

chmod o-rwx containers/app.yml

我验证了 Docker 版本……

docker --version

正在研究如何更新它。我以为重建它会更新它,但也许不会。

那没有解决问题。即使将旧的代码注释掉并粘贴了新的代码……

image

我重建时仍然收到错误……

image

“在解析块映射时未找到预期的键,位于第 109 行第 3 列”

我不确定它指的是哪个键。

访问和密钥设置在配置中。我不确定如何测试以确保这些设置确实有效,但它们就在那里。

看起来我很接近了,但是……

重建后,它只是卡在“正在思考”……

image

就这样放了好几个小时。没有变化。

注释掉 CDN 后,我再次收到了“第 109 行”错误。也注释掉了底部区域并重建。我可以进入论坛,但我仍然无法上传任何附件。

重建时,它似乎在这里卡了一段时间。

image
不确定这是否有影响,因为它最终会自行通过而无需任何操作。

当 CDN 和底部区域被注释掉时,我可以让论坛工作,但我仍然存在最初的问题……

不确定我遗漏了什么。

重建后,它只是卡在“正在思考”中。起初我以为它可能正在传输所有内容或在后台工作,所以我让它……

就这样放了好几个小时。没有变化。

我检查了“空间”(Spaces),没有文件上传,所以我想它只是卡在某个地方了。

注释掉了 CDN 后,它又给了我“第 109 行”的错误。

也注释掉了底部区域并重建。我可以进入论坛,但我仍然无法上传任何附件。

重建时,它似乎在这里卡了一会儿,但最终会自行通过,所以我不太确定这是否有任何影响……

在注释掉 CDN 和底部区域的情况下,我可以使论坛工作,但我仍然存在最初的问题……

不确定我遗漏了什么。我放弃了,目前暂时将所有 S3 设置都注释掉了。

附注:有没有更新 Docker 的命令?我想我通常是通过管理区域来完成的,但它没有提示我从 24.0.2 更新。不确定这有多大的问题。我认为当前版本是 24.0.7。

我不确定管理员区域设置是否会覆盖 app.yml 设置,反之亦然,但以防万一,以下是这些设置……

我不清楚 S3 和 CDN URL 是否应该包含存储桶名称。也不确定它们是否应该是相同的链接。

希望有人能注意到一些简单的问题。如果您读到这里,再次感谢!

您在使用社交海洋 CDN 吗?

如果 30 秒内没有加载,那可能就不会加载了。但您不需要等那么久。您可以查看浏览器开发工具中的网络选项卡,看看哪些内容没有加载。

我不确定什么是社交海洋 CDN,但我只是想使用 Spaces 内置的 CDN。

抱歉,那是“Digital Ocean”。

我引用的消息说你不应该这样做,因为它不起作用。

如果我能为您提供更多帮助,我的电子邮件地址在我的个人资料中。

1 个赞

好的。这太奇怪了。

现在什么东西在工作了。我以为我已经注释掉了(禁用了)所有内容,昨天上传了一张图片以确保它再次正常工作。我今天早上检查了它的路径,它正在使用……我猜是 CDN?

https://XXXXXXX-storage.sfo3.digitaloceanspaces.com/optimized/2X/9/9b9fdb3eb27831650752b848363ea2a1a66ce137_2_375x500.jpeg

我检查了 Spaces,里面确实有一些图片……

image
看起来图片现在工作正常了。我唯一能想到的就是我在设置中取消勾选了“S3 使用 IAM 配置文件”。我猜这就是它在寻找但停止寻找的关键。不确定我最初为什么勾选它。可能是因为我真的不知道自己在做什么。:slight_smile:

image

运行备份时仍然有问题,但这可能是 Droplet 空间的问题。看起来它没有足够的空间在本地暂存后再上传。既然它现在似乎至少已连接到 Space,我将单独研究这个问题。

image

谢谢 Jay,这周晚些时候我能再折腾一下这个朋友论坛时再联系你。我现在得去付点账单了。

1 个赞

我等我的另一半准备好的时候有几分钟时间,所以我想检查一下空间。多想了一下,我猜那就是问题所在。我用……检查了一下

df -h

哦,是的,真的满了。运行了……

docker system prune -a

运行了……

./launcher cleanup

再次感谢 Jay。

果然,清理出了 20GB 以上的空间。

我手动运行了备份,成功了!!!

现在我正尝试将所有文件从本地存储迁移到 S3……

rake uploads:migrate_to_s3

祝我好运!:slight_smile:

1 个赞

今天早上开会前检查了一些事情。

Rake 似乎没有工作,或者可能仍在进行中。我暂时还不能确定。空间使用量下降了,但当我手动检查一些旧照片时,它们似乎仍然带有旧的本地 URL。我需要深入研究一下。

不确定 rake 和 reback 有什么区别。我假设一个是迁移文件,另一个是更新帖子中的路径。还有待学习。

/import (1.4GB) 和 /uploads (9.2GB) 仍然占用了大量空间。对于我们的小套餐来说,这太多了。我正试图将这些卸载到更便宜的存储空间,而这些是迄今为止最大的部分。

供任何设置相同的人参考,以下是它对端点 URL 的使用情况……

CDN
https://XXXXXX-storage.sfo3.cdn.digitaloceanspaces.com/original/2X/0/15740f130209eb1a6a4f147076eaa20e70a9772d.zip

ORIGIN
https://XXXXXX-storage.sfo3.digitaloceanspaces.com/original/2X/0/15740f130209eb1a6a4f147076eaa20e70a9772d.zip

唯一的区别是 URL 中的 .cdn。我需要更新我的设置。

来自 Copilot 的信息……
_________
要更改 Discourse 中的 CDN 链接后重新烘焙(rebake)帖子,您需要运行 rebake rake 任务,以便所有已烹饪(cooked)的帖子 HTML 都使用新的资源 URL 进行更新。

以下是过程:


1. 进入容器

Shell

cd /var/discourse

./launcher enter app

显示更多行


2. 运行 rebake 任务

Shell

rake posts:rebake

显示更多行

这将:

  • 使用当前设置(包括您的新 s3_cdn_url)重新渲染所有帖子。

  • 更新已烹饪的 HTML,使图片和上传指向 CDN。


可选:加速

如果您的网站规模很大,可以分批运行:

Shell

rake posts:rebake[1000]

显示更多行

这会一次重新烘焙 1000 个帖子。


3. 验证

检查一些带有图片或上传的帖子,以确认它们现在使用的是 CDN URL。

_________
看起来正在运行。我稍后回来查看。

image

去做甜甜圈了。

这会运行重新烘焙,但不是一次只运行 1,000 个。它只是全部运行,并忽略了 [1000] 部分。也许我的语法不太正确。

提醒自己也提醒其他人。我正在菜单中查找此 URL,因为我记反了(.cdn.sfo3. 而不是反过来——这显然破坏了 SSL)。搜索时找不到该设置。然后我找到了一个我已经打开的窗口。我更新了它并尝试保存,得到了这个……

image

我忘记了,一旦设置在 app.yml 中添加,它们就会从管理员设置菜单中消失。现在我记起来了。

重新烘焙似乎奏效了,只是 URL 有误。现在正在更新。

但我的 Space 存储中的文件仍然少于 50 个,所以文件 rake 似乎没有起作用。:thinking:

好的。我认为这是一个小小的突破。我终于弄清楚了这个问题是什么……

“在第 106 行第 3 列解析块映射时未找到预期的键”

查看了一些帖子后,我看到了这个……

我打开了我的文件,果然,有空格。

我确信我添加它们时没多想。我删除了它们。我认为它主要指的是“hooks:”之前的那一个。

它重建成功了。感谢 @RGJ

但是,它仍然不喜欢某些东西。

我仍然没有看到“Spaces”中的项目计数增加,所以它似乎还没有将 /uploads 文件上传到 ‘S3’。这让我很困惑,所以我很高兴这个问题解决了。但我又回到了加载屏幕。

此外,启用该选项后,我只会看到加载屏幕。

我把它注释掉了……

再次重建。结果一样。

注释掉 Spaces S3 设置。

再次重建。

工作正常

  • 论坛加载
  • 图片加载
    • 使用 Spaces 的新图片 - 不是 CDN
    • 使用本地存储的旧图片

不工作

  • 文件未上传到 Spaces
  • 图片加载未使用的 CDN 链接
  • 如果 DISCOURSE_S3 和 after_assets_precompile 没有被注释掉,论坛在浏览器中会一直停留在加载界面

没有其他想法了。一直在原地打转。

我得让这个问题放一放了。至少现在新的上传和备份都将发送到 Spaces,所以空间问题暂时不会再成为问题了。