最近几年,很多团队都在采用基础设施即代码 (IaC)。它使基础设施的预置变得更加轻松,并有助于保持环境的一致性。

但是,由于使用声明式模板,您可能还未掌握“常见”代码所用的很多做法。您可能已感受到了每个 AWS CloudFormation 模板只是上一个项目或 StackOverflow 的复制和粘贴带来的问题。但您会信任这些代码段吗? 如何通过代码库调整改进项甚至是安全修复呢? 如何在公司或社区内共享最佳实践?

幸运的是,AWS 面向所有用户发布了 AWS CloudFormation 重要新增工具 AWS 云开发工具包 (AWS CDK) 的测试版。

AWS CDK 有何神奇之处?

现在,可在公司内部或开发人员社区中轻松共享编写优质 AWS CloudFormation 模板的最佳实践。同时,其他人也可以同样的方式为您提供便利。

比如,我们以 Amazon DynamoDB 为例。在 AWS CloudFormation 中进行设置应该很轻松,是吧? 只需在模板中编写几行代码。但是,当您投入生产后,就会发现必须设置自动扩展、定期备份,最重要的是,针对所有相关指标设置警报。这需要多达几百行代码的工作量。

眼光放远:或许您需要创建另一个也需要 DynamoDB 数据库的应用程序。您是否会复制并粘贴所有 YAML 代码? 如果您在模板中发现一些错误,该怎么办呢? 您会同时修复两个代码库吗?

通过 AWS CDK,您可以为您的最佳实践编写一个“架构”- 生产就绪型 DynamoDB 数据库。将其以 npm 包的形式与公司同事或任何人共享!

什么是 AWS CDK?

我们返回来了解一下 AWS CDK。与使用 YAML(或 JSON)的声明式方法相比,CDK 允许您命令式声明基础设施。主要语言为 TypeScript,同时也支持另外几种语言。

下面是来自 Hello, AWS CDK! 的 Hello World 示例:

import cdk = require('@aws-cdk/cdk');
import s3 = require('@aws-cdk/aws-s3');class MyStack extends cdk.Stack {
constructor(parent: cdk.App, id: string, props?: cdk.StackProps) {
super(parent, id, props);new s3.Bucket(this, 'MyFirstBucket', {
versioned: true
});
}
}class MyApp extends cdk.App {
constructor(argv: string[]) {
super(argv);new MyStack(this, 'hello-cdk');
}
}new MyApp().run();

应用程序是根架构,可直接由 CDK CLI 用于呈现和部署 AWS CloudFormation 模板。

应用程序由一个或多个堆栈组成,这些堆栈是可部署的单元,包含有关区域和账户的信息。在一个应用程序中,可以同时将不同的堆栈部署到多个区域。

堆栈包括表示 AWS 资源的架构,如 DynamoDB 表或 AWS Lambda 函数。

lib 是通常用来进一步封装架构的架构。通过 lib,可以构建和重复使用更高类别的架构。由于架构只是 TypeScript(或任何其他受支持的语言),因此可以通过任何包管理器构建和共享包。

架构

由于 CDK 是用于处理架构的工具,因此了解架构非常重要。架构采用分层结构,称为架构树。您可以想象三个层次的架构:

第 1 层:AWS CloudFormation 资源

这是对现有资源的一对一映射,是自动生成的。与当前在 YAML 中使用的资源相同。理想情况下,您无需直接处理这些架构。

第 2 层:AWS 架构库

这些架构位于一个 AWS 服务级别。它们由 AWS 进行控制、完善架构和手写。它们具有相应的默认设置,应该可以让您轻松创建 AWS 资源,而不必过于担心细节。

例如,下面列出了如何在所有可用的可用区中使用私有和公用子网创建完整 VPC:

import ec2 = require('@aws-cdk/aws-ec2');const vpc = new ec2.VpcNetwork(this, 'VPC');

AWS 架构库包含一些关于最小特权 IAM 策略、事件驱动式 API 操作、安全组和指标的不错概念。例如,根据您的意图自动创建 IAM 策略。当 Lambda 函数订阅 SNS 主题时,将创建允许主题调用该函数的策略。

提供 Amazon CloudWatch 指标的 AWS 服务包含 metricXxx() 等函数,并返回可轻松用于创建警报的指标对象。

new Alarm(this, 'Alarm', {
metric: fn.metricErrors(),
threshold: 100,
evaluationPeriods: 2,
});

有关更多信息,请参阅 AWS 架构库。

第 3 层:您的出色作品

这就是有趣之处。如前所述,架构是分层的。它们可以是基于其他架构的更高级别抽象。例如,在该层上,您可以编写自己的 Amazon ECS 集群架构,使其包含自动节点排空功能、自动扩展功能和所有适当的警报。也可以为 Amazon RDS 数据库应监控的所有必要警报编写一个架构。创建和共享架构的决定权在您手中。

小结

AWS 尽早面市是好事。相关文档已经非常棒了,但并未涵盖所有内容。并非所有 AWS 服务都定义了 AWS 架构库模块(第 2 层)。许多只有 AWS CloudFormation 架构(第 1 层)。

我个人认为 AWS CDK 是一个巨大的进步,因为它允许您重复使用 AWS CloudFormation 代码并与他人共享。它可让用户轻松应用公司标准,并为人们提供强大功能,缩短了编写“枯燥”代码的时间。

转自:https://amazonaws-china.com/cn/blogs/china/boost-your-infrastructure-with-cdk/

参考:

https://github.com/aws/aws-cdk

https://docs.aws.amazon.com/zh_cn/cdk/latest/guide/home.html

AWS-基础架构自动化的编排工具-AWS CDK介绍相关推荐

  1. aws terraform_如何使用Terraform管理您的AWS基础架构

    aws terraform 什么是Terraform? (What is Terraform?) Hashicorp Terraform Hashicorp Terraform Hashicorp T ...

  2. aws terraform_如何使用Terraform通过Direct Connect扩展AWS基础架构

    aws terraform Sometimes, when you face a challenge, you might be able to solve it with routine proce ...

  3. 揭秘 AWS 基础架构底层运维和构建之道!

    整理 | 夕颜 出品 | CSDN(ID:CSDNnews) 在去年的AWS re:Invent大会上,AWS全球基础架构和客户支持资深副总裁Peter DeSantis在主题演讲中分享了AWS基础网 ...

  4. VMware vRealize Automation 8.6 下载 - 现代基础架构自动化

    请访问原文链接:https://sysin.org/blog/vmware-vra-8/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页:www.sysin.org ...

  5. VMware Aria Automation 8.10 - 现代基础架构自动化平台

    请访问原文链接:VMware Aria Automation 8.10 - 现代基础架构自动化平台,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 现代基础架构自动化平台 ...

  6. 爬虫的基础架构及常用的工具介绍

    爬虫的基础架构及常用的工具 写在前面 爬虫和页面解析都是实操性非常强的技能,需要分析待爬取的网站和信息,过程中不乏需要很多尝试和调整. 爬虫的基础架构 基础架构方面主要分为 3 个部分,分别是 URL ...

  7. aws iam 架构图_使用IAM保护您的AWS基础架构

    aws iam 架构图 在开发新产品并发现合适的产品市场时,每个团队都需要快速行动. 尤其是初创公司,因为公司的整个未来都取决于快速找到为您的产品付款的人. 对于初创企业和其他团队来说, Amazon ...

  8. 使用IAM保护您的AWS基础架构

    在开发新产品并发现合适的产品市场时,每个团队都需要快速行动. 尤其是初创公司,因为公司的整个未来都取决于快速找到为您的产品付款的人. 对于初创企业和其他团队来说, Amazon Web Service ...

  9. 揭秘LOL背后的IT基础架构丨开发者“打野”工具能做什么?

    欢迎来到Tungsten Fabric用户案例系列文章,一起发现TF的更多应用场景."揭秘LOL"系列的主人公是Tungsten Fabric用户Riot Games游戏公司,作为 ...

最新文章

  1. 简单BP网络识别数码表字符
  2. Android 关于后台杀死App之后改变服务器状态的一些尝试
  3. dw的php文件怎么连接mysql_wordpress php文件如何链接到mysql数据库
  4. ubuntu ftp服务器_如何在Ubuntu上安装FTP服务器?
  5. 加密狗工作原理和破解方法简介
  6. 一篇文章彻底搞懂JVM常见垃圾收集器算法、常见收集器、CMS三色标记等(深度剖析)
  7. J - Crashing Robots
  8. 计算机在日常办公众的应用论文,计算机及应用基础专业论文.docx
  9. 大数据、互联网、机器人成大热门
  10. php excel水印图片大小,PHPExcel:如何在第一页标题中插入图像并将其放大以适合其内容?...
  11. php socket实践
  12. Facade Design
  13. 【洛谷4735】 最大异或和(可持久化01Trie)
  14. android8.1新建分区并挂载,Android8.1 MTK Vendor分区大小调整无效分析
  15. 关于IDEL中的全局搜索不显示该有的类的解决办法之一
  16. Mockito 之 verify 使用方法
  17. css过渡和css动画的区别是什么?
  18. 【厚积薄发系列】Python项目总结2—Python的闭包
  19. vi 全单词 (whole word) 搜素
  20. 在QT中调用google earth并打开KML文件

热门文章

  1. python爬取有道词典_利用Python3和Charles爬取有道词典
  2. html设置字体在本地不生效,Css字体在IE中不起作用
  3. 雷达高度计数据读取与显示
  4. [SHOI 2015] 聚变反应炉(树形背包 + 树形 DP) | 错题本
  5. 简单生成微信小程序随机验证码
  6. 酒瓶与瓶盖换酒问题 - 10块钱可以喝多少瓶酒
  7. [转]首届阿里研发效能嘉年华资料回顾(含PDF、视频)
  8. 电源测试软件怎么增加通道口,关于测试通道数问题解析
  9. android 红包雨源代码,Android 红包雨效果自定义控件
  10. 推荐系统 用户画像 标签聚类 个性化搜索