使用API​​调用获取我的AWS凭据

时间:2016-01-15 12:01:05

标签: amazon-web-services amazon-ec2 amazon-iam

我有一个节点应用程序,用于侦听RabbitMQ队列上的消息,并且对于它接收的每条消息,它启动一个新的独立节点进程,用于处理消息内容。

第二个按需启动节点应用程序可以使用S3从IAM角色获取其凭据。

事实证明,我似乎遇到了Node AWS SDK通过EC2元数据服务检索IAM角色的错误。基本上,在负载下,对元数据服务的http调用超时(https://github.com/aws/aws-sdk-js/issues/692)。

因此,作为一种解决方法,我想知道父节点进程是否可以使用某种API调用或其他技巧以某种方式检索AWS凭证,并将它们在命令行上传递给子节点应用程序?

这意味着父应用只能调用元数据服务,减少了对它的负担。

可能以任何方式?

1 个答案:

答案 0 :(得分:2)

让主节点应用程序从元数据服务中检索凭据,将它们本地缓存在内存中,在调用子进程时根据需要传递它们,并让主节点应用程序在它们到期之前刷新缓存的凭据。

您可以直接从元数据服务检索访问密钥ID,秘密访问密钥,会话令牌和到期时间。例如: var query = this.dbContext.Parent.AsNoTracking() .Where(p => p.Age > 70) .Select(p=> new { Parent = p, FirstChild = p.FirstChild, ChildrenCollection = p.ChildrenCollection GrandChildrenCollection = p.ChildrenCollection.SelectMany(cc => cc.GrandChildren) }).FirstOrDefault(); 将产生:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-xyz