嗨,我正在尝试获得活动存储以推送至DigitalOcean空间。但是,即使我已经将数字海洋的端点定义了,我仍发现推URL已更改为amazonaws.com。
这是我在storage.yml中拥有的
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: sfo2
bucket: redacted_bucket_name
endpoint: https://sfo2.digitaloceanspaces.com
当我尝试上传文件时,出现以下错误:
Aws::Errors::NoSuchEndpointError (Encountered a `SocketError` while attempting to connect to:
https://redacted_bucket_name.s3.sfo2.amazonaws.com/a8278561714955c23ee99
在我的gemfile中,我有:gem 'aws-sdk-s3
我已经按照here中找到的说明进行操作,但仍然出现错误。可能有一种新的方法可以做到这一点吗?
答案 0 :(得分:0)
几天前,我刚刚设置了类似的设置。当您检查URL https://redacted_bucket_name.s3.sfo2.amazonaws.com/a8278561714955c23ee99
时,它与您设置的https://redacted_bucket_name.sfo2.amazonaws.com/a8278561714955c23ee99
的实际端点不同。
错误是由无效端点引起的,您击中s3
之前的.sfo2
使端点偏移。您是否碰巧将s3
添加到您的空格配置中?检查您的空间仪表板并尝试正确设置端点。
答案 1 :(得分:0)
在Ubuntu 20.04中使用Rails 6应用程序时,我也遇到了同样的挑战。
这是我的固定方法:
首先,在数字海洋控制台中创建一个 Spaces访问键。此链接应该有帮助-DigitalOcean Spaces API
第二,在config/storage.yml
文件中为DigitalOcean Spaces添加新的配置。在local
存储空间定义之后:
# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
digital_ocean:
service: S3
access_key_id: <%= SPACES_ACCESS_KEY_ID %>
secret_access_key: <%= SPACES_SECRET_ACCESS_KEY %>
region: <%= SPACES_REGION %>
bucket: <%= SPACES_BUCKET_NAME %>
endpoint: <%= SPACES_ENDPOINT %>
注意:您可以输入任何名称,例如digital_ocean_spaces
或其他名称。对我来说,我将其命名为digital_ocean
。
第三,从以下位置修改config.active_storage.service
文件中的config/environments/production.rb
配置:
config.active_storage.service = :local
到
config.active_storage.service = :digital_ocean
最后,在config/application.yml
文件(如果使用的是 Figaro gem)或.env
文件中指定这些环境变量文件。 (如果您使用的是 dotenv gem)。就我而言,我使用的是 dotenv gem,所以我的.env
文件看起来像这样:
SPACES_ACCESS_KEY_ID=E4TFWVPDBLRTLUNZEIFMR
SPACES_SECRET_ACCESS_KEY=BBefjTJTFHYVNThun7GUPCeT2rNDJ4UxGLiSTM70Ac3NR
SPACES_REGION=nyc3
SPACES_BUCKET_NAME=my-spaces
SPACES_ENDPOINT=https://nyc3.digitaloceanspaces.com
仅此而已。
我希望这会有所帮助