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

Golang连接本地DynamoDB报connection refused连接拒绝错误

问题环境信息
  • Go版本:go1.18.4 darwin/amd64
  • 运行环境:macOS(darwin)amd64,完整Go环境配置如下:
GO111MODULE="off"
GOARCH="amd64"
GOBIN="/Users/esthersue/go/bin"
GOCACHE="/Users/esthersue/Library/Caches/go-build"
GOENV="/Users/esthersue/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/esthersue/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/esthersue/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.18.4"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/8m/b1hsv_350dnbrshykgb_rjj80000gn/T/go-build2590030861=/tmp/go-build -gno-record-gcc-switches -fno-common"
  • 操作场景:首次使用Go开发对接DynamoDB,参照入门教程编写建表逻辑后执行go run main.go
  • 预期结果:成功在DynamoDB中创建目标数据表
  • 实际报错信息:
RequestError: send request failed
caused by: Post "http://localhost:8000/": dial tcp 127.0.0.1:8000: connect: connection refused
报错根因

报错核心是本地8000端口无可用DynamoDB服务:你参考的教程默认使用本地部署的DynamoDB Local调试环境,代码中配置的服务端点为http://localhost:8000,但执行代码前你没有启动本地DynamoDB实例,网络连接被目标端口拒绝,最终请求失败。

解决方案

你可以根据自身需求二选一:

方案1:沿用本地调试环境(和教程逻辑一致)

先启动本地DynamoDB实例,再运行代码:

  • 如果你本地安装了Docker,直接执行以下命令一键启动:
    docker run -p 8000:8000 amazon/dynamodb-local
    
  • 如果你没有Docker环境,可下载DynamoDB Local可执行包,提前安装JRE8及以上版本后,在解压目录执行启动命令:
    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
    

启动完成后确认8000端口处于监听状态,再重新执行go run main.go即可正常完成建表操作。

方案2:直接对接AWS云端DynamoDB服务

如果不需要本地调试环境,可修改代码配置直接操作云端实例:

  1. 删除代码中自定义的本地端点http://localhost:8000配置,AWS SDK会默认根据配置的区域请求云端DynamoDB服务端点
  2. 配置本地AWS访问凭证:可在~/.aws/credentials文件中填写账号AK/SK,在~/.aws/config中配置默认区域,也可通过环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION注入凭证
  3. 确认使用的账号拥有DynamoDB建表相关权限,再执行代码即可。

额外提示:你当前GO111MODULE配置为off,如果拉取AWS SDK依赖时出现问题,可在项目目录执行go mod init 你的项目名称开启Go Modules做依赖管理,避免依赖拉取异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:27:18