开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

使用 AWS Lambda 和 Amazon DynamoDB 自动管理 AWS CloudFormation 模板中的 Parameters 和 Mappings

  • 2019-11-15
  • 本文字数:1902 字

    阅读完需:约 6 分钟

使用AWS Lambda和Amazon DynamoDB自动管理AWS CloudFormation模板中的Parameters和Mappings

背景介绍

相信 AWS 的用户对 AWS CloudFormation 都不会陌生。AWS CloudFormation 是实现 IAC(Infrastructure as Code)自动化运维的一项重要服务,可以帮助用户对 AWS 资源进行建模和设置,以便能花较少的时间管理这些资源。CloudFormation 中有两个重要选项:Mappings 段和 Parameters 段,可以帮助用户组织模板里的参数和映射,让用户更好地自定义堆栈,以实现模板的重用和复用。比方说可以用 Mappings 管理对应 AWS 上不同 region 的 AMI ID,或者管理企业内部的不同部门。



但是当用户所在的组织越来越多地采用 IAC 自动化时,mappings 和 parameters 的数量也会急剧增长,给 CloudFormation 模板的编写和维护带来复杂度。

解决方案

本文里我们介绍一种方法:用当前流行的 Serverless 计算 AWS Lambda 和 Amazon DynamoDB 自动地管理 AWS CloudFormation 模板中的 Parameters 和 Mappings。


本文中主要用到了以下几种 AWS 服务:


1、DynamoDB 表:Amazon DynamoDB 是一个 NoSQL 数据库,这里我们采用它保存 CloudFormation 模板中所有的 mappings 和 parameters。不仅可以实现集中存放,而且可以依赖 DynamoDB 的接口实现方便快速地增删和查找。比方说在我们的 sample code 中,整个企业采用这样一张表:partition key 包括组名(比如说 team1、team2 等)和环境(比如说 development、test、production 等),sort key 保存应用的名字。这个表里的数据类似这样:



当我们把这些数据都 insert 到 DynamoDB 中后,可以在 AWS console 里看到表中的内容是这样的:



2、Lambda 方法:AWS Lambda 又称为 Serverless 的计算,通过它你可以运行你的 code 而不需要预配置或者管理任何服务器。这里我们采用 Lambda 方法实现 CloudFormation 和 DynamoDB 之间的关联,它从 CloudFormation 模板接收 primary key 和 sort key 作为输入,查找 DynamoDB 表,并且返回所有的 key-value 数据。


3、Custom lookup resource:这是 CloudFormation 里的一个自定义资源,与一个 Lambda 方法绑定。CloudFormation 除了可以定义已有的 AWS 资源,还支持几种自定义资源,包括这种以 Lambda 方法作为后端的自定义资源。当这种自定义资源创建、更新或者删除时,CloudFormation 自动地向 Lambda API 发起请求,引发方法并将请求的数据传给 Lambda 方法,本例中所请求的数据是 primary key,返回的数据是 key-value 数据。通常在一个组织中只需要建立这一个 custom resource,所有的 CloudFormation 模板都可以复用它。下图是 sample code 里建立的 custom resource:



让我们将这几种服务组合起来,并且定义好它们之间的交互顺序,整个解决方案就是下图展示的这样:



那么整个的交互顺序如下:


1、用户创建 DynamoDB 表,插入所需的 mappings 和 parameters 数据。


2、CloudFormation 模板中的 custom resource 调用 Lambda 方法,用组名和环境名称(“teamname-environment”)作为 partition key,用应用名称(”appname”)作为 sort key。


3、Lambda 方法用 partition key 和 sort key 作为输入查询 DynamoDB 表。


4、DyanamoDB 将结果返回给 Lambda 方法。


5、Lambda 方法将这些 key-value 数据作为结果返回给模板中的 custom resource。


6、custom resource 拿到数据后,堆栈里的其他资源可以通过 Fn::GetAtt 的方式获得这些数据。

结论

通过这种方式,可以将我们创建堆栈所需的固定部分保存在模板中,而将可变部分 mappings 和 parameters 保存在方便增删改查的 DynamoDB 中,用 Lambda 实现两者之间的关联。对于大型组织来说,这样可以提高运维效率,也是使用 CloudFormation 的一种最佳实践。

参考

可以在我们的网站上下载到相关的 sample code:https://github.com/awslabs/custom-lookup-lambda


关于 AWS Lambda 的更多内容请参考网站:https://aws.amazon.com/lambda/


关于 CloudFormation 自定义资源的更多内容请参考网站:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html


作者介绍



张芸


AWS 云架构咨询顾问,获得 AWS 解决方案架构师专业级认证和 DevOps 工程师专业级认证,为企业客户和合作伙伴提供迈向云端的专业服务。目前已为多家跨国公司及本土公司、合作伙伴提供上云迁移、应用优化、架构设计等咨询设计和实施服务。在加入 AWS 之前有近 10 年的云计算和大数据开源技术研究和开发经验,拥有多项美国和中国专利及专利申请,涉及云计算及服务,分布式系统,软件定义数据中心和自动化运维等领域,合作编著图书《大数据–战略·技术·实践》。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/automatically-manage-parameters-and-mappings/


2019-11-15 08:00864

评论

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

数字化商品计划已经Out啦 揭秘哪些国际⼤牌⽤了AI智能商品计划?

第七在线

使用 PAI-Blade 加速 StableDiffusion Fine-Tuning

阿里云大数据AI技术

AI

每日一题:LeetCode-113. 路径总和 II

Geek_4z9ami

面试 算法 LeetCode 二叉树 DFS

华秋DFM荣获第三届智能制造创新大赛全国总决赛-新技术应用赛道三等奖

华秋电子

大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型

华为云开发者联盟

人工智能 华为云 华为云ModelArts 大模型 华为云开发者联盟

如何发布自定义 npm 组件包

数新网络官方账号

前端 npm

新一代 “垫图” 神器,IP-Adapter 的完整应用解读

京东科技开发者

软件测试|测试专家(前阿里P8)聊测试职业发展常见瓶颈

霍格沃兹测试开发学社

探秘AI赋能的未来世界:CyberAI深度学习技术助力变革

数新网络官方账号

人工智能 大数据

HTML5+Canvas数字孪生智慧机房可视化系统

2D3D前端可视化开发

物联网 数字孪生 三维可视化 智慧机房 智慧数据中心

喜讯!云起无垠入选“2023年中国AIGC创新企业榜”

云起无垠

如何在编写代码时添加有效的注释?

小魏写代码

软件测试/人工智能|一文教你配置selenium环境

霍格沃兹测试开发学社

数智时代,业财融合如何助力企业数智化转型?

用友BIP

业财融合

新一代“垫图”神器,IP-Adapter的完整应用解读

京东科技技术说

人工智能

第七在线引领零售供应链智能化,助力企业实现效能提升

第七在线

基于Raft算法的DLedger-Library分析 | 京东物流技术团队

京东科技开发者

算法 分布式系统 raft DLedger

数智化重新定义员工体验

用友BIP

数智人力

火眼金睛破局ES伪慢查询 | 京东物流技术团队

京东科技开发者

数据库 慢查询 Elastic Search

软件测试/人工智能|selenium元素定位方式大全

霍格沃兹测试开发学社

容器网络Cilium:DualStack双栈特性分析

华为云开发者联盟

云原生 华为云 华为云开发者联盟

「智造」第15期:十问用友TimensionDB时序数据库

用友BIP

时序数据库

【案例】多渠道管理 第七在线智能计划帮助Calvin Klein业务精准决策

第七在线

DAPP代币燃烧质押系统开发丨详情开发

l8l259l3365

【腾讯云 HAI域探秘】体验大模型的多种业务应用

Hanson

用友BIP数智干部管理,落实国有企业人才强企战略

用友BIP

干部管理

活动预告| 字节跳动基于DataLeap的DataOps最佳实践

字节跳动数据平台

大数据 数据治理 数据安全 数据研发 企业号12月PK榜

LED透明屏:私人定制引领新潮潮流

Dylan

广告 时尚产业 LED显示屏 全彩LED显示屏 led显示屏厂家

DFM引领电子产业变革,智能制造助力高效生产

华秋电子

企业API网关适用业务场景

RestCloud

API 网关

软件测试/人工智能|Linux常见面试问题讲解

霍格沃兹测试开发学社

使用AWS Lambda和Amazon DynamoDB自动管理AWS CloudFormation模板中的Parameters和Mappings_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章