我正在尝试配置 ActiveStorage 以使用 ECS 凭证,但找不到任何有关如何配置它的文档。
现在我有:
staging:
service: S3
region: "MYREGION"
bucket: "MYBUCKETNAME"
credentials: Aws::ESCCredentials
但我不认为这是正确的?
我正在尝试遵循 ActiveStorage 网站上的文档: https://edgeguides.rubyonrails.org/active_storage_overview.html#s3-service-amazon-s3-and-s3-known-apis 导致 https: //docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Client.html#initialize-instance_method 。我只是不知道如何在
credentials
字段中设置正确的值。
什么对我有用:
在
storage.yml
:
staging:
service: S3
region: "MYREGION"
bucket: "MYBUCKETNAME"
然后,在
config/initializers
中创建一个名为 aws.rb
的额外文件,其中包含以下内容:
require 'aws-sdk-core'
if Rails.env === 'staging' || Rails.env === 'production'
Aws.config.update(credentials: Aws::ECSCredentials.new)
end
当然,ECS 容器本身必须设置为包含必要的环境变量(这两个资源帮助我做到了这一点:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs -taskdefinition.html 和 使用带有 terraform 的 Fargate 在 AWS 上部署 Docker 化的 Web 应用程序)
希望这可以帮助其他尝试做类似事情的人。