使用sls deploy部署Node.js版AWS Lambda函数时报错:函数找不到
针对你遇到的UPDATE_FAILED: HelloLambdaFunction错误(提示Lambda函数shop-manager-admin-api-dev-hello不存在),即使修改了handler导出函数名仍未解决,可按以下步骤排查:
核对serverless.yml的handler配置
确保配置中的handler路径与实际导出的函数名完全匹配。比如你把导出改成了module.exports.server,则yml里的handler字段必须写成handler: handler.server,同时检查handler文件的路径是否正确(比如文件在src目录下的话要写成src/handler.server),避免路径或函数名拼写错误。确认AWS账户与区域一致性
检查sls deploy使用的AWS凭证对应的账户,是否与目标Lambda函数所在账户一致;同时验证serverless.yml中配置的region是否和函数实际部署的区域匹配,跨区域会导致找不到函数。清理Serverless本地缓存
Serverless的本地状态缓存可能过期或异常,执行以下操作重置:- 若允许删除现有栈,先运行
sls remove - 删除项目根目录下的
.serverless文件夹 - 重新执行
sls deploy
若无法删除栈,可尝试sls deploy --force强制更新部署状态。
- 若允许删除现有栈,先运行
验证AWS控制台中的函数状态
登录AWS Lambda控制台,直接搜索函数名shop-manager-admin-api-dev-hello,确认函数是否存在。如果不存在,说明之前的部署未成功创建函数,可查看CloudFormation栈的事件日志,排查前期部署是否有其他错误(比如代码包上传失败、权限问题)。检查IAM部署权限
确保用于部署的IAM角色/用户拥有足够的权限,包括lambda:CreateFunction、lambda:UpdateFunctionCode、cloudformation:UpdateStack等核心权限,权限不足会导致函数创建失败,后续更新时触发"找不到函数"的错误。
内容的提问来源于stack exchange,提问作者Dylan

