使用LocalStack本地部署Serverless失败:无法解析configFile变量
问题解决:LocalStack部署Lambda时无法解析configFile变量
针对你遇到的Cannot resolve variable at "custom.configFile": Value not found at "file" source报错,按以下步骤排查修复:
1. 补全provider配置的默认stage
你的serverless.yml里未定义provider块的stage默认值,导致${opt:stage, self:provider.stage}在未传--stage参数时解析为空,最终configFile路径变成./config/.json,自然找不到文件。
添加provider配置并设置默认stage:
service: score-api frameworkVersion: '3' # 新增provider块,设置默认stage为dev provider: stage: dev region: us-east-1 # 可根据需求修改默认区域 plugins: - serverless-deployment-bucket - serverless-localstack custom: stage: ${opt:stage, self:provider.stage} region: ${opt:region, self:provider.region} configFile: ${file(./config/${self:custom.stage}.json)} # 其余配置保持不变...
2. 确认配置文件存在
确保项目根目录下的config文件夹里,存在对应stage的JSON文件。比如使用dev stage时,必须有config/dev.json文件,文件内容可设为基础结构(哪怕是空对象):
{}
3. 修正LocalStack插件的布尔值大小写
YAML的布尔值为小写格式,你配置里的mountCode: True和sudo: False会被识别为字符串,可能导致插件异常,改成小写:
localstack: # 其余配置不变... lambda: mountCode: true # 改为小写true docker: sudo: false # 改为小写false
4. 验证变量解析结果
执行以下命令查看变量解析后的最终配置,确认configFile路径正确:
serverless print --stage dev
完成以上步骤后,重新执行部署命令即可:
serverless deploy --stage dev
内容的提问来源于stack exchange,提问作者Monil Patel
相关产品推荐
相关产品推荐

