Aws Ruby 来自文件的 SDK 凭据

Aws Ruby SDK credentials from file

我想将我的凭据存储在 ~/.aws/credentials 而不是环境变量中,但我正在努力。

加载我使用的凭据(来自 here

credentials = Aws::SharedCredentials.new({region: 'myregion', profile_name: 'myprofile'}) 

我的 ~/.aws/credentials

[myprofile]
AWS_ACCESS_KEY = XXXXXXXXXXXXXXXXXXX
AWS_SECRET_KEY = YYYYYYYYYYYYYYYYYYYYYYYYYYY

我的 ~/.aws/config

[myprofile]
output = json
region = myregion

然后我用

定义一个资源
aws = Aws::EC2::Resource.new(region: 'eu....', credentials: credentials)

但是如果我尝试举例

aws.instances.first

我收到错误 Error: #<Aws::Errors::MissingCredentialsError: unable to sign request without credentials set>

如果我对键进行硬编码,一切正常

根据 source code aws 仅从 ENV 自动加载凭据。

您可以创建具有自定义属性的凭据。

credentials = Aws::Credentials.new(AWS_ACCESS_KEY, AWS_SECRET_KEY)
aws = Aws::EC2::Resource.new(region: 'eu-central-1', credentials: credentials)

在您的具体情况下,似乎有 no way 可以将自定义凭据传递给 SharedCredentials

如果你只是这样做 credentials = Aws::SharedCredentials.new() 它加载 default 配置文件。您应该能够通过传入 :profile_name 作为选项来加载 myprofile

不过我不知道您是否也可以覆盖区域。您可能想尝试取消该选项,看看它是如何工作的。