当前位置: 首页 > 知识库问答 >
问题:

使用AWS节点时,是否需要缓存IAM角色凭据。JS SDK

涂选
2023-03-14

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

之前我们使用了PHPSDK。Amazon特别建议在PHP SDK中使用基于角色的身份验证时缓存凭据:

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

我现在正在编写一个节点。使用S3客户端的JS应用程序。我想知道是否需要缓存凭据(根据PHPSDK),或者这是节点需要的东西。JSSDK自动为我们做什么?

节点的文档。JS SDK没有特别提到缓存基于角色的凭据:

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

谢谢

共有2个答案

宓季同
2023-03-14

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

即缓存你的亚马逊客户端对象(但这不是PHP,所以你不需要磁盘缓存:))。

万俟经纶
2023-03-14

否,使用AWS节点时不需要缓存IAM角色凭据。jssdk。

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

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

 类似资料:
  • 我正在尝试使用已附加到EC2实例的IAM角色来生成一组AWS SES SMTP凭据。但是,在尝试通过django发送电子邮件时,使用Amazon提供的脚本从IAM角色的密钥生成SMTP密码,并使用IAM角色的访问密钥ID。果心邮件,我收到错误。 这是我发送邮件的方式: 我如何生成密码: SMTP密码生成脚本如下所示:https://docs.aws.amazon.com/ses/latest/De

  • 我的 EC2 实例具有附加了 S3 权限的角色。现在,我使用我的访问密钥和秘密访问密钥加载到s3,但我想依靠该角色并摆脱凭据。我可以这样做吗?或者我是否需要拥有 Go AWS 开发工具包的凭证? 现在,我们正在使用“新建凭据”函数来设置我们的配置。最终目标是将文件上传到 S3。

  • 我使用预先签名的post/url上传到S3并从S3下载。预签名的url/post是通过Lambda函数中的boto3生成的(它是通过zappa部署的)。 当我添加我的和作为env变量时,效果非常好。然后,我删除了我的凭据,并向lambda添加了一个IAM角色,以完全访问S3存储桶。之后,lambda返回带有预先签名的URL和运行良好,但是当我想通过URL上传对象时,它返回一个错误。使用的密钥id,

  • 我尝试将该角色用作: 但我得到了一个错误: 因此,IAM的角色似乎无法取代 根据http://boto3.readthedocs.io/en/latest/guide/configuration.html 我仍然需要使用密钥,这可能会带来安全风险,即使没有在代码中使用 有没有一种方法可以在不使用aws API凭据的情况下使用具有管理员权限的boto3? 所以基本上: > #!/usr/bin/en

  • 场景:我在同一个帐户下有一个EC2实例和一个S3 bucket,我在该EC2上的web应用程序希望访问该bucket中的资源。 在官方文档之后,我使用创建了一个IAM角色,并将其分配给EC2实例。根据我的理解,现在我的web应用程序应该可以访问桶。但是,经过试验,我似乎必须添加桶策略,如下所示: 否则我就被禁止进入。 但是,既然我已经向EC2实例授予了IAM角色,为什么还要使用这个桶策略呢?

  • 我已经读了很多文档,看了很多视频,但是我对IAM角色和Bucket策略仍然很困惑。让我困惑的是: 1)我创建了一个Bucket。那时我可以将它公有或私有。如果我将它公有,那么任何人或任何应用程序都可以“看到”Bucket中的对象。我认为可以将权限设置为添加/删除/获取/列出Bucket中的对象。如果是这样,那么为什么我需要为S3 Bucket添加任何IAM角色,或者添加任何Bucket策略(???