我有一个节点应用程序,用于监听 RabbitMQ 队列上的消息,对于它收到的每条消息,它都会启动一个新的独立节点进程来处理消息的内容。
第二个按需启动的节点应用程序与 S3 一起工作,从盒子的 IAM 角色获取其凭据。
事实证明,我似乎在 Node AWS SDK 通过 EC2 元数据服务检索 IAM 角色时遇到了错误。基本上,在负载下,对元数据服务的 http 调用会超时 ( https://github.com/aws/aws-sdk-js/issues/692 )。
因此,作为一种解决方法,我想知道父节点进程是否可以使用某些 API 调用或其他技巧以某种方式检索 AWS 凭证,并将它们在命令行上传递给子节点应用程序?
这意味着父应用程序只需调用一次元数据服务,从而减少其负载。
有可能吗?
最佳答案
让主节点应用从元数据服务检索凭据,将它们本地缓存在内存中,在调用子进程时根据需要传递它们,并让主节点应用在缓存的凭据过期之前刷新它们。
您可以直接从元数据服务检索访问 key ID、 secret 访问 key 、 session token 和过期时间。例如:curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-xyz
将产生:
{
"Code" : "Success",
"LastUpdated" : "2016-01-15T16:20:09Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "xxx",
"SecretAccessKey" : "xxx",
"Token" : "xxx",
"Expiration" : "2016-01-15T23:00:11Z"
}
关于amazon-web-services - 使用 API 调用获取我的 AWS 凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34810642/