【发布时间】:2019-08-06 20:28:09
【问题描述】:
我正在尝试将 ActiveStorage 配置为使用 S3 存储桶作为存储后端,但是我不想传递 access_key_id、secret_access_key、region 中的任何一个。相反,我想使用之前定义的 IAM 角色。提到了这种配置here。上面写着(我加了粗体):
如果您想使用环境变量、标准 SDK 配置文件、配置文件、IAM 实例配置文件或任务角色,您可以省略上面示例中的 access_key_id、secret_access_key 和区域键。 Amazon S3 服务支持 AWS 开发工具包文档中描述的所有身份验证选项。
但是我无法让它工作。我的storage.yml 看起来像这样:
amazon:
service: S3
bucket: bucket_name
credentials:
role_arn: "linked::account::arn"
role_session_name: "session-name"
我已经运行了rails active_storage:install,应用了生成的迁移并在我的应用配置中设置了config.active_storage.service = :amazon。
问题是当我尝试保存文件时,我遇到了意外错误:
u = User.first
s = StringIO.new
s << 'hello,world'
s.seek 0
u.csv.attach(io: s, filename: 'filename.csv')
Traceback (most recent call last):
2: from (irb):3
1: from (irb):3:in `rescue in irb_binding'
LoadError (Unable to autoload constant ActiveStorage::Blob::Analyzable, expected /usr/local/bundle/gems/activestorage-5.2.2/app/models/active_storage/blob/analyzable.rb to define it)
我使用的是 Rails 5.2.2。
【问题讨论】:
标签: ruby-on-rails amazon-s3 ruby-on-rails-5 rails-activestorage ruby-on-rails-5.2