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

如何解决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默认网络

  1. 查看你的Docker Compose项目对应的网络名称:

    docker network ls
    

    通常名称格式为[你的项目目录名]_default

  2. 启动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. 验证连接

  1. 重启DynamoDB容器:
    docker-compose down && docker-compose up -d
    
  2. 用上述命令重启SAM本地API服务器
  3. 测试你的API接口,确认已能正常连接DynamoDB Local

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:42:14