使用 CDK、AWS 和 Github 私有存储库部署的最佳实践?

Posted

技术标签:

【中文标题】使用 CDK、AWS 和 Github 私有存储库部署的最佳实践?【英文标题】:Best practice deploying using CDK, AWS, and Github private repos? 【发布时间】:2021-12-28 21:13:21 【问题描述】:

我不太清楚与使用 CDK 将私有 Github 存储库部署到 AWS 相关的最佳实践。我知道管道应该由 CDK 创建,并且管道应该调用 CodeDeploy 来部署资产,但除此之外,细节还不清楚。

我还想了解,对于这个用例,是否有一个单独的 CDK 存储库负责我的项目整个后端的基础架构,或者将 CDK 代码包含在其中是否更有意义每个单独的组件回购。由于我将使用基于微服务/单元的方法来构建组件,因此为每个组件添加 CDK 配置所需的开销可能很大。

【问题讨论】:

【参考方案1】:

您可以将 CDK 视为采用给定语言并将其“编译”成 CloudFormation 模板的编译器。然后这些模板由 CDK 框架上传到 Cloudformation,并在您执行 deploy 命令时为您运行。

所以。为了更直接地回答您的问题 - 如果您可以弄清楚如何在 cloudformation 中做到这一点,那么您就可以做到。这可能涉及启动代码构建并运行脚本来执行一些 api 调用或为 ec2 服务器准备一个包,然后在下一步或任何数量的事情中使用该包。

但请记住,CDK 会一次性合成其 cloudformation 模板,并且只是创建模板。它不运行任何可能是您的代码构建的一部分的脚本,并且它不会“等待”某些事情完成 - 因为它没有做任何类似的事情。如果您有一系列事件需要发生,您希望使用 CodePipeline 为您编排这些事件 - 但您可以确定使用 CDK 设置您的 CodePipeline!

至于开销,也许一开始。但是相信我,当我说为具有经验的给定微服务生成 CDK 堆栈变得非常快速和容易时,它超级方便。能够启动一个临时的按需测试环境非常有用。能够按需部署单个堆栈并仅用一行代码进行快速更改是很方便的,因为所有人都出去了。为您的产品和开发环境提供单一代码源,您在其中进行更改并在下一次部署时自动反映每个源代码非常方便。

CDK 是一个非常强大的工具 - 但它是一个非常低级的工具。它创建将创建您的资源的模板。而已。如果您的资源在创建后需要做某事以发生其他事情,您必须使用其他服务来编排(CodePipeline、StepFunctions、Cloudwatch Events 等)

【讨论】:

以上是关于使用 CDK、AWS 和 Github 私有存储库部署的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

AWS CDK 错误:存储桶上已存在存储桶策略

使用 CDK 将私有 DNS 记录映射到 EC2 实例

aws fargate 和私有容器存储库

AWS CodePipeline 无法访问组织的存储库

将自定义弹性 IP 与 NAT 网关与 AWS CDK 相关联

AWS Codeartifact 未指向私有存储库