为什么iDrive的S3端点被Discourse拒绝?

它需要什么格式?
或者截图中第一个选项只允许 Amazon AWS S3 吗?

如果只输入主机名,它是否有效?

1 个赞

您的意思是,我只需在 S3 CDN URL 中填入 (https://)idrivee2-51.com
不,它也报了同样的错误。

您有尾随空格吗?

2 个赞

查看验证器,它是:

  s3_endpoint:
    default: ""
    regex: '^https?:\\/\\/.+[^\\/]$'

所以检查你输入的值表明它完全没问题:

[1] pry(main)> 'https://b1v7.or.idrive2-51.com'.match /^https?:\\/\\/.+[^\\/]$/
=> #<MatchData "https://b1v7.or.idrive2-51.com">

显然,字段中的某个地方有问题。正如 @pfaffman 所建议的,请检查空格。

如果仍然不起作用,从 rails 控制台测试是否有效?

我预计这会失败:

[1] pry(main)> SiteSetting.s3_endpoint = 'gopher://b1v7.or.idrive2-51.com'
Discourse::InvalidParameters: s3_endpoint: Value doesn't match the required format.
from /home/michael/prog/Discourse/discourse/lib/site_settings/type_supervisor.rb:288:in `validate_value'

但这应该有效:

[1] pry(main)> SiteSetting.s3_endpoint = 'https://b1v7.or.idrive2-51.com'
=> "https://b1v7.or.idrive2-51.com"
2 个赞

没有。一点也没有。

但我很惊讶今天它接受了同样的值,而之前(一直以来,我只是从 idrive 网站复制,然后粘贴在这里,今天也做了同样的事情)它一直没有接受。

而且,我认为它有时会拒绝接受刚才还能接受的值。

但总而言之,我现在已经解决了这个问题。

好的,现在已经解决了。

但是请告诉我,S3 CDN url 字段应该填写什么(或者留空)?它已经填入了之前/AWS 时期的值:https://bhdisco.s3.ap-south-1.amazonaws.com/uploads

您确实想在 cdn 字段上放置 cdn。您可以放置存储桶 URL,但这会花费更多且速度更慢。

1 个赞

好的,我明白了。
但这感觉太麻烦了,我最好只使用推荐的 S3 存储桶提供商,AWS!因此,我再次恢复了 AWS ID 和密钥。

但在此过程中,我遇到了新的障碍。尽管我没有在 AWS 界面中更改任何内容,除了加强我的登录验证之外,现在只有当我为所有“公共”设置打开“读取”访问权限时,上传到其中的媒体文件才能在我的网站上显示。
我不知道它之前是如何工作的,以及为什么我现在必须这样设置我的存储桶内容的“权限”:

(我现在更改了两个用红色显示的选项,否则我甚至无法预览我自己的上传内容)

如果您没有配置 CDN 来放在您的存储桶前面,请将其留空。

2 个赞