AWS SAM Local启动API无法外部访问问题求助
解决同一WiFi下Android设备无法访问本地SAM Local API的问题
我来帮你排查这个问题,这种跨设备访问本地SAM服务的场景我之前也遇到过,核心原因是SAM Local默认只监听localhost,其他设备根本连不上,咱们一步步来解决:
1. 修改SAM Local启动命令,监听所有网卡
SAM Local默认绑定的是127.0.0.1,只有本地能访问。你需要在启动命令里加上--host 0.0.0.0参数,让服务监听电脑所有可用的网络接口:
sudo sam local start-api --docker-network db-pros --host 0.0.0.0
这个参数会让SAM API服务对局域网内的所有设备开放。
2. 找到电脑的局域网WiFi IP(不是docker0或以太网IP)
你之前试的docker0是容器内部的网桥IP,Android设备在局域网里根本访问不到这个网段。你需要找的是电脑连接WiFi时分配的IP:
- Linux:执行
ip addr show wlan0,找inet开头的IPv4地址(比如192.168.3.10) - Mac:在「系统设置-网络-Wi-Fi」里查看「IPv4地址」
- Windows:在命令行执行
ipconfig,找「无线局域网适配器 Wi-Fi」下的「IPv4地址」
3. 检查电脑防火墙,开放3000端口
电脑的防火墙大概率会拦截局域网设备对3000端口的请求,你需要手动允许:
- Linux(ufw防火墙):
sudo ufw allow 3000/tcp - Windows:打开「Windows Defender防火墙-高级设置」,添加入站规则,允许TCP 3000端口的连接
- Mac:在「系统设置-网络-防火墙-选项」里,添加SAM Local进程或者直接允许3000端口的入站连接
4. 确认Android设备和电脑在同一网络,且无AP隔离
- 先在Android设备上ping电脑的局域网IP,如果ping不通,检查路由器是否开启了AP隔离(有些路由器叫「客户端隔离」),这个功能会阻止同一WiFi下的设备互相访问,需要关掉。
- 确保两者连接的是同一个WiFi热点,不是2.4G和5G分开的不同SSID(如果路由器有双频,尽量让两者连同一频段)
5. 用正确的地址访问API
在Android设备上访问时,用电脑的局域网IP加端口,比如:
http://192.168.3.10:3000/[lambda-name]
别再用127.0.0.1或者docker0的IP了,这些地址只在本地或容器内部有效。
额外注意点
因为你用了--docker-network db-pros,Lambda容器和数据库容器在同一个docker网络里,这个设置不会影响数据库连接——Lambda容器依然可以通过数据库容器的名称或内部IP访问数据库,不用做额外修改。
内容的提问来源于stack exchange,提问作者user93466
相关产品推荐
相关产品推荐

