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
。
不过我不知道您是否也可以覆盖区域。您可能想尝试取消该选项,看看它是如何工作的。
我想将我的凭据存储在 ~/.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
。
不过我不知道您是否也可以覆盖区域。您可能想尝试取消该选项,看看它是如何工作的。