亞馬遜釋出AWS CloudFormation巨集功能
藉助ofollow,noindex" target="_blank">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