AWS Cloud Development Kit 常见问题

一般性问题

AWS 云开发工具包 (AWS CDK) 是一个开源软件开发框架,可让您使用现代编程语言以代码形式定义云基础设施,并通过 AWS CloudFormation 部署该基础设施。

您可使用 AWS CDK 命令行接口 (CLI) 与您的 CDK 应用程序进行交互。借助 CDK CLI,您可以列出 CDK 应用程序中定义的堆栈,将这些堆栈合成到 CloudFormation 模板中,确定运行中的堆栈实例与 CDK 代码中所定义堆栈之间的区别,并将堆栈部署到任意公共 AWS 区域。

使用 AWS CDK 框架创建 AWS CDK 项目,并执行这些项目以生成 CloudFormation 模板。可以使用 AWS CDK 命令行或在持续交付系统中执行 AWS CDK 项目。

若要开始使用 AWS CDK,最好先阅读《AWS CDK 开发人员指南》的入门部分。只需几分钟,您就可以定义和部署第一个 AWS CDK 应用程序了。如需查看更深入的指导教程,请访问 https://CDKworkshop.com

有。您可以访问 https://github.com/aws-samples/aws-cdk-examples,查看采用多种编程语言的多个 AWS CDK 示例。《AWS 开发人员指南》也提供了一些示例,网址为 https://docs.thinkwithwp.com/cdk/latest/guide/examples.html

AWS 使用 TypeScript 语言构建 AWS 构造库软件包的业务逻辑,并提供目标为各种受支持编程语言的映射。这样可以确保 AWS CDK 构造行为在不同语言之间保持一致,可以提供支持所有语言的一套全面的构造软件包。您可以在 AWS CDK 项目中使用自己选择的编程语言编写所有代码,JavaScript 运行时环境用于确定编程体验的实施细节。您可以访问 https://github.com/aws/jsii,参考该 jsii 项目。

AWS CDK 采用开源代码,并通过 GitHub 提供源代码,网址为 https://github.com/awslabs/aws-cdk

要将应用程序迁移到 AWS CDK v2,请先更新 cdk.json 中的功能标志。然后更新应用程序依赖项,根据需要为编程语言导入。您可以访问 https://docs.thinkwithwp.com/cdk/latest/guide/work-with-cdk-v2.html 了解详情

AWS CDK 采用开源开发,欢迎所有人为我们的代码库做出贡献。如需了解详细信息,请访问 https://github.com/awslabs/aws-cdk/blob/master/CONTRIBUTING.md

AWS CDK 通常支持 JavaScript、TypeScript、Python、Java、C# 和 Go(采用开发人员预览)。未来我们计划为 AWS CDK 绑定其他语言,欢迎在 GitHub 上投选您喜欢的语言

在所有公共区域均可使用 AWS CDK 定义和部署 AWS 资源。鉴于 AWS CDK 需要使用 CloudFormation 服务,请参阅区域性产品和服务,详细了解各个 AWS 区域特定的资源可用性。

由于 AWS CDK 采用 CloudFormation,因此 AWS CDK 应用程序需遵循 CloudFormation 服务规定的限制。

AWS Solutions Constructs 是 AWS CDK 的开源库扩展。AWS Solutions Constructs 为您提供了一系列经过审查的、多服务架构模式,这些模式使用 AWS Well-Architected Framework 建立的最佳实践构建。作为先决条件,AWS Solutions Constructs 要求安装 AWS CDK。有关如何将 AWS Solutions Constructs 添加到 AWS CDK 环境的说明,请参阅我们的开发指南

AWS 构造库

AWS 构造库中提供了 AWS CDK 构造,这些打包的可重用构造抽象展示了云基础设施逻辑。构造可以在本地定义,也可以发布到软件包管理器(如 npm、Maven、NuGet 或 PyPI)以便在组织间共享。

我们提供多种常用的 AWS 服务和功能以及丰富的高级别构造,并提供全面的低级别 CloudFormation 资源,包括刚刚发布的新资源。每当 CloudFormation 规范发生变化时,我们都会自动生成资源级 API,从而确保 AWS 构造库保持最新状态。在这些自动生成的 API 基础上,我们提供人工编写的更高级别抽象,让您可以更轻松地使用各项服务。目前我们无法针对所有 AWS 服务提供这种便于使用的高级别抽象,但我们一直在努力增加新功能,并重点关注现代云应用程序中最常用的服务。如需了解详细信息,请访问 AWS 构造库 API 参考

CloudFormation 推出新功能后,我们很快便会将这些功能添加到 AWS CDK 中,从而确保 AWS 构造库与 CloudFormation 资源保持同步。

AWS CDK 构造库与其他所有资源库一样。您可通过软件包管理器以自己选择的编程语言使用这些构造库,并在日常工作流程中确保这些库保持最新状态。所有软件包都支持语义版本控制,让您可以自行选择何时迁移到新的基础设施模型。

CloudFormation 和 SAM

您可以将 AWS CDK 视为一个以开发人员为中心的工具包,它能够充分利用现代编程语言的功能,以代码形式定义您的 AWS 基础设施。当您运行 AWS CDK 应用程序时,它们会向下编译到完全成形的 CloudFormation JSON/YAML 模板中,然后系统会将这些模板提交到 CloudFormation 服务进行预置。由于 AWS CDK 采用 CloudFormation,因此您仍然可以享受 CloudFormation 提供的优势,例如安全部署、自动回滚和偏差检测。

AWS Serverless Application Model 和 AWS CDK 都是以代码形式对 AWS 基础设施进行抽象,让您可以更轻松地定义云基础架构。AWS SAM 专门针对无服务器使用案例和架构,让您可以用紧凑的声明式 JSON/YAML 模板定义自己的基础设施。AWS CDK 广泛提供各种 AWS 服务,让您可以使用 TypeScript、Python、C# 和 Java 等现代编程语言定义云基础设施。AWS SAM 和 AWS CDK 都采用 CloudFormation 作为基础设施堆栈的预置引擎。如果您希望使用简洁的声明式模板定义无服务器基础设施,那么 SAM 是更好的选择。如果您想使用熟悉的编程语言定义 AWS 基础设施,则建议您尝试使用 AWS CDK。无论选择哪种工具,您都可以通过 CloudFormation 实现安全且可重复的基础设施部署。

可以。您可以在本地将 AWS CDK 应用程序合成到 CloudFormation 模板中,然后在 SAM CLI 中引用生成的 AWS Lambda 处理程序 ID。有关更多详细信息,请参阅《CDK 开发人员指南》中的 SAM CLI 部分。

成本

AWS CDK 使用 Apache 2.0 版许可证进行分发。有关更多信息,请参阅许可声明

AWS CDK 无需额外付费。您为使用 AWS CDK 创建的 AWS 资源(如 Amazon EC2 实例或 Elastic Load Balancing 负载均衡器)付费时,其方式与您手动创建这些资源时的方式一样。您只需在使用时为您的使用量付费;既没有最低费用,也不要求前期承诺。