AWS Amplify vs. AWS CDK 2020 年最强大的 AWS IaC 是什么?
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--dQypqXs0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/ajonp/images /w_1024%2Ch_576%2Cc_scale/v1605701532/ccd-cloudinary/AWS-Amplify-vs-CDK/AWS-Amplify-vs-CDK-1024x576.png)
AWS Amplify 与 AWS CDK 2020 年最强大的 AWS IaC 是什么? 5
什么是 AWS Amplify 和 AWS CDK?
首先,首字母缩略词对于一篇文章来说总是一个艰难的开始,所以让我们澄清其中的一些。
-
AWS –亚马逊网络服务
-
放大 –AWS 放大
-
CDK –云开发套件
-
IaC –基础设施即代码
-
CF –AWS CloudFormation
AWS 对 AWS CDK 的描述
AWS 云开发工具包 (AWS CDK) 是一个开源软件开发框架,用于使用熟悉的编程语言定义您的云应用程序资源。
https://aws.amazon.com/cdk/
AWS 对 AWS Amplify 的描述
AWS Amplify 是一组产品和工具,使移动和前端 Web 开发人员能够构建和部署由 AWS 提供支持的安全、可扩展的全栈应用程序。使用 Amplify,您可以在几分钟内配置应用程序后端,只需几行代码即可将它们连接到您的应用程序,并通过三个步骤部署静态 Web 应用程序。使用 AWS Amplify 更快地进入市场。
https://aws.amazon.com/amplify/
乍一看,这两种产品似乎根本不相关。但是,两者都是可用于构建云应用程序的工具,同时维护代码中的资源定义,我们称之为基础架构即代码 (IaC)。有几种工具可以帮助跨许多云平台使用 IaC,但尤其是 AWS,我们将更详细地介绍这些工具。
AWS CDK
AWS CDK 在 AWS New Your Summit 2019 上发布,您可以在下面的 YouTube 视频中观看 Martin Beeby 的谈话。
CDK 最令人惊奇的部分是您可以用您选择的语言(以及受支持的选择)编写您的定义。在撰写本文时,支持的语言包括 TypeScript、JavaScript、Python、Java 和 C#。
开发人员可以使用一种受支持的编程语言来定义称为Constructs的可重用云组件。您将它们组合成Stacks和Apps。
您可以在下面看到它在您的 IDE 中非常易读
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--8FqlXFOT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://docs.aws.amazon.com/cdk /latest/guide/images/CodeCompletion.png)
来自:https://docs.aws.amazon.com/cdk/latest/guide/home.html
要开始使用,您只需使用 npm 全局安装 AWS CDK,如下所示。
npm install -g aws-cdk
进入全屏模式 退出全屏模式
完成此操作后,我建议通读 AWS 提供的入门指南。
AWS 放大
AWS Amplify 于 2018 年发布,我能找到的最好的发布示例可能来自 Amazon Web Services 的高级开发倡导者 Nader Dabit。
我有机会在Purrfect.dev上与 Nader 坐下来讨论 AWS Amplify 如何融入开发人员的生态系统。你可以看下面的视频
或者请订阅播客并收听。
https://anchor.fm/purrfect-dev/embed/episodes/0-10---Amplify-with-Nader-Dabit-edvjpb/a-a3lu891
当您开始使用 AWS Amplify 时,您会注意到它更适合要支持的整个平台。让 Web 或移动开发人员非常容易上手。后端的配置主要通过 CLI 和 GraphQL(或 REST)定义上的一些配置来完成。
为什么它们都存在?
AWS CDK 和 AWS Amplify 之间的相似之处在于它们都创建 CloudFormation 文件并使用 AWS CloudFormation 进行部署。这是将它们与基础设施即代码工具进行比较时的关键。然而,不同之处在于每个工具的重点。
AWS 放大
AWS Amplify 完全是关于移动和 Web 应用程序的,并且具有非常具体的设置,可让您快速编写 Web 或移动应用程序!它通过使用 3 个组件库、UI 组件和CLI 工具链来做到这一点。 Amplify 所做的是允许非常轻松地创建以下服务。
认证
用户注册和认证
数据存储
离线同步和冲突解决
API(GraphQL 和 REST)
访问来自多个数据源的数据
存储
管理用户内容
分析
为您的应用收集分析数据
预测
AI/ML,包括文本翻译
交互
创建对话聊天机器人
推送通知
发送有针对性的通信
发布订阅
管理消息和订阅
其中大部分是通过 CLI 完成的,我经常听到的一条评论是,在使用 CLI 创建所有这些配置时,会发生太多隐藏的“魔法”。
AWS CDK
如果您知道您的下一个应用程序将需要上面列出的工具之外的工具,我会考虑利用另一个 IaC,例如 AWS CDK。最重要的是开发人员在您的应用程序中的幸福感和可测试性。如果您整天都在使用 AWS Amplify 中的自定义 JSON 资源编写的自定义 CloudFormation,您的开发人员可能会开始不喜欢整个 Amplify 解决方案的维护。
AWS Amplify 和 AWS CDK 的精彩之处在于它们都由 CloudFormation 提供支持,因此您可以获得 CloudFormation 的所有好处,包括可重复部署、轻松回滚和漂移检测。
这两种工具还允许您一起开发基础架构和运行时代码。
我认为 AWS CDK 具有 Amplify 所没有的最重要的事情之一就是 Constructs 的想法。构造是经过审查的架构模式,可作为 AWS 云开发工具包 (CDK) 的开源扩展提供,可以轻松地以声明方式组装以创建生产就绪的工作负载。您可以找到整个AWS Solutions Constructs 存储库。
因此,如果您正在开发物联网解决方案,那么使用 CDK 而不是 Amplify 的一个很好的例子就是。这不太适合 Amplify,但以下是可以帮助您快速入门的所有构造。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--rC8IHnd1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/ajonp/images /w_1024%2Ch_1011%2Cc_scale/v1605715082/ccd-cloudinary/image_1911ef4d4/image-1024x1011.png)
AWS Amplify 与 AWS CDK 2020 年最强大的 AWS IaC 是什么? 6
AWS CDK 路线图中仍有大量功能。
那么,AWS Amplify 还是 AWS CDK 是 2020 年最强大的?
我知道您通读了以上所有内容,并且您已尽力提出意见,这就是我的目标。不要让工具阻止您准确地创建您需要的东西,确保列出您想要完成的目标,然后您可以轻松确定最适合您的 IaC。我相信,只要您在某种类型的代码中拥有您的基础架构,并且它允许您轻松地重复您的工作,那将是您的最佳解决方案。
为什么不兼得??
更好的是,如果您希望从 AWS Amplify 开始,然后在此基础上继续构建,您绝对可以!查看 Nader Dabit 的 Mixing Amplify with CDK – 在 AWS 上使用 TypeScript 构建经过身份验证的 GraphQL API
替代 IaC 工具
- 地形
*https://github.com/hashicorp/terraform-cdk
-
无服务器框架
-
刷子
如果你还没有看过Purrfect.dev 的 Pulumi 第集,你现在应该看看!
更多推荐

所有评论(0)