更改 serverless-plugin-split-stacks 插件的配置时,根堆栈中的资源数量保持不变。由于 CloudFormation 有最大 500 个资源的限制,我需要一种可以减少它的方法。
使用以下配置进行拆分时:
splitStacks:
nestedStackCount: 20
perFunction: false
perType: false
perGroupFunction: true
结果如下(数字只是示例,生产环境500以上):
Summary: 462 resources migrated into 20 nested stacks
[serverless-plugin-split-stacks]: ├─ (root): 301
当使用更高的
nestedStackCount
进行分裂时,根将拥有更多的资源。再次使用 perFunction: true
进行拆分时,资源数量只会随着新子堆栈数量的增加而增长:
Summary: 462 resources migrated into 150 nested stacks
[serverless-plugin-split-stacks]: ├─ (root): 431
有没有办法/配置来减少根目录中的资源数量,以便我可以部署?
如果为时已晚,我深表歉意,但我相信您必须更改现有 lambda 函数的名称以将它们拆分到堆栈中,因为该插件在技术上无法与现有资源一起使用。
这是棘手的部分。该插件不适用于现有资源。如果您使用带有force: true的自定义迁移,则可以强制将现有资源迁移到新堆栈,但它会删除资源并重新创建它。它可能会在 CloudFormation 中产生冲突或与 IAM 产生问题。对于生产环境来说这不是一个好主意。
如果您有现有的 Lambda,则需要重命名它们以遵循新的结构。最简单的方法是在他们的名字后面加上下划线。例如,如果您有一个名为 myFunction 的 Lambda,您可以将其重命名为 myFunction_。您可以诚实地使用您喜欢的任何其他后缀,但下划线是一个很好的约定,因为它易于阅读并且视觉上不那么笨重。
在您想要部署到嵌套堆栈的所有 lambda 末尾添加下划线应该可以解决问题。请随意查看这篇文章 - 这是这些引述的出处,也是我们分割资源的依据! https://dev.to/slsbytheodo/override-the-resource-limit-of-aws-cloudformation-templates-with-serverless-framework-3bdh