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

Do I need to cache the IAM role credentials when using the AWS Node.JS SDK

我们在 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

谢谢

不,使用 AWS Node.js SDK 时不需要缓存 IAM 角色凭证。

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

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

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

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