如何本地运行Serverless框架搭建的带Lambda解析器的AppSync
Serverless + AppSync + Lambda 本地调试步骤
1. 安装本地调试插件
原生的serverless-offline不支持直接运行AppSync服务,需要额外安装适配插件:
npm install serverless-appsync-offline --save-dev
修改serverless.yml的plugins配置,注意插件加载顺序:
plugins: - serverless-appsync-plugin - serverless-pseudo-parameters - serverless-appsync-offline # 必须放在serverless-offline之前 - serverless-offline
2. 追加本地运行配置
在custom配置块中新增AppSync本地运行参数,原有配置无需修改:
custom: # 你原有配置保留,追加以下内容 appsync-offline: port: 20002 # 本地AppSync服务端口,可自定义 host: "0.0.0.0" location: . # 映射模板、schema文件的根目录,匹配你现有项目路径即可 # 本地调试无需对接真实Cognito,可临时切换为简单鉴权或直接关闭鉴权 disableAuth: true # 设为true后所有请求跳过鉴权,方便直接调试业务逻辑 # 如果需要保留鉴权逻辑测试,可使用API_KEY模式,替换原有Cognito配置 # authenticationType: 'API_KEY' # apiKey: 'local_test_key_123456'
3. 启动本地调试服务
执行启动命令即可运行本地AppSync和Lambda服务:
sls offline start
启动成功后可通过 http://localhost:20002/graphql 访问GraphQL端点,直接发送测试请求,也可以在Lambda代码中打断点调试执行逻辑。
常见问题修复
- 提示找不到映射模板:检查
appsync-offline.location配置是否和你存放.txt映射模板的路径一致 - Lambda执行报错:可临时将
provider.runtime修改为你本地Node.js对应的版本,调试通过后再还原为云端需要的版本即可 - 资源引用报错:本地运行时插件会自动模拟云端的角色、用户池等资源,不需要你在本地额外部署这些资源,无需修改原有
Ref、Fn::GetAtt相关配置
内容的提问来源于stack exchange,提问作者Visitha Wijesinghe
相关产品推荐
相关产品推荐

