BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Amazonが、AWS CloudFormationに関して、AWS Lambdaで実行されるMacrosによる拡張を発表

Amazonが、AWS CloudFormationに関して、AWS Lambdaで実行されるMacrosによる拡張を発表

ブックマーク

原文(投稿日:2018/09/21)へのリンク

AWS CloudFormationを使うことで、開発者はインフラストラクチャをモデル化し、コード(IaC)として定義することができる。AmazonはMacrosというAWS CloudFormationの新機能を発表した。Macrosによって開発者は、AWS Lambdaで実行される変換を呼び出すことで、CloudFormationテンプレートのネイティブ構文を拡張できるようになる。

AWS CloudFormationはAWSプラットフォーム上の不可欠なビルディングブロックであり、多くのサービスがそれに依存している。2011年の最初のリリース以来、CloudFormationは最新のMacrosを追加して現在の状態に進化した。AWS CloudFormationsのMacroには、定義と実装という2つのコンポーネントがある。開発者はCloudFormationリソースタイプAWS::CloudFormation::Macroで始まる定義を作成することで、どのLambda関数を使うかと、そのマクロを呼び出す必要があるもののアウトラインを示す。

Type: "AWS::CloudFormation::Macro"
Properties:
  Description: String
  FunctionName: String
  LogGroupName: String
  LogRoleARN: String
  Name: String

定義では、Nameは一意でなければならず、FunctionNameのLambda関数への参照はマクロと同じ領域にある必要がある。開発者がマクロテンプレートを実行すると、他のテンプレートにも使用できるようになる。マクロの実装はラムダ関数であり、JSONペイロードが必要である。

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

JSONペイロードのフラグメントには、テンプレート全体、あるいはテンプレートの関連部分が含まれる。テンプレートがYAMLであるかどうかにかかわらず、フラグメントもJSONになることに注意していただきたい。さらに、Lambda関数は以下を含むJSON応答を返す。

  • リクエスト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の新しいMacros機能は、AWS Lambdaを提供するすべてのAWSリージョンで利用できる。さらに、Macrosに追加のCloudFormation料金はかからない。つまり、顧客は標準のAWS Lambda関数料金のみを請求される。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT