使用Serverless Framework部署Lambda时如何解决‘lambda role already exists’错误?
解决Serverless Framework部署时“lambda role already exists”错误
错误原因
- Serverless Framework默认会为每个服务生成IAM角色,命名规则为
{service-name}-{stage}-{region}-lambdaRole。若AWS账户中已存在同名角色,就会触发该错误。 - 常见场景:此前部署过同名服务但未完全清理资源,或手动创建过相同名称的IAM角色。
解决方法
方法1:删除已存在的同名角色
- 登录AWS控制台,进入IAM服务页面
- 左侧菜单选择“角色”,搜索
Timezone-dev-us-east-1-lambdaRole(根据实际服务名、部署阶段、地区调整,默认阶段为dev,地区为us-east-1) - 删除找到的对应角色后,重新执行
serverless deploy
方法2:指定自定义角色
在serverless.yml的provider段添加自定义角色配置,规避命名冲突:
provider: name: aws runtime: python3.8 role: my-custom-lambda-role # 自定义角色名,需确保该角色不存在或已配置好Lambda执行所需权限
注意:自定义角色需提前配置Lambda基础执行权限(如AWSLambdaBasicExecutionRole)及函数所需的其他权限。
方法3:清理旧部署资源
执行命令彻底移除之前的部署残留:
serverless remove
完成清理后重新部署即可。
补充提示
你的serverless.yml未指定stage和region,默认使用dev阶段与us-east-1地区,对应角色名称为Timezone-dev-us-east-1-lambdaRole,排查时可重点检索该名称。
内容的提问来源于stack exchange,提问作者Syed
相关产品推荐
相关产品推荐

