腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

亚马逊发布 AWS CloudFormation 宏功能

  • 2018-09-27
  • 本文字数:0 字

    阅读完需:约 1 分钟

借助 AWS CloudFormation ,开发人员可以建模并定义他们的基础设施即代码(IaC)。亚马逊发布了一项名为 Macros 的 AWS CloudFormation 新功能,开发人员可以通过调用基于 AWS Lambda Function 的转换来扩展 CloudFormation 模板的原生语法。

AWS CloudFormation 是 AWS 平台必不可少的构建块,有很多服务都依赖它。自 2011 年首次发布以来,CloudFormation 已经发展到目前的状态,最近新增了 Macros 功能。AWS CloudFormations 的宏包含了两个组件:定义和实现。开发人员创建一个定义,以 CloudFormation 资源类型 AWS::CloudFormation::Macro 开头,概述了要使用的 Lambda Function 以及应该被调用的宏。

复制代码
Type: "AWS::CloudFormation::Macro"
Properties:
Description: String
FunctionName: String
LogGroupName: String
LogRoleARN: String
Name: String

在定义中,Name 必须是唯一的,并且 FunctionName 对 Lambda Function 的引用需要与宏位于同一区域。当开发人员执行宏模板时,对于其他模板也是可用的。宏的实现是一个 Lambda Function,它需要一个 JSON 载荷。

复制代码
{
"region": "us-east-1",
"accountId": "$ACCOUNT_ID",
"fragment": { ... },
"transformId": "$TRANSFORM_ID",
"params": { ... },
"requestId": "$REQUEST_ID",
"templateParameterValues": { ... }
}

JSON 载荷中的片段包含整个模板或模板的相关部分。请注意,无论模板是否为 YAML,片段都是 JSON。此外,Lambda Function 返回一个 JSON 响应,其中包含:

  • 一个请求 ID,与请求中收到的请求 ID 相同;
  • 一个状态字段,包含成功值或使 ChangeSet 失败的其他值;
  • 一个片段,包含已转换模板的有效 CloudFormation JSON 载荷。

当开发人员想要使用宏时,他们可以使用必要的参数调用 Fn::Transform。

复制代码
AWSTemplateFormatVersion: 2010-09-09
Resources:
MyS3Bucket:
Type: 'AWS::S3::Bucket'
Fn::Transform:
Name: EchoMacro
Parameters:
Key: Value

如果开发人员需要解析整个模板,他们可以将其包含在模板的变换列表中。在执行这个模板时,将通过调用每个宏的指定函数并返回最终模板将变换收集到变更集中,如这篇博文所述。

  

来源: https://aws.amazon.com/blogs/aws/cloudformation-macros/

AWS 的高级技术宣传员 Randall Hunt 在博文中谈到了Macros 的发布:

它真正的优势在于可以通过代码来扩展基础设施即代码。这项新功能带来的可能性几乎是无限的。

开发人员可以通过几个参考宏(如 ShortHand String Functions )来熟悉宏功能。AWS CloudFormation 的宏功能在所有提供 AWS Lambda 的 AWS 区域可用。此外,使用宏功能不需要额外的费用,这意味着客户只需支付标准 AWS Lambda Function 费用即可使用宏功能。

查看英文原文 Amazon Announces Extensibility for AWS CloudFormation with AWS Lambda Powered Macros

2018-09-27 19:00844
用户头像

发布了 731 篇内容, 共 406.3 次阅读, 收获喜欢 1966 次。

关注

评论

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

Using R for everything: 方差分解(Variation partition)变量筛选与显著性标注

洗衣机用户不会用洗衣机

数据分析 R

放假了,你还会打开钉钉么?

无箭的丘比特

高效工作 团队管理 企业文化 个人成长 技术管理

保险知识梳理

魁拔

保险 生活质量

你还在这样使用MYSQL吗?

无箭的丘比特

MySQL 数据库 数据库规范 数据库设计

办公人员的 python 妙用——抽签结果提取

小匚

Python 远程办公

我跑步的时候会想些什么

养牛致富带头人

跑步 运动 锻炼

TL如何在团队中培养出更多前端技术专家

贵重

大前端 团队建设 技术管理

高仿瑞幸小程序 06 layout布局

曾伟@喵先森

小程序 微信小程序 大前端

【Howe 学 JAVA】Java 类集框架1——List集合

Howe

Java List 集合

Web3极客日报#136

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

如何扩大我们的英语词汇量

董一凡

学习

前端开发的瓶颈与未来之路

keelii

node.js typescript ruby-on-rails 编程 大前端

游戏夜读 | 游戏设计需要天赋?

game1night

C语言if分支结构

C语言技术网-码农有道

C语言 C语言if分支结构

深入理解MDL元数据锁

Simon

MySQL

物联网资产整合架构

老任物联网杂谈

物联网架构

自助设备系列——技术应用

孙苏勇

产品 行业资讯 智能设备

【Howe 学 JAVA】Java 类集框架2——Set 集合

Howe

Java 集合 set

面试官竟然一直和我聊线程的启动和终止

Simon郎

Java 大数据 后端 多线程

带你100% 地了解 Redis 6.0 的客户端缓存

程序员历小冰

redis 缓存 redis6.0.0

CentOS7使用Iptables做网络转发

wong

Centos 7 iptables

MacOS使用指南之我并不需要系统菜单栏

lmymirror

macos 高效工作 完美主义 操作系统 新手指南

回"疫"录(13):不信谣,不传谣

小天同学

疫情 回忆录 现实纪录 纪实 谣言

给应届毕业生们的七点建议

Neco.W

大学生日常 工作 应届毕业

探寻融云多年领先的秘密:不断创新贴近开发者真实需求

DT极客

Mac 自带软件-聚焦搜索

Winann

macos Mac spotlight

人生就是一场说走就走的旅行

kimmking

OceanBase原理与实现分析

ElvinYang

《Linux就该这么学》笔记(一)

编程随想曲

Linux

【Howe 学 JAVA】Java 类集框架2——集合输出

Howe

Java 集合 输出 类集

你觉得你是哪类人?

Janenesome

读书笔记 思考

亚马逊发布AWS CloudFormation宏功能_亚马逊云科技_Steef-Jan Wiggers_InfoQ精选文章