如何解决AWS SAM本地API无法连接Docker内DynamoDB Local的问题
解决方案
1. 修复DynamoDB客户端的Endpoint配置
错误提示port undefined是因为Endpoint写法错误,多了一个斜杠后的冒号。修改客户端配置中的endpoint字段:
docClient = new dynamodb.DocumentClient({ accessKeyId: "0600k", secretAccessKey: "k3hwkb", region: "localhost", endpoint: "http://ddb-local:8000", // 去掉多余的冒号 });
2. 让SAM本地容器与DynamoDB容器处于同一Docker网络
SAM Local启动的容器默认使用独立网络,无法直接访问Docker Compose创建的DynamoDB容器,需要手动指定共享网络:
方法一:使用Docker Compose默认网络
查看你的Docker Compose项目对应的网络名称:
docker network ls通常名称格式为
[你的项目目录名]_default启动SAM本地API时指定该网络:
sam local start-api --docker-network [你的网络名称]
方法二:显式定义共享网络(推荐)
修改docker-compose.yml,添加自定义网络:
version: '3.8' services: dynamodb-local: command: "-jar DynamoDBLocal.jar -sharedDb -optimizeDbBeforeStartup -dbPath ./data" image: "amazon/dynamodb-local:latest" container_name: ddb-local ports: - "8000:8000" volumes: - "./docker/dynamodb:/home/dynamodblocal/data" working_dir: /home/dynamodblocal networks: - sam-local-network # 加入自定义网络 networks: sam-local-network: driver: bridge # 定义桥接网络
启动SAM本地API时指定这个网络:
sam local start-api --docker-network sam-local-network
3. 验证连接
- 重启DynamoDB容器:
docker-compose down && docker-compose up -d - 用上述命令重启SAM本地API服务器
- 测试你的API接口,确认已能正常连接DynamoDB Local
内容的提问来源于stack exchange,提问作者Anthony Collins
相关产品推荐
相关产品推荐

