Java连接本地Docker部署的DynamoDB时报Unsupported SSL message错误
问题排查与解决方案
根因说明
你遇到的SSL报错和无法访问web shell的问题核心原因一致:
本地Docker部署的DynamoDB默认仅暴露HTTP服务,没有配置SSL证书,而AWS Java SDK默认会对所有端点默认使用HTTPS协议发起请求,用HTTPS协议请求HTTP端口就会触发SSL握手失败的错误。
修复步骤
- 修正端点配置,必须显式添加
http://前缀
你当前填写的端点仅为localhost:8000,SDK会默认识别为HTTPS协议,将端点值改为http://localhost:8000即可解决绝大多数场景的问题。 - (可选)关闭SDK的SSL校验配置
如果修改前缀后仍报错,需要额外给客户端添加关闭SSL的配置,调整后的代码如下:
// 新增客户端配置,指定使用HTTP协议 ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTP); AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard() .withCredentials(amazonAWSCredentialsProvider()) .withClientConfiguration(clientConfig); // 注入刚才的配置 if (StringUtils.isEmpty(endpoint)) builder.withRegion(Regions.fromName(awsRegion)); else builder.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, awsRegion)); return builder.build();
验证
修改完成后重启Java应用即可正常读写本地DynamoDB,同时直接访问http://localhost:8000/shell就能正常打开web控制台。
内容的提问来源于stack exchange,提问作者N.Rajal
相关产品推荐
相关产品推荐

