【问题标题】:Aws SDK Ruby - retrieve credentials automatically when configuring FaradayAws SDK Ruby - 配置 Faraday 时自动检索凭证
【发布时间】:2020-04-13 21:39:40
【问题描述】:

我喜欢使用 AWS 开发工具包,而无需指定在哪里可以找到凭证,它可以更轻松地在不同类型的凭证可用的多个环境中进行配置。

AWS SDK for Ruby 搜索凭证 [...]

有什么方法可以检索执行此操作以使用 AWS 配置 Faraday 的代码吗?为了配置法拉第,我需要类似

faraday.request(:aws_sigv4,
      service: 'es',
      credentials: credentials,
      region: ENV['AWS_REGION'],
    )

现在我希望像在 aws sdk v3 中那样“自动”选择此凭据。我该怎么做?

(即 AWS SDK v3 中执行类似操作的代码在哪里

credentials = Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
unless credentials.set?
  credentials = Aws::InstanceProfileCredentials.new
end
...

【问题讨论】:

标签: amazon-web-services faraday aws-sdk-ruby


【解决方案1】:

Aws::CredentialProviderChain 类是负责解析凭据的类,但它被标记为 @api private,因此目前无法保证它在更新后仍然存在(我已经开启了讨论以将其公开) .

如果您可以使用它,您可以像这样解析凭据。我将在 CI(ENV 凭据)、开发(Aws 配置凭据)和暂存/生产环境(实例配置文件凭据)中对其进行测试。

Aws::CredentialProviderChain.new.resolve

您可以在这样的中间件中使用它(例如配置 Elasticsearch/Faraday)

faraday.request(:aws_sigv4,
  service: 'es',
  credentials: Aws::CredentialProviderChain.new.resolve,
  region: ENV['AWS_REGION'],
)
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2021-05-12
    • 2020-01-08
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多