当前位置: 首页 > 知识库问答 >
问题:

无法将Rails项目的凭据设置为使用具有IAM角色的S3

苏华荣
2023-03-14

我正在使用ActiveStorage将文件上载到S3存储桶。如果有人熟悉Heroku Bucketer插件,我用它测试了一段时间ActiveStorage,并将文件上传和下载到bucket中。

出于某些原因,我必须使用IAM角色将凭据设置为新的AmazonS3 bucket,其中只包含bucket名称和区域。在ActiveStorage RubyOnRails指南中,它说:

如果要使用环境变量、标准SDK配置文件、配置文件、IAM实例配置文件或任务角色,可以省略上面示例中的access\u key\u id、secret\u access\u key和region key。

无论我得到什么

(Aws::Sigv4::Errors::MissingCredentialsError)
- :access_key_id and :secret_access_key
- :credentials
- :credentials_provider

我的储藏室。yml看起来像这样:

amazon:   
  service: S3   
  bucket: <%= ENV['BUCKET_NAME'] %>   
  region: <%= ENV['AWS_REGION'] %>

我已经编写了config。主动存储。服务=:amazon都在开发中。rb和生产。铷

我已经尝试将ActiveStorage配置为使用具有IAM角色的S3,但没有成功。

我使用的是Rails 5.2。4.1,Ruby 2.6。3,并且在gem文件中有gem'aws sdk'

共有1个答案

宋琛
2023-03-14

尤其是在开发中工作时,您需要提供访问密钥\u id机密访问密钥。您可以通过放入存储器来实现这一点。yml

amazon:
  service: S3
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> 
  secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
  bucket: <%= ENV['BUCKET_NAME'] %>   
  region: <%= ENV['AWS_REGION'] %>

或者,请确保您设置了正确的环境变量,以启用AWS指定的aws凭据的隐式查找。即设置环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

 类似资料:
  • 我正在尝试使用已附加到EC2实例的IAM角色来生成一组AWS SES SMTP凭据。但是,在尝试通过django发送电子邮件时,使用Amazon提供的脚本从IAM角色的密钥生成SMTP密码,并使用IAM角色的访问密钥ID。果心邮件,我收到错误。 这是我发送邮件的方式: 我如何生成密码: SMTP密码生成脚本如下所示:https://docs.aws.amazon.com/ses/latest/De

  • 我们有许多SecureString SSM参数存储值是通过bash脚本自动创建的。使用通过CloudFormation创建的特定于环境的KMS密钥+别名对其进行加密。 模板中还有EC2实例的IAM角色,它们需要允许检索和解密SSM参数。为了允许这一点,我们通过引用IAM角色ARN作为原则,在创建KMS密钥时授予对这些IAM角色的访问权。 但是,我们的AWS帐户中有一些非特定于环境的SSM变量,这些

  • 创建了一个Java应用程序并部署在EC2实例中,将EC2实例配置文件角色与实例相关联 通过AWS调用AWS API时JavaSDK V2以及V1得到以下错误 无法从系统设置加载凭据。必须通过环境变量(AWS_Access_key_ID)或系统属性(AWS.accessKeyId)指定访问密钥。 是否有任何与权限/设置相关的内容 注意:我不想在应用程序中使用访问密钥和密钥,我想使用STS承担角色

  • 我尝试将该角色用作: 但我得到了一个错误: 因此,IAM的角色似乎无法取代 根据http://boto3.readthedocs.io/en/latest/guide/configuration.html 我仍然需要使用密钥,这可能会带来安全风险,即使没有在代码中使用 有没有一种方法可以在不使用aws API凭据的情况下使用具有管理员权限的boto3? 所以基本上: > #!/usr/bin/en

  • 我使用预先签名的post/url上传到S3并从S3下载。预签名的url/post是通过Lambda函数中的boto3生成的(它是通过zappa部署的)。 当我添加我的和作为env变量时,效果非常好。然后,我删除了我的凭据,并向lambda添加了一个IAM角色,以完全访问S3存储桶。之后,lambda返回带有预先签名的URL和运行良好,但是当我想通过URL上传对象时,它返回一个错误。使用的密钥id,

  • 问题内容: 我希望使用Amazon的Elasticsearch服务器在Django数据库中搜索长文本字段。但是,我也不想向那些没有登录并且不想通过模糊性或某些IP限制策略依赖安全性的用户公开此搜索(除非它可以与现有的heroku应用完美配合,部署Django应用的位置)。 Haystack似乎在这方面还有很长的路要走,但是似乎没有一种简单的方法来配置它以使用Amazon的IAM凭据来访问Elast