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

部署Serverless API到AWS Lambda时遇ROLLBACK_COMPLETE错误的解决方法

Serverless部署AWS Lambda出现ROLLBACK_COMPLETE错误的解决方案

这个错误说明CloudFormation在创建Serverless所需的托管资源时失败,触发了栈回滚。核心解决思路是先找到导致回滚的具体原因,再针对性修复。

一、排查回滚的根本原因

  1. 登录AWS控制台,进入CloudFormation服务
  2. 在栈列表中找到对应Serverless项目的栈(通常命名为serverless-<项目名>-<阶段名>)
  3. 进入栈详情页,切换到事件标签,从顶部向下查看最新事件,找到状态为CREATE_FAILED的资源,查看其状态原因,这就是触发回滚的直接原因

二、常见问题及解决办法

1. IAM角色权限不足

  • 原因:Serverless使用的IAM角色缺少创建目标资源(Lambda、API Gateway、DynamoDB等)的权限
  • 解决:在serverless.yml的iamRoleStatements中补充对应权限。示例(按需调整,生产环境避免全量权限):
    provider:
      name: aws
      iamRoleStatements:
        - Effect: Allow
          Action:
            - lambda:CreateFunction
            - lambda:AddPermission
            - apigateway:CreateRestApi
            - dynamodb:CreateTable
          Resource: "*"
    

2. 资源名称冲突

  • 原因:要创建的资源(如S3桶、Lambda函数名)已存在,AWS部分资源要求全局/区域唯一
  • 解决:修改serverless.yml中的资源命名规则,添加阶段或环境后缀避免冲突:
    functions:
      mainFunction:
        name: my-service-main-${self:provider.stage}
        handler: src/handler.main
    
    若为S3桶冲突,直接删除同名桶或更换桶名。

3. 资源配置不合法

  • 原因:资源参数不符合AWS限制,比如Lambda内存超出128MB-10240MB范围、API Gateway路径格式错误等
  • 解决:核对serverless.yml中的参数,确保符合AWS规范。例如修正Lambda内存配置:
    functions:
      mainFunction:
        handler: src/handler.main
        memorySize: 256 # 必须在AWS允许的范围内
    

4. VPC配置错误

  • 原因:指定的子网ID、安全组ID不存在,或Lambda角色缺少VPC操作权限
  • 解决:
    • 核对VPC子网、安全组ID的正确性
    • 在IAM角色中添加VPC相关权限:
      iamRoleStatements:
        - Effect: Allow
          Action:
            - ec2:CreateNetworkInterface
            - ec2:DescribeNetworkInterfaces
            - ec2:DeleteNetworkInterface
          Resource: "*"
      

三、重新部署

修复问题后,执行部署命令重新部署:

serverless deploy --stage <你的阶段名称>

内容的提问来源于stack exchange,提问作者Talent Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:02:23