首页 > 解决方案 > Cloudformation 对共享资源的依赖

问题描述

情况

我们已经Service A部署Service B same AWS account. 他们都希望在此帐户中部署另一个带有 datalake D (Athena) 的堆栈。

Service A 和 Service B 的 cloudformation 模板是否应该依赖 Datalake D?如果是这样,你会怎么做?或者他们应该只是假设它存在并且只管理他们的下游资源?

感觉你应该引用它,因为如果我们将服务 A 移动到另一个帐户,可能会忘记这种依赖关系。另一方面,我们不希望服务 A 和 B 都部署堆栈,因为它只需要一次。

标签: architectureamazon-cloudformation

解决方案


假设 A、B 和 D 都是要在同一区域和帐户中创建的堆栈,您可以使用跨堆栈引用将 D 与 A 和 B 互连。

在此解决方案中,堆栈 D 将导出其输出。例如:

Outputs:
  OutputFromD:
    Value: <a-value-to-be-exported>
    Export:
      Name: <export-name>

然后,在您需要OutputFromDA 和 B 的地方,您将使用ImportValue。例如,在 A 和 B 中:

Resources:

  SomeResource:
    Properties:
      SomeProperty: !ImportValue <export-name>

推荐阅读