跨堆栈引用问题和最佳实践



在引用本文档时:https://github.com/aws/aws-cdk/blob/master/packages/@aws-cdk/core/README.md#删除自动跨堆栈引用我在同一个应用程序中有两个堆栈。

ProducerStack:部署lambdaConsumerStack:获取传递到道具中的lambda引用。

如果我在生产者中更新lambda,那么由于引用阻塞了它,部署会失败。如果我理解正确,我必须删除消费者中lambda的引用,deploy将更新生产者。然后将refs添加回并部署使用者。

所以问题是:在这种情况下,是否真的需要2个部署?如果是这样,那么使用跨堆栈引用是个坏主意吗?

更多信息:我有一个单独的应用程序,它是一个有边界的上下文,但我想把这些问题分开。写入s3存储桶,向供应商发送数据,并在SQS上进行设置。因此,我将这些功能放在单独的堆栈中,以实践良好的关注点分离。但这需要跨堆叠裁判,我现在正在考虑只做一个巨大的堆叠。我知道我可以把它分解成模块,包括它们,并认为这就是我要走的路。

使用跨堆栈引用是个坏主意吗?

恰恰相反。交叉堆栈引用是推荐的CDK模式。它们非常适合您的场景。

在这种情况下真的需要2个部署吗?

只有当CDK(或者更准确地说,CloudFormation(需要销毁(或替换=销毁+创建(另一个堆栈中使用的资源时,才需要此过程。幸运的是,几乎所有Lambda更新都不需要更换。因此,部署死锁(这是为了保护我们自己(是罕见的。名称更改需要资源替换-也许您更改了Lambda的逻辑id?

最新更新