amazon-web-services - Aws SDK Ruby - 配置 Faraday 时自动检索凭证
问题描述
我喜欢使用 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
...
解决方案
该类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
推荐阅读
- javascript - Mongoose 模型不保存引用模型?
- r - 获取行长不均匀的数据框列表
- python - 将一列json字符串转换成数据列
- python - 估计器应该是实现“拟合”方法的估计器
- python - 从Python中的全名列表中提取名字
- html - 不覆盖全屏
- python - 将 Jupyter Notebook "%" 命令转换为普通 python
- apache-spark - 谓词下推可用于压缩 Parquet 文件吗?
- java - Java 9 中删除了哪些类?在 Java 9 上获取 NoClassDefFoundError。Java 8 工作
- html - 文本不是从图像的基线呈现的。可以用于 CHM,但不能用于 HTML