无服务器部署 serverless-plugin-split-stacks 插件不会减少任何配置中的根资源

问题描述 投票:0回答:1

更改 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

有没有办法/配置来减少根目录中的资源数量,以便我可以部署?

node.js amazon-web-services aws-cloudformation serverless
1个回答
0
投票

如果为时已晚,我深表歉意,但我相信您必须更改现有 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

© www.soinside.com 2019 - 2024. All rights reserved.