使用AWS Node.JS SDK时是否需要缓存IAM角色凭据

时间:2015-07-08 01:53:23

标签: node.js amazon-web-services amazon-ec2 amazon-s3 amazon-iam

我们在AWS VPC中使用基于角色的IAM凭据。这意味着您永远不会将密钥传递给AWS SDK的客户端。

以前我们使用过PHP SDK。亚马逊特别建议在使用PHP SDK进行基于角色的身份验证时缓存凭据:

https://docs.aws.amazon.com/aws-sdk-php/guide/latest/credentials.html#caching-iam-role-credentials

我现在正在使用S3客户端编写Node.JS应用程序。我想知道是否需要缓存凭据(根据PHP SDK)或者这是Node.JS SDK自动为我们做的事情吗?

Node.JS SDK的文档没有特别提及有关基于缓存角色的凭据的任何内容:

http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html#Credentials_from_IAM_Roles_for_EC2_Instances

由于

2 个答案:

答案 0 :(得分:2)

不,您在使用AWS Node.js SDK时无需缓存IAM角色凭据。

我认为在使用PHP时缓存凭据的建议与PHP使用的请求/ CGI模型有关。在没有缓存的情况下,您的每个请求的PHP进程必须调用EC2实例元数据服务来检索凭据。如果处理高负荷,则不理想。

使用Node.js,您有一个持续运行的节点进程,它可以持久保存凭证,因此只需要调用一次EC2实例元数据服务来检索初始凭据,然后在自动轮换时定期更新凭据(我相信每隔几个小时)。

答案 1 :(得分:1)

据我所知,除非你保留客户端对象,否则当SDK再次实例化时,SDK将返回实例元数据服务(除非你同时实例化一堆客户端,在这种情况下,它们都使用相同的实例元数据请求事件 - 奇数)。

即。缓存您的Amazon客户端对象(但这不是PHP,因此您不需要磁盘缓存:)。