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

上传文件至AWS Glacier时遇‘Unable to load AWS credentials from any provider in the chain’错误排查求助

解决AWS Glacier上传时的"Unable to load AWS credentials"异常

你的问题核心在于**AmazonGlacierClient实例没有正确获取到凭证**——虽然你创建了credentials对象并传给了ArchiveTransferManager,但客户端本身初始化时没有传入凭证提供者,它会默认遍历系统环境变量、IAM角色等凭证链,自然找不到你存在classpath文件里的密钥。

快速修复方案

修改AmazonGlacierClient的初始化代码,把你的credentials对象直接传入构造函数:

// 原来的代码:没有传入凭证
// AmazonGlacierClient client = new AmazonGlacierClient();

// 修改后的代码:传入credentials
AmazonGlacierClient client = new AmazonGlacierClient(credentials);

这一步是关键,因为Glacier客户端需要凭证来签署所有API请求,ArchiveTransferManager只是基于客户端的封装,无法替客户端补全凭证配置。

额外检查项

如果修改后还是有问题,可以排查以下细节:

  • 凭证文件位置与名称:ClasspathPropertiesFileCredentialsProvider默认读取classpath根目录下的AwsCredentials.properties文件。如果你的文件名不是这个,需要在初始化时指定:
    AWSCredentialsProvider credentials = new ClasspathPropertiesFileCredentialsProvider("你的凭证文件名.properties");
    
  • IAM权限验证:确保你的AWS密钥拥有Glacier上传所需的权限,比如glacier:UploadArchive、glacier:DescribeVault等(可以通过IAM控制台配置对应的权限策略)。
  • SDK版本兼容性:如果你使用的是较新的AWS SDK for Java,建议迁移到AmazonGlacierAsyncClient或者更现代的客户端构造方式,但当前场景下,传入凭证的修改已经能解决问题。

修改后的完整代码片段

public static void main(String[] args) {
    System.out.println("credentials AKID:" + credentials.getCredentials().getAWSAccessKeyId() + " SK:" + credentials.getCredentials().getAWSSecretKey());
    // 传入credentials初始化客户端
    AmazonGlacierClient client = new AmazonGlacierClient(credentials);
    client.setEndpoint(HTTPS_URL);
    ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials);
    try {
        archiveId = atm.upload(vaultName, "Tax 2012 documents", new File(archiveToUpload)).getArchiveId();
        System.out.println("uploaded:" + archiveId);
    } catch (AmazonClientException | FileNotFoundException e) {
        e.printStackTrace();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:27:35