S3备份无法与EC2 IAM配合使用

我已经搜索并研究了关于此问题的所有主题和教程。

当我尝试打开“备份”页面时,我总是收到此错误:

尝试加载 /admin/backups.json 时出错

当我打开 /admin/backups.json 时,我只收到一个通用的“拒绝访问”错误。

我不明白的是,在我的 EC2 实例中使用以下命令可以正常工作:

aws s3 ls s3://my-bucket-name

并且在进入 discourse 容器后(使用 ./launcher enter app),在安装 s3cmd 后,我也可以成功运行此命令:

s3cmd ls s3://my-bucket-name

我也可以使用这些命令将文件上传到我的存储桶,因此 IAM 策略应该没问题,我不明白为什么 Discourse 无法访问该存储桶。我还尝试向 IAM 角色添加“AdministratorAccess”以排除任何权限过于严格的问题。

Discourse 中的配置:

backup location: S3
s3 backup bucket: my-bucket-name
s3 use iam profile: true
s3 region: the correct one. tripple checked.

其余的 s3 选项均未更改 → 因此大部分为空/已禁用。

有什么想法可能出错了?

谢谢!

我不确定这是否与您的 S3 设置有关,这听起来像是 Discourse 内部的权限消息。您是否能够加载 /admin/backups 页面(而不是在末尾附加 .json)?

1 个赞

调试此类问题的最简单方法是检查 Cloudtrail 日志。

这是一个很棒的提示。我能够追踪到权限错误并发现 Discourse 正在使用不同的用户。现在来探讨一下为什么之前没有人遇到这个错误。

我们有一个自定义插件,用于通过 AWS SNS 发送推送通知,该插件通过 Aws.config.update 全局设置凭证,因此 S3 Backup 似乎也使用了错误的凭证,而这些凭证显然没有所需的权限。

我们现在将修复我们的插件,以便本地提供凭证/区域,并支持 EC2 IAM 角色,我目前更倾向于后者 :slight_smile:

感谢您指明了正确的方向!

paresy

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.