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

AWS Java SDK 1与SDK 2的ProfileCredentialsProvider差异及报错排查

两个ProfileCredentialsProvider的核心差异
  • 所属SDK版本不同
    • com.amazonaws.auth.profile.ProfileCredentialsProvider 属于AWS Java SDK 1.x旧版本
    • software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider 属于AWS Java SDK 2.x重写版本,是官方新一代SDK的标准组件
  • 配置读取逻辑不同
    • v2版本实现会优先读取AWS_CONFIG_FILE、AWS_SHARED_CREDENTIALS_FILE环境变量指定的配置路径,同时默认合并读取~/.aws/credentials和~/.aws/config两个文件的profile配置
    • v1版本的ProfileCredentialsProvider默认仅读取~/.aws/credentials文件中的profile配置,不会主动读取~/.aws/config文件的配置,若将default profile写在config文件中会直接识别失败
  • 构造规则不同
    • v1支持直接传入profile名称构造实例
    • v2强制使用Builder模式构造实例
报错原因

你遇到的No AWS profile named 'default'异常,核心是v1版本的ProfileCredentialsProvider未定位到你的default profile,常见触发场景有两类:

  1. default的凭证配置写在了~/.aws/config文件中,v1默认不读取该文件的凭证信息
  2. 你通过环境变量指定了自定义的配置文件路径,v1原生不支持自动识别该类自定义路径,仅会读取默认路径下的credentials文件
修复方案

可选择任意一种方案解决v1的报错问题:

  1. 将default的凭证配置迁移到~/.aws/credentials文件中,格式参考:
[default]
aws_access_key_id = 你的访问密钥ID
aws_secret_access_key = 你的秘密访问密钥
  1. 显式指定配置文件路径构造实例:
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
        // 第一个参数传入你的配置文件实际路径
        .withCredentials(new ProfileCredentialsProvider("~/.aws/config", "default"))
        .withRegion("us-east-1")
        .build();
  1. 直接使用v1默认凭证链加载逻辑,无需显式指定ProfileCredentialsProvider,默认会自动按优先级读取环境变量、系统属性、默认路径配置文件、EC2实例角色等凭证:
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
        .withRegion("us-east-1")
        .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:45:04