[将 AWS Amplify 或 CDK 添加到 AWS 以部署多项服务。](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 中非常易读

[编码显示 CDK 使用情况。](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 第集,你现在应该看看!

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐