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

如何在LocalStack部署的Lambda中Mock外部请求响应以做本地测试

问题根源

Lambda运行在LocalStack的容器化执行环境中,代码里的localhost:8082指向的是Lambda自身所在容器的本地地址,而非宿主机器或WireMock容器的地址,因此出现连接拒绝错误。

解决方案

由于LocalStack和WireMock已配置在同一个Docker网络shared-network中,直接使用Docker服务名访问WireMock即可解决连通问题:

  • 将Lambda代码中的URL从http://localhost:8082/api/v1/health改为http://wiremock:8080/api/v1/health
    • wiremock是docker-compose中WireMock服务的名称,Docker会自动解析该名称到对应容器的IP
    • 8080是WireMock容器内部的端口(而非宿主映射的8082)
修改后的Lambda代码
def lambda_handler(event, context):
    print("Lambda invoked")
    # Some code
    my_external_url = "http://wiremock:8080/api/v1/health" # 使用Docker服务名访问WireMock
    requests.get(my_external_url).json()
    # Some code
    return {
        'status': 'OK',
    }
额外验证步骤(可选)

如果仍有问题,可通过以下方式排查:

  1. 进入LocalStack容器,测试与WireMock的连通性:
    docker exec -it localstack_main ping wiremock
    
  2. 在LocalStack容器内直接调用WireMock接口:
    docker exec -it localstack_main curl http://wiremock:8080/api/v1/health
    

内容的提问来源于stack exchange,提问作者Binit Amin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:22:11