amazon-web-services - 使用 API 调用获取我的 AWS 凭证

标签 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 凭证,并将它们在命令行上传递给子节点应用程序?

这意味着父应用程序只需调用一次元数据服务,从而减少其负载。

有可能吗?

最佳答案

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

您可以直接从元数据服务检索访问 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/

相关文章:

amazon-web-services - 将 SSL 添加到 AWS Beanstalk

amazon-web-services - 无法从AWS S3下载: Access Denied

ios - 如何在 Linux 上获取苹果二进制文件的 UUID

amazon-web-services - 从临时凭证正确生成 AWS auth header

android - Android 游戏的服务器

amazon-web-services - 了解kms政策?

amazon-web-services - 假定的 IAM 角色无权对资源执行:states:GetActivityTask:arn:aws:states::012345678910:role/

amazon-web-services - 如何使用您自己的 CA(使用 openssl)和 CDK 设置 IAM Roles Anywhere

amazon-web-services - 使用 Terraform 时在 AWS 上创建应用程序自动缩放目标时出错 - 为自定义 `scalable_resource` 定义 `aws_appautoscaling_target`

amazon-web-services - 使用对流层的 ec2、s3、负载均衡器的 AWS 配置