我的组织使用联合访问[在此处输入链接描述] [1],这意味着我需要经常重新生成我的aws凭证,以便对它们进行硬编码,甚至将它们设置为环境变量不是一种选择。
我找到了http://docs.aws.amazon.com/sdkforruby/api/Aws/SharedCredentials.html#profile_name-instance_method来记录课程,但我真的无法将其转换成实际的代码(请原谅我的无知,我不是计算机科学家)。
我尝试过各种各样的方法,但我不知所措。
rds = Aws::RDS::Resource.new(
profile_name: 'foo'
)
不起作用。
答案 0 :(得分:2)
查看Aws :: RDS :: Resource initialize方法,这应该有效。但是,您可能在ENV ['AWS_PROFILE']或shared_config.profile_name中具有profile_name,它覆盖了@profile_name = options [:profile_name]。您可以调试此方法的一种方法是使用pry gem,它允许您在initialize方法中查看这些变量的设置。
# bundle open 'aws-sdk-core'
# Find File 'aws-sdk-core/lib/aws-sdk-core/shared_credentials.rb', line 24
# add require pry; binding.pry under the last @profile_name variable in aws-sdk-core/lib/aws-sdk-core/shared_credentials.rb'
def initialize(options = {})
shared_config = Aws.shared_config
@path = options[:path]
@path ||= shared_config.credentials_path
@profile_name = options[:profile_name]
@profile_name ||= ENV['AWS_PROFILE']
@profile_name ||= shared_config.profile_name
require pry; binding.pry
if @path && @path == shared_config.credentials_path
@credentials = shared_config.credentials(profile: @profile_name)
else
config = SharedConfig.new(
credentials_path: @path,
profile_name: @profile_name
)
@credentials = config.credentials(profile: @profile_name)
end
end
运行您创建的rds变量后,它将触发pry控制台在该方法内部打开。您现在可以访问shared_config.profile_name,ENV ['AWS_PROFILE'以及选项。
pry(main)> options
=> {:profile_name=>"foo"}
@profile_name
=> 'foo' or whatever its set to.
ENV['AWS_PROFILE']
=> see if it returns some value
shared_config.profile_name
=> see if it returns some value