You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Golang+AWS SDK创建EC2实例时遇凭证错误

解决AWS SDK for Go创建EC2实例时的NoCredentialProviders错误

问题核心

报错NoCredentialProviders: no valid providers in chain表示AWS SDK无法找到有效身份凭证来调用EC2 API。你的代码指定了使用default配置文件,但SDK未在凭证链的任何位置找到有效凭证。

解决方法

1. 配置AWS凭证文件(推荐生产/日常使用)

Windows系统中,AWS凭证文件默认路径为C:\Users\<你的Windows用户名>\.aws\credentials(.aws为隐藏文件夹,需开启显示隐藏项目)。创建该文件并填入你的IAM用户密钥:

[default]
aws_access_key_id = 你的AWS访问密钥ID
aws_secret_access_key = 你的AWS秘密访问密钥
  • 密钥需从AWS控制台的IAM用户页面生成,确保该用户拥有AmazonEC2FullAccess权限(新手可先附加此托管策略,后续再按需缩小权限)。

2. 正确配置Windows环境变量

若使用环境变量方式,需确保:

  • 环境变量名必须为AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY(全大写)
  • 设置后重启IDE或终端,使变量生效
  • 可通过命令行执行echo %AWS_ACCESS_KEY_ID%和echo %AWS_SECRET_ACCESS_KEY%验证是否配置正确

3. 代码临时指定凭证(仅用于测试)

仅在测试场景下可直接在代码中硬编码凭证(生产环境禁止此操作),修改session创建代码:

sess, err := session.NewSessionWithOptions(session.Options{
    Config: aws.Config{
        Region: aws.String("us-west-2"),
        Credentials: credentials.NewStaticCredentials(
            "你的访问密钥ID",
            "你的秘密访问密钥",
            "", // IAM用户无需token,留空
        ),
    },
})

注意:需先导入"github.com/aws/aws-sdk-go/aws/credentials"包。

4. 额外验证项

  • 确认IAM用户密钥未过期、未被禁用
  • 检查代码中指定的Regionus-west-2是否正确,以及AMIami-0b0154d3d8011b0cd存在于该区域
  • 确认密钥对ec2--teamspeak已在us-west-2区域创建

内容的提问来源于stack exchange,提问作者steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:13:26