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

S3AsyncClient搭配LocalStack上传对象时出现校验和不匹配问题

解决S3AsyncClient上传LocalStack S3时的校验和不匹配错误

当使用S3AsyncClient向LocalStack的S3存储上传对象时,出现Data read has a different checksum than expected错误,可通过以下几种方式解决:

1. 禁用客户端校验和验证

LocalStack对异步上传的校验和处理逻辑和真实AWS S3存在差异,直接在客户端配置中关闭校验和验证即可绕过该问题:

val client = S3AsyncClient.builder()
    .credentialsProvider(DefaultCredentialsProvider.create())
    .region(Region.US_EAST_1)
    .endpointOverride(URI.create("http://localhost:4572"))
    .overrideConfiguration { config ->
        config.checksumValidationMode(ChecksumValidationMode.NONE)
    }
    .build()

2. 调整RequestBody的生成方式

你当前使用Flux生成RequestBody的方式可能触发了LocalStack的兼容性问题,改用更直接的字节数组生成方式试试:

val data = "test".toByteArray()
client.putObject(
    { it.bucket("test").key("test")},
    AsyncRequestBody.fromBytes(data),
).get()

3. 升级LocalStack版本

该问题属于LocalStack已知的兼容性bug,较新的版本可能已经修复这个问题,尝试更新你的LocalStack到最新稳定版。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:25:08