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

使用AWS S3 Java示例上传文件时遇301端点错误求助

解决AWS S3上传时的301重定向错误

这个301错误我之前用Java SDK v2操作S3时也踩过坑,核心原因就是你的请求发送到了错误的S3区域端点——S3的规则很明确:不同区域创建的桶,必须使用对应区域的专属端点来访问,否则就会返回这种要求你切换端点的重定向错误。

下面是结合你用的PutObject示例代码的具体解决步骤:

1. 先确认你的S3桶所在的区域

先登录AWS S3控制台找到目标桶,进入「属性」标签页,找到「区域」字段(比如us-west-2、eu-central-1或者中国区的cn-north-1),把这个区域信息记下来,后面要用到。

2. 修改S3Client初始化代码,指定正确区域

你原来的示例代码里,S3Client可能是用默认配置创建的,现在需要明确指定桶所在的区域。比如:

// 替换成你刚才查到的桶的实际区域
Region targetRegion = Region.of("us-west-2");

S3Client s3 = S3Client.builder()
        .region(targetRegion)
        .credentialsProvider(DefaultCredentialsProvider.create())
        .build();

这样SDK就会自动使用对应区域的S3端点发送请求,从根源避免重定向错误。

3. 特殊情况:AWS中国区或自定义端点

如果你的桶在AWS中国区(比如北京、宁夏区域),或者使用的是私有云环境的S3兼容服务,需要直接指定端点地址:

Region targetRegion = Region.of("cn-north-1");
URI s3Endpoint = URI.create("https://s3.cn-north-1.amazonaws.com.cn");

S3Client s3 = S3Client.builder()
        .region(targetRegion)
        .endpointOverride(s3Endpoint)
        .credentialsProvider(DefaultCredentialsProvider.create())
        .build();

额外提醒

  • 别依赖S3自动重定向:虽然旧版本SDK可能会自动处理301,但这会增加请求延迟,而且新版本SDK默认关闭了这个自动处理逻辑,所以最好一开始就指定正确区域。
  • 顺带确认凭证权限:虽然这个错误是端点问题,但如果凭证没有对应区域的访问权限,也可能出现类似的混淆报错,不过优先解决端点问题就好。

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:11:25