AWS JavaScript SDK v3无法通过EC2的IAM角色使用凭证
问题原因与解决方法
- 核心问题:你在代码里手动配置了
credentials参数,这会覆盖AWS SDK v3的自动凭证链机制。EC2实例上的IAM角色凭证是通过实例元数据服务自动获取的,完全不需要手动指定access key和secret key。 - 修复代码:删除手动配置的
credentials部分,让SDK自动从凭证链获取IAM角色的凭证:
const config = { region: process.env.AWS_REGION };
- 额外验证:如果实例环境变量里设置了
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,建议清除这两个变量,避免SDK优先使用它们而忽略IAM角色。 - SDK v3凭证链优先级:SDK会按以下顺序自动查找凭证:
- 环境变量
- 本地共享凭证文件(~/.aws/credentials)
- EC2实例元数据提供的IAM角色凭证
- 其他身份提供者凭证(如SSO)
内容的提问来源于stack exchange,提问作者GIREESH S
相关产品推荐
相关产品推荐

