外部依赖项的 AWS CDK 模式

问题描述

我们正在寻找建议的设计模式来管理 CDK 堆栈中的外部依赖项。具体来说,我们将 Atlas (mongodb) 与我们的 AWS 堆栈结合使用。我们的 AWS 堆栈完全使用 CDK/CF 部署。我们想在我们的 AWS 账户和 Atlas 实例之间使用 VPC 对等连接。简而言之,提供此对等连接的过程是:

  1. 在 AWS 账户中创建 VPC(目前作为我们 CDK 堆栈的一部分完成)。
  2. 在 Atlas 帐户中请求 VPC 对等连接,引用步骤 1 中的 VPC ID。
  3. 等待几分钟,批准 AWS 账户中的 VPC 对等请求。
  4. 在 AWS 账户中,添加一个路由表条目,将流向 Atlas CIDR 的流量定向到步骤 3 中的 VPC 对等 ID。

有没有人找到适合这种情况的良好 DevOps 模式?在执行第 2 步和第 3 步中的手动操作之后,我们才能执行第 4 步。如果我们在 AWS 中部署堆栈后仅手动执行第 2-4 步,我们将在 CloudFormation 中遇到什么样的漂移问题?>

解决方法

通过一些努力,您应该能够使整个过程自动化。好处是 VPC 对等的生命周期将完全由 cloudformation 管理。

这里的关键是使用 Cloudformation 自定义资源和依赖项。

很遗憾,我找不到完整的 CDK 示例。我想你必须建造它?。

  • Atlas MongoDB 已经使用其 CFN resources project 完成了大部分工作。您的用例特别有趣的是 network peering resource
  • AWS-CDK 拥有出色的自定义资源框架。您必须将上述图集 cloudformation 模板迁移到 CDK(或者,您可能include)。有很多很好的例子(谷歌:)。
  • 如果 Cloudformation 无法自动找出所需的依赖树/流,您可以使用 CDK 的 dependson method 进行提示。