我觉得我需要在这里提供很多背景信息来理解问题的全部范围,因此,如果这太长时间了或者最终提供了太多信息,我要提前道歉,我只想尽量避免后续问题和澄清要求。我有一个技术交接的项目。它曾经在其他AWS账户中的不同所有者下进行生产。我试图在我控制的AWS帐户中重新启动它,而其中一个软件包给我带来了一些问题。
它使用Serverless来提供几个S3存储桶及其访问策略,几个IAM角色和许多ApiGateway方法。该软件包依赖nested stacks来获得200个资源限制,如here所述。
最后,CircleCI连接的IAM用户已附加AdministratorAccess
策略。
问题
node_modules/.bin/serverless deploy --verbose --stage develop --region us-east-1 --package ./.serverless
失败的确切性质似乎不一致,即,并非总是在同一地点失败。在某个时候,资源只是无法创建,整个过程会回滚。这是几个在+/- 5行中的日志中运行失败的示例,随后是Serverless报告的实际错误
运行1
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod001VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod002VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod003VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod004VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod006Options
CloudFormation - CREATE_FAILED - AWS::CloudFormation::Stack - FuncAbcNestedStack
CloudFormation - CREATE_FAILED - AWS::CloudFormation::Stack - FuncDefNestedStack
CloudFormation - CREATE_FAILED - AWS::CloudFormation::Stack - FuncGhiNestedStack
CloudFormation - UPDATE_ROLLBACK_IN_PROGRESS - AWS::CloudFormation::Stack - org-package-develop
CloudFormation - UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - org-package-develop
CloudFormation - DELETE_IN_PROGRESS - AWS::ApiGateway::Method - ApiGatewayMethod006Options
Serverless Error ---------------------------------------
An error occurred: FuncAbcNestedStack - Embedded stack arn:aws:cloudformation:us-east-1:ACCOUNT_ID:stack/org-package-develop-FuncAbcNestedStack/RESOURCE-ID-001 was not successfully created: The following resource(s) failed to create: [AbcLambdaFunction]. .
运行2
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod001VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod002VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod005VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod006Options
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod004VarOptions
CloudFormation - CREATE_FAILED - AWS::CloudFormation::Stack - FuncDefNestedStack
CloudFormation - CREATE_FAILED - AWS::CloudFormation::Stack - FuncGhiNestedStack
CloudFormation - CREATE_FAILED - AWS::CloudFormation::Stack - FuncAbcNestedStack
CloudFormation - UPDATE_ROLLBACK_IN_PROGRESS - AWS::CloudFormation::Stack - org-package-develop
CloudFormation - UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - org-package-develop
CloudFormation - DELETE_IN_PROGRESS - AWS::ApiGateway::Method - ApiGatewayMethod001VarOptions
Serverless Error ---------------------------------------
An error occurred: FuncDefNestedStack - Embedded stack arn:aws:cloudformation:us-east-1:ACCOUNT_ID:stack/org-package-develop-FuncDefNestedStack/RESOURCE-ID-002 was not successfully created: The following resource(s) failed to create: [DefLambdaFunction]. .
注意:以上日志中的所有唯一标识符已被唯一的新标识符替换/混淆。配置中使用相同的资源。
问题鉴于以上所有,我现在的问题是我该如何调试?
这代表了我(相信)可以得到的所有细节,因为我无法更深入地了解FuncAbcNestedStack
的信息,但是由于我实际上并没有直接使用EC2,所以没有任何帮助。4月4日更新我已经完成了大量尝试调试模板的工作。请注意,我通常不使用模板本身,Serverless会生成它们,然后在应用它们之前将它们转储到S3存储桶中。我已采取了一些步骤
已更新为Serverless的最新版本(troubleshooting errors,来自1.67.0
)
已推翻的现有堆栈
1.30.3
,来自12.16.1
)您需要查看嵌套堆栈本身。与父堆栈事件相比,8.10.0
和AbcLambdaFunction
资源在嵌套堆栈中应具有更详细的故障堆栈事件。您可能需要在嵌套堆栈模板中修复DefLambdaFunction
和AbcLambdaFunction
,因为不一致可能是由于任何资源首先发生故障并开始回滚而引起的DefLambdaFunction
可能已被弃用。 Lambda Runtimes应该可以检查您的模板,以了解更多以及更多可能性