写点什么

使用 AWS CDK 增强您的基础设施

  • 2019-10-12
  • 本文字数:2081 字

    阅读完需:约 7 分钟

使用 AWS CDK 增强您的基础设施

这是一篇由 AWS 容器精英 Philipp Garbe 所写的客座文章。Philipp 现为德国 Scout24 的首席平台工程师。在技术和工具的助力下,他能够更快更频繁地发布内容。他希望每次提交的内容都能自动进入生产环境。如果您想了解他的最新动态,可以关注他的 Twitter @pgarbe。


最近几年,很多团队都在采用基础设施即代码 (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 代码并与他人共享。它可让用户轻松应用公司标准,并为人们提供强大功能,缩短了编写“枯燥”代码的时间。


本文转载自 AWS 技术博客。


原文链接:


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


2019-10-12 11:45669
用户头像

发布了 1848 篇内容, 共 113.6 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

什么是制造业数字化转型?制造业数字化转型的核心与意义

优秀

数字化转型 制造业

版本更新 | Towify V1.23.1 有哪些实用新功能?汇总来了!

Towify

微信小程序 无代码平台

哪篇论文宣布了 HTAP 数据库的诞生?解读《A Common Database Approach for OLTP and OLAP Using an In-Memory Column DataBase》

StoneDB

MySQL HTAP 数据库· StoneDB 12 月 PK 榜

如何合并Excel文档

Geek_249eec

C# Excel VB.NET

AngularJS进阶(四十)创建模块、服务

No Silver Bullet

服务 模块 AngularJS 12月月更

喜报 | Bonree ONE 2.0荣获信通院“2022IT新治理年度明星产品”

博睿数据

可观测性 博睿数据 荣誉 ONE平台

什么样的web前端培训靠谱?

小谷哥

系统的混乱并非业务本身之复杂,我们并不擅长处理『简单』

阿里技术

软件工程 复杂度

震惊,WSL2居然可以挂载USB

吴脑的键客

WSL2 usb

面了40+岁的大叔,没有录用,并不是因为年龄

产品运营心经

工作经历 面试‘ 职场发展 大龄求职

马斯克都不懂的 GraphQL,API 网关又能对其如何理解?

API7.ai 技术团队

api 网关 graphql APISIX

介绍四大并发集合类并结合单例模式下的队列来说明线程安全和非安全的场景及补充性能调优问题。

C++后台开发

多线程 并发 后端开发 异步 linux开发

openGemini v0.2.0版本正式发布:5大特性全面增强

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

骨灰级精品,京东百万架构师亲码的MySQL内部笔记太硬核了

小小怪下士

Java MySQL 程序员

上海靠谱的前端培训机构有没有推荐

小谷哥

guitar pro2023下载官方版app

茶色酒

Guitar Pro guitar pro2023

聚焦技术,锐意创新,GaussDB给世界一个更优选择

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

终于被我发现了这个推特视频下载的方法!超级简单!支持苹果安卓双系统!

frank

推特视频下载

银斯微与大敦科技签署MOU,推动UI开发工具在中国的落地应用

科技热闻

Kerberos 身份验证在 ChunJun 中的落地实践

袋鼠云数栈

数据集成 kerberos 大数据 开源

cdr2023断网离线激活下载教程

茶色酒

cdr2023

PreSTU:一个专门为场景文本理解而设计的简单预训练模型

华为云开发者联盟

人工智能 华为云 OCR 12 月 PK 榜

Sovit3D引擎快速构建智慧变电站三维可视化系统

2D3D前端可视化开发

物联网 智慧变电站 智能变电站 数字孪生变电站 变电站可视化

【计算讲谈社】第十五讲|云端即时渲染:下一代互联网的算力基座?

大咖说

数字人 云游戏

直播 | 数据智能大咖在线研讨,带你找到适合自己的企业级方法论!

StarRocks

数据库 物流

AlibabaP8,耗时182天肝出来1015页分布式全栈手册

程序知音

Java 分布式 后端 java架构

一文带你快速上手云日志服务

华为云PaaS服务小智

云计算 运维 日志管理

AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

No Silver Bullet

项目实战 AngularJS 12月月更 启动加载

AngularJS进阶(四十一)AngularJS中使用Chart.js制折线图与饼图实例

No Silver Bullet

AngularJS 12月月更 Chart.js 折线图与饼图

几种数据库jar包获取方式

华为云开发者联盟

数据库 华为云 12 月 PK 榜 jar包

云原生 AI 的资源调度和 AI 工作流引擎设计分享

Baidu AICLOUD

AI工程化 异构计算 云原生AI 百度百舸

使用 AWS CDK 增强您的基础设施_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章