glu*_*glu 6 ruby-on-rails amazon-s3 ruby-on-rails-5 rails-activestorage ruby-on-rails-5.2
我正在尝试将 ActiveStorage 配置为使用 S3 存储桶作为存储后端,但是我不想传递任何access_key_id, secret_access_key, region. 相反,我想使用之前定义的 IAM 角色。此处提到了这种配置。它写着(我加了粗体):
如果您想使用环境变量、标准 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"
Run Code Online (Sandbox Code Playgroud)
我已经运行rails active_storage:install,应用了生成的迁移并config.active_storage.service = :amazon在我的应用程序配置中进行了设置。
问题是,当我尝试保存文件时,出现意外错误:
amazon:
service: S3
bucket: bucket_name
credentials:
role_arn: "linked::account::arn"
role_session_name: "session-name"
Run Code Online (Sandbox Code Playgroud)
我正在使用 Rails 5.2.2。
您是在 AWS EC2 实例中还是在您的计算机本地尝试此代码?
如果您检查 AWS 中的身份验证方法:https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/setup-config.html#aws-ruby-sdk-credentials-iam
您将看到以下部分:
使用 IAM 设置凭证
对于 Amazon Elastic Compute Cloud 实例,创建 AWS Identity and Access Management 角色,然后授予您的 Amazon EC2 实例对该角色的访问权限。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Amazon EC2 的 IAM 角色 或 Amazon EC2 用户指南(适用于 Windows 实例)中的 Amazon EC2 的 IAM 角色。
这意味着要使此身份验证方法发挥作用,您必须:
将角色附加到实例后,您的config/storage.yml文件将如下所示:
amazon:
service: S3
bucket: test-stackoverflow-bucket-app
region: "us-west-1"
Run Code Online (Sandbox Code Playgroud)
请注意,区域是必需参数,如果跳过它,您将收到错误:https ://github.com/aws/aws-sdk-ruby/issues/1240#issuecomment-231866239
恐怕这在本地不起作用,要active_storage在本地使用,您必须设置access_key_id,secret_access_key值。
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |