这是 AWS CDK v2 开发人员指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段,并于 2023 年 6 月 1 日终止支持。
什么是 AWS CDK?
AWS 云开发工具包 (AWS CDK) 是一种开源软件开发框架,用于在代码中定义云基础设施和通过 AWS CloudFormation 对其进行预置。
AWS CDK 包含两个主要部分:
-
AWS CDK 构造库 – 一组预先编写的模块化和可重用代码,称为构造,您可以使用、修改它,也可将其集成以便快速开发基础设施。AWS CDK 构造库的目标是降低在 AWS 上构建应用程序时同时定义和集成 AWS 服务的复杂性。
-
AWS CDK 工具包 - 可用于管理 CDK 应用程序并与之交互的工具,例如执行合成或部署。CDK 工具包由命令行工具 (CDK CLI) 和编程库(CDK 工具包库)组成。
AWS CDK 支持 TypeScript、JavaScript、Python、Java、C#/.Net 和 Go。您可以使用其中任何一种编程语言中来定义称为构造的可重用的云组件。您可以将构造组合成堆栈和应用程序。然后,通过 AWS CloudFormation 部署您的 CDK 应用程序以预置或更新资源。
AWS CDK 的好处
通过 AWS CDK,您可借助编程语言的强大表达能力,在云中构建可靠、可扩展且成本高效的应用程序。这种方法有许多好处,包括:
- 开发和管理基础设施即代码(IaC)
-
实践基础设施即代码,以编程、描述性和声明性的方式创建、部署和维护基础设施。通过 IaC,您可以像开发人员对待代码一样对待基础设施。这为您提供了一种可扩展的结构化方法来管理基础设施。要了解有关 IaC 的更多信息,请参阅《AWS 上的 DevOps 简介白皮书》中的基础设施即代码。
通过 AWS CDK,您可以将基础设施、应用程序代码和配置集中放置于一处,确保在每个里程碑上都获得可在云上部署的完整系统。采用代码审查、单元测试和源代码控制等软件工程最佳实践,使您的基础设施更可靠。
- 使用通用编程语言定义您的云基础设施
-
通过 AWS CDK,您可以使用以下任何一种编程语言来定义云基础设施:TypeScript、JavaScript、Python、Java、C#/.Net 和 Go。选择首选语言,并使用参数、条件、循环、组合和继承等编程元素来定义基础设施的预期结果。
使用相同的编程语言来定义基础设施和应用程序逻辑。
享受在首选集成式开发环境(IDE)中开发基础设施的好处,例如语法高亮显示和智能代码补全。
- 通过 AWS CloudFormation 部署基础设施
-
AWS CDK 与 AWS CloudFormation 集成,可在 AWS 上部署和预置您的基础设施。AWSCloudFormation 是一项托管式 AWS 服务,可为在 AWS 上预置服务提供广泛的资源和属性配置支持。通过 AWS CloudFormation,您可以可预测地重复执行基础设施部署,并在出错时进行回滚。如果您已经熟悉 AWS CloudFormation,则无需了解新的 IaC 管理服务即可开始使用 AWS CDK。
- 使用构造快速开始开发应用程序
-
通过使用和共享称为构造的可重用组件加快开发速度。使用低级别构造定义单个 AWS CloudFormation 资源及其属性。使用高级别构造快速定义应用程序的较大组件,为 AWS 资源设置合理、安全的默认值,进而用更少的代码定义更多的基础设施。
根据您的独特用例自行创建构造,并在组织内共享甚至与公众共享。
AWS CDK 的示例
以下是使用 AWS CDK 构造库创建启动类型为 AWS 的 Amazon Elastic Container Service (Amazon ECS) 服务的示例。有关此示例的更多详细信息,请参阅示例:使用 AWS CDK 创建 AWS Fargate 服务。
该类会生成包含超过 500 行代码的 AWS CloudFormation 模板。部署 AWS CDK 应用程序会生成 50 多种以下类型的资源:
AWS CDK 功能
AWS CDK GitHub 存储库
有关官方 AWS CDK GitHub 存储库,请参阅 aws-cdk
由于 AWS CDK 是开源的,其开发团队鼓励您贡献内容,使其成为更好的工具。有关详细信息,请参阅 Contributing to the AWS Cloud Development Kit (AWS CDK)
AWS CDK API 参考
AWS CDK 构造库提供了各种 API,供您定义 CDK 应用程序并向应用程序添加 CDK 构造。有关更多信息,请参阅 AWS CDK API 参考。
构造编程模型
构造编程模型 (CPM) 将 AWS CDK 背后的相关概念扩展到其他领域。使用 CPM 的其他工具包括:
-
适用于 Terraform 的 CDK
(CDKtf) -
适用于 Kubernetes 的 CDK
(CDK8s) -
Projen
,用于构建项目配置
Construct Hub
Construct Hub
后续步骤
要开始使用 AWS CDK,请参阅开始使用 AWS CDK。
了解更多
要进一步了解 AWS CDK 的更多信息,请参阅以下资源:
-
了解 AWS CDK 核心概念 – AWS CDK 的重要概念和术语。
-
AWS CDK 讲习会
– 动手实践讲习会,可供学习和使用 AWS CDK。 -
AWS CDK 模式
– 由 AWS 专家为 AWS CDK 构建的 AWS 无服务器架构模式的开源集合。 -
AWS CDK 代码示例
– 示例 AWS CDK 项目的 GitHub 存储库。 -
cdk.dev
– AWS CDK 的社区驱动的中心,包括社区 Slack 工作区。 -
Awesome CDK
– 包含精选 AWS CDK 开源项目、指南、博客和其他资源的 GitHub 存储库。 -
AWS 解决方案构造
– 经过审查的配置基础设施即代码 (IaC) 模式,可以轻松组装到生产就绪的应用程序中。 -
AWS 开发人员工具博客
– 针对 AWS CDK 筛选的博客文章。 -
Stack Overflow 上的 AWS CDK
– Stack Overflow 上带有 aws-cdk 标签的问题。 -
适用于 AWS Cloud9 的 AWS CDK 教程 – 关于在 AWS Cloud9 开发环境中使用 AWS CDK 的教程。
要了解 AWS CDK 相关主题的更多信息,请参阅以下资源:
-
AWS CloudFormation 概念 – 由于 AWS CDK 支持与 AWS CloudFormation 搭配使用,我们建议您了解和理解关键 AWS CloudFormation 概念。
-
AWS 术语表 – AWS 中使用的关键术语的定义。
要了解可用于简化无服务器应用程序开发和部署的 AWS CDK 相关工具的更多信息,请参阅以下资源:
-
AWS Serverless Application Model
– 一种开源开发人员工具,可简化和改善在 AWS 上构建和运行无服务器应用程序的体验。 -
AWS Chalice
– 用于在 Python 中编写无服务器应用程序的框架。