Aws SDK Ruby - 配置 Faraday 时自动检索凭证

Aws SDK Ruby - retrieve credentials automatically when configuring Faraday

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

The AWS SDK for Ruby searches for credentials [...]

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

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

现在我希望像在 aws sdk v3 中一样选择此凭据 "automatically"。我该怎么做?

(即 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
...

class Aws::CredentialProviderChain 是负责解析凭据的人,但它被标记为 @api private 所以目前不能保证它在更新后仍然存在(我已开启讨论以使其成为 public)。

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

Aws::CredentialProviderChain.new.resolve

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

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