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

Kotlin使用AWS SDK访问本地DynamoDB报连接被拒绝如何解决

解决方案

你遇到的socket connection refused错误是由本地DynamoDB客户端配置错误导致的,按以下步骤修改即可解决:

1. 核心错误原因

  • 本地DynamoDB默认走HTTP协议,SDK默认会尝试HTTPS连接,同时会校验SSL证书,无证书时会连接失败
  • 本地DynamoDB不需要真实AWS凭证,未配置虚拟凭证时也会触发连接异常
  • 原有端点构造方式冗余,容易出现协议/端口匹配错误

2. 正确的客户端初始化代码

import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.sdk.kotlin.runtime.endpoint.StaticEndpointResolver
import aws.smithy.kotlin.runtime.client.endpoints.Endpoint
import aws.smithy.kotlin.runtime.auth.awscredentials.Credentials
import aws.smithy.kotlin.runtime.auth.awscredentials.StaticCredentialsProvider

val dynamoDbClient = DynamoDbClient {
    // 区域可以随意填写,本地DynamoDB不会校验区域
    region = "us-west-1"
    // 直接填入本地DynamoDB的完整HTTP访问地址
    endpointResolver = StaticEndpointResolver(Endpoint("http://localhost:8000"))
    // 填入任意虚拟凭证即可,本地DynamoDB不会校验凭证有效性
    credentialsProvider = StaticCredentialsProvider(Credentials("testId", "testSecret"))
    // 关闭SSL校验,避免HTTP场景下的证书验证失败
    httpClient {
        engine {
            ssl {
                isVerify = false
            }
        }
    }
}

3. 可选排查步骤

如果修改配置后仍然报错,执行以下检查:

  • 执行netstat -ano | findstr :8000确认8000端口被DynamoDB的Java进程占用
  • 如果启动本地DynamoDB时指定了自定义端口,需要和配置文件中的端口保持一致
  • 关闭系统代理,或者将localhost加入代理排除列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:48:03