无服务器 - AWS Cloud Formation - 跨堆栈循环依赖

问题描述

我的无服务器基础设施分为多个功能堆栈,每个堆栈都有自己的资源(发电机、主题、队列等)。

对于某些堆栈 A,我需要定义一个 lambda 来监听另一个堆栈 B 的队列事件。

假设从头开始部署,如果先部署 B 效果很好,因为在部署 A 时会创建队列。但我的 ci 目前是:

sls deploy A
sls deploy B

例如,在 B 中添加 SQS 资源并在 A 中引用它会导致部署失败,因为在 A 部署期间,B SQS 资源尚不存在。

如何正确处理这种跨堆栈依赖?

解决方法

如何正确处理这种跨堆栈依赖?

您必须重新设计模板。您不能让 A 中的资源引用 B 中不存在的资源。您必须将所有内容转移到 A 以使其自给自足,或者引入新堆栈,该堆栈将保存公共资源并在 A 和 B 之前部署。