从文件中获取Ruby SDK凭据

时间:2018-04-20 06:38:45

标签: ruby amazon-web-services aws-iam

我想将我的凭据存储在~/.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>

如果我硬编码密钥

,一切正常

2 个答案:

答案 0 :(得分:3)

根据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

答案 1 :(得分:0)

如果你这样做的话 credentials = Aws::SharedCredentials.new() 它会加载default个人资料。您应该可以通过传递myprofile作为选项来加载:profile_name

我不知道你是否也可以覆盖这个区域。您可能想尝试放宽该选项,看看它是如何工作的。