我想将我的凭据存储在~/.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>
如果我硬编码密钥
,一切正常答案 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
。
我不知道你是否也可以覆盖这个区域。您可能想尝试放宽该选项,看看它是如何工作的。