一般性问题
问:什么是 AWS CDK?
AWS 云开发工具包 (AWS CDK) 是一个开源软件开发框架,可让您使用现代编程语言以代码形式定义云基础设施,并通过 AWS CloudFormation 部署该基础设施。
问:AWS CDK CLI 有何用途?
您可使用 AWS CDK 命令行接口 (CLI) 与您的 CDK 应用程序进行交互。借助 CDK CLI,您可以列出 CDK 应用程序中定义的堆栈,将这些堆栈合成到 CloudFormation 模板中,确定运行中的堆栈实例与 CDK 代码中所定义堆栈之间的区别,并将堆栈部署到任意公共 AWS 区域。
问:AWS CDK 的工作原理是什么?
使用 AWS CDK 框架创建 AWS CDK 项目,并执行这些项目以生成 CloudFormation 模板。可以使用 AWS CDK 命令行或在持续交付系统中执行 AWS CDK 项目。
问:如何开始使用 AWS CDK?
若要开始使用 AWS CDK,最好先阅读《AWS CDK 开发人员指南》的入门部分。只需几分钟,您就可以定义和部署第一个 AWS CDK 应用程序了。如需查看更深入的指导教程,请访问 https://CDKworkshop.com。
问:有没有入门阶段可以参考的 AWS CDK 示例应用程序?
有。您可以访问 https://github.com/aws-samples/aws-cdk-examples,查看采用多种编程语言的多个 AWS CDK 示例。《AWS 开发人员指南》也提供了一些示例,网址为 https://docs.aws.amazon.com/cdk/latest/guide/examples.html。
问:为什么必须安装 JavaScript 运行时环境才能使用 AWS CDK?
AWS 使用 TypeScript 语言构建 AWS 构造库软件包的业务逻辑,并提供目标为各种受支持编程语言的映射。这样可以确保 AWS CDK 构造行为在不同语言之间保持一致,可以提供支持所有语言的一套全面的构造软件包。您可以在 AWS CDK 项目中使用自己选择的编程语言编写所有代码,JavaScript 运行时环境用于确定编程体验的实施细节。您可以访问 https://github.com/aws/jsii,参考该 jsii 项目。
问:在哪里可以找到 AWS CDK 源代码?
AWS CDK 采用开源代码,并通过 GitHub 提供源代码,网址为 https://github.com/awslabs/aws-cdk。
问:如何将 CDK 应用程序从版本 1 迁移到版本 2?
要将应用程序迁移到 AWS CDK v2,请先更新 cdk.json 中的功能标志。然后更新应用程序依赖项,根据需要为编程语言导入。您可以访问 https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-v2.html 了解详情
问:如何做出贡献?
AWS CDK 采用开源开发,欢迎所有人为我们的代码库做出贡献。如需了解详细信息,请访问 https://github.com/awslabs/aws-cdk/blob/master/CONTRIBUTING.md。
问:AWS CDK 支持哪些编程语言?
AWS CDK 通常支持 JavaScript、TypeScript、Python、Java、C# 和 Go(采用开发人员预览)。未来我们计划为 AWS CDK 绑定其他语言,欢迎在 GitHub 上投选您喜欢的语言。
问:在哪些区域可以使用 AWS CDK?
在所有公共区域均可使用 AWS CDK 定义和部署 AWS 资源。鉴于 AWS CDK 需要使用 CloudFormation 服务,请参阅区域性产品和服务,详细了解各个 AWS 区域特定的资源可用性。
问:AWS CDK 是否有资源限额或限制?
由于 AWS CDK 采用 CloudFormation,因此 AWS CDK 应用程序需遵循 CloudFormation 服务规定的限制。
问:AWS CDK 与 AWS Solutions Constructs 之间是什么关系?
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 构造库中提供了 AWS CDK 构造,这些打包的可重用构造抽象展示了云基础设施逻辑。构造可以在本地定义,也可以发布到软件包管理器(如 npm、Maven、NuGet 或 PyPI)以便在组织间共享。
问:AWS 构造库中提供了哪些服务?
我们提供多种常用的 AWS 服务和功能以及丰富的高级别构造,并提供全面的低级别 CloudFormation 资源,包括刚刚发布的新资源。每当 CloudFormation 规范发生变化时,我们都会自动生成资源级 API,从而确保 AWS 构造库保持最新状态。在这些自动生成的 API 基础上,我们提供人工编写的更高级别抽象,让您可以更轻松地使用各项服务。目前我们无法针对所有 AWS 服务提供这种便于使用的高级别抽象,但我们一直在努力增加新功能,并重点关注现代云应用程序中最常用的服务。如需了解详细信息,请访问 AWS 构造库 API 参考。
问:当 CloudFormation 中添加新功能时,需要等多久 AWS CDK 才会提供相应支持?
CloudFormation 推出新功能后,我们很快便会将这些功能添加到 AWS CDK 中,从而确保 AWS 构造库与 CloudFormation 资源保持同步。
问:如何与我的团队共享 AWS CDK 构造并对其进行管理?
AWS CDK 构造库与其他所有资源库一样。您可通过软件包管理器以自己选择的编程语言使用这些构造库,并在日常工作流程中确保这些库保持最新状态。所有软件包都支持语义版本控制,让您可以自行选择何时迁移到新的基础设施模型。
CloudFormation 和 SAM
问:AWS CDK 和 CloudFormation 之间有何关系?
您可以将 AWS CDK 视为一个以开发人员为中心的工具包,它能够充分利用现代编程语言的功能,以代码形式定义您的 AWS 基础设施。当您运行 AWS CDK 应用程序时,它们会向下编译到完全成形的 CloudFormation JSON/YAML 模板中,然后系统会将这些模板提交到 CloudFormation 服务进行预置。由于 AWS CDK 采用 CloudFormation,因此您仍然可以享受 CloudFormation 提供的优势,例如安全部署、自动回滚和偏差检测。
问:AWS CDK 和 AWS SAM 之间有何关系?
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 SAM CLI 对通过 AWS CDK 定义的 Lambda 函数进行本地测试?
可以。您可以在本地将 AWS CDK 应用程序合成到 CloudFormation 模板中,然后在 SAM CLI 中引用生成的 AWS Lambda 处理程序 ID。有关更多详细信息,请参阅《CDK 开发人员指南》中的 SAM CLI 部分。
费用
问:AWS CDK 使用哪种许可证进行分发?
AWS CDK 使用 Apache 2.0 版许可证进行分发。有关更多信息,请参阅许可和声明。
问:AWS CDK 的费用是多少?
AWS CDK 无需额外付费。您为使用 AWS CDK 创建的 AWS 资源(如 Amazon EC2 实例或 Elastic Load Balancing 负载均衡器)付费时,其方式与您手动创建这些资源时的方式一样。您只需按您的实际用量付费;既没有最低费用,也不要求预先承诺。