gpt4 book ai didi

typescript - 如何使用 TypeScript 重构 CDK 代码?

转载 作者:行者123 更新时间:2023-12-03 07:46:48 26 4
gpt4 key购买 nike

我创建了一个 CDK 堆栈并将所有代码放入其中(S3 存储桶、Lambda 等);该代码也在生产中,因此我无法删除任何内容或丢失任何数据和日志。

我想以某种方式重构该堆栈,以创建某种与该堆栈分离的类,我将在其中放置所有这些资源,然后在堆栈内调用它。

我尝试这样做,但每次 CloudFormation 尝试创建新资源时。有没有更好的方法可以做到这一点,而不丢失任何东西?

我收到的错误与“资源已存在”有关。

最佳答案

问题在于,当资源的逻辑 ID 更改时,会重新创建该资源。当您将资源提取到单独的构造中时,您将更改其所有资源的逻辑 ID。

documentation for the Stack.allocateLogicalId method 中有对此问题的内置部分解决方案的解释。 :

If a component is named "Default" it will be omitted from the path. This allows refactoring higher level abstractions around constructs without affecting the IDs of already deployed resources.

因此,如果您使用 ID Default 在堆栈中实例化您的构造,则所有资源的逻辑 ID 将保持不变。

这样做的一个明显限制是,在同一范围内只能有一个名为 Default 的构造。

另一种解决方案是将它们提取到一个非 Construct 的普通 TypeScript 类中,并简单地将堆栈的范围传递给所有资源,而不是在类中传递 this

关于typescript - 如何使用 TypeScript 重构 CDK 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77023582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com