因此,理论上,如果一个人需要Amazon服务器的有效凭据,而不是在其访问密钥/密码中进行硬编码,则可以调用169.254.169.254获得访问某些资源的凭据,如下所示:
js = ''
open('http://169.254.169.254/latest/meta-data/iam/security-credentials/<role>') { |f|
f.each_line {|line| js += line}
}
credentials = JSON.load(js)
ndnode[:s3_access_key_id] = credentials['AccessKeyId']
ndnode[:s3_secret_access_key] = credentials['SecretAccessKey']
然后在这里使用访问信息:
conn = AWS::EC2::Base.new(:access_key_id => ndnode[:s3_access_key_id],
:secret_access_key => ndnode[:s3_secret_access_key])
# THIS ALWAYS FAILS
result = conn.describe_instances(:instance_id => instance_id)
我不喜欢把我的访问密钥和密码硬编码到源代码中,我想找个解决办法。
( 1)我和我的老板认为这是一种解决办法是对的吗? 2)如果是1,正确的做法是什么?如果不是1,是否有一种方法可以避免将凭据签入源(无论是在这里还是在配置文件中),以及它是什么? 3)以响应@Edwin的响应,在AWS创业板API中,我应该将安全令牌放在哪里?据报道,Boto允许我连接给我的凭据,这意味着分叉一个进程,并设置一些环境变量,以便Ruby可以使用Boto连接的信息请求。
发布于 2013-01-31 12:26:27
许多AWS支持内置的EC2概要文件中的IAM角色。对于.Net,您可以使用一个无参数构造函数来使用它们。确保您使用的是最新版本的SDK。
https://serverfault.com/questions/473700
复制相似问题