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

AWS S3 SDK请求报错:需使用指定端点访问桶问题排查

问题原因分析

你的Java代码中S3客户端指定的区域是EU_CENTRAL_1(法兰克福),但从日志可以看到,目标存储桶myxwaveq实际位于eu-west-1(爱尔兰)区域(日志中连接的端点是myxwaveq.s3.eu-west-1.amazonaws.com)。S3要求请求必须发送到存储桶所在区域的端点,区域不匹配时会返回301重定向错误。AWS CLI会自动处理这种重定向,所以能正常执行,但Java SDK默认不会自动跟进重定向,因此报错。

解决方法

方法1:修正客户端区域配置(推荐)

直接将S3客户端的区域改为存储桶实际所在的EU_WEST_1,这是最直接且高效的方式:

private String putS3Object(String objectKey, String mimeType, byte[] content) {
    // 修正区域为eu-west-1
    S3Client s3 = S3Client.builder()
            .region(Region.EU_WEST_1)
            .build();

    log.info("adding {} - {} - to {} ", objectKey, mimeType, bucketName);
    try {
        PutObjectResponse response = s3.putObject(PutObjectRequest.builder()
                        .bucket(bucketName)
                        .contentType(mimeType)
                        .key(objectKey)
                        .acl(ObjectCannedACL.PUBLIC_READ)
                        .build(),
                RequestBody.fromBytes(content));

        return response.eTag();

    } catch (S3Exception e) {
        log.error(e.getMessage());
    }
    return "";
}

方法2:启用客户端自动重定向(备选)

如果因某些原因无法修改区域,可以配置S3客户端允许自动跟进重定向:

private String putS3Object(String objectKey, String mimeType, byte[] content) {
    S3Client s3 = S3Client.builder()
            .region(Region.EU_CENTRAL_1)
            // 启用自动重定向
            .serviceConfiguration(config -> config.dualstackEnabled(true).enableRedirects())
            .build();

    // 后续代码保持不变
    log.info("adding {} - {} - to {} ", objectKey, mimeType, bucketName);
    try {
        PutObjectResponse response = s3.putObject(PutObjectRequest.builder()
                        .bucket(bucketName)
                        .contentType(mimeType)
                        .key(objectKey)
                        .acl(ObjectCannedACL.PUBLIC_READ)
                        .build(),
                RequestBody.fromBytes(content));

        return response.eTag();

    } catch (S3Exception e) {
        log.error(e.getMessage());
    }
    return "";
}

注意:这种方式会增加一次重定向请求,影响性能,因此优先推荐方法1。

内容的提问来源于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.06.15 12:32:01