Rails Active Storage 推送到 DigitalOcean Spaces
Rails Active Storage push to DigitalOcean Spaces
您好,我正在尝试获取活动存储以推送到 DigitalOcean space。但是,我发现推送 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,但我仍然遇到错误。有没有可能有新的方法来做到这一点?
几天前我自己设置了这样的东西。当您检查 URL https://redacted_bucket_name.s3.sfo2.amazonaws.com/a8278561714955c23ee99
时,它与您设置的实际端点不同 https://redacted_bucket_name.sfo2.amazonaws.com/a8278561714955c23ee99
错误是由您点击的无效端点引起的,.sfo2
之前的 s3
偏移了端点。您是否碰巧将 s3
添加到您的空间配置中?检查您的空间仪表板并尝试正确设置端点。
我在 Ubuntu 20.04 中处理 Rails 6 应用程序时遇到了同样的挑战。
这是我修复我的方法:
首先,在您的数字海洋控制台中创建一个 Spaces 访问密钥。这个 link 应该有帮助 - 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/environments/production.rb
文件中的config.active_storage.service
配置自:
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
就这些了。
希望对您有所帮助
您好,我正在尝试获取活动存储以推送到 DigitalOcean space。但是,我发现推送 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,但我仍然遇到错误。有没有可能有新的方法来做到这一点?
几天前我自己设置了这样的东西。当您检查 URL https://redacted_bucket_name.s3.sfo2.amazonaws.com/a8278561714955c23ee99
时,它与您设置的实际端点不同 https://redacted_bucket_name.sfo2.amazonaws.com/a8278561714955c23ee99
错误是由您点击的无效端点引起的,.sfo2
之前的 s3
偏移了端点。您是否碰巧将 s3
添加到您的空间配置中?检查您的空间仪表板并尝试正确设置端点。
我在 Ubuntu 20.04 中处理 Rails 6 应用程序时遇到了同样的挑战。
这是我修复我的方法:
首先,在您的数字海洋控制台中创建一个 Spaces 访问密钥。这个 link 应该有帮助 - 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/environments/production.rb
文件中的config.active_storage.service
配置自:
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
就这些了。
希望对您有所帮助