BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWS CloudFormation HooksでCloudFormationオペレーションのプロアクティブな検証が可能に

AWS CloudFormation HooksでCloudFormationオペレーションのプロアクティブな検証が可能に

原文(投稿日:2022/02/16)へのリンク

AWSAWS CloudFormation Hooksの一般提供を発表した。CloudFormationスタック操作の作成、更新、削除の前にカスタムロジックを実行できるようにするものである。CloudFormation Hooksは、バージョニング、パブリックおよびプライベートディストリビューションをサポートし、複数のAWSアカウントやリージョンに公開できる。

CloudFormation Hooksでは、プロビジョニングされるリソースを検査することで、CloudFormation操作のプロアクティブな検証ができるようになる。非準拠のリソースが検出された場合は、警告を返すか、操作を失敗させて実行を停止することができる。ユースケースは、セキュリティグループに適切なインバウンドおよびアウトバウンドトラフィックルールがあることの検証、より高価なEC2インスタンスの使用の制限、RDSインスタンスに対する自動バックアップの有効化にまで及ぶ。

CloudFormation CLIはCloudFormation Hooksの開発に使われる。CloudFormation Hooksは、AWS CloudFormationレジストリ内でサポートされている拡張タイプである。フック用の開発者プラグインは、JavaPythonで利用できる。

AWS CloudFormationレジストリでは、フックを含む拡張機能をパブリックリソースとプライベートリソースの両方として管理できる。パブリック拡張機能は、AWSまたは他のサードパーティによって公開されている。AWSによる拡張機能は常に公開されており、バージョン管理はAWSによって制御されている。登録されたプライベートの拡張機能は、オーダーメイドのフックに使用でき、登録することで必要なAWSアカウントで利用できるようになる。拡張機能を複数のリージョンに公開するには、AWS CloudFormation StackSetsを使う。

必要なフックプロジェクトコードの生成は、CloudFormation CLIを使ってコマンドcfn initを実行することで実施できる。次のステップはフックスキーマを生成することで、これはフックのプロパティと属性を定義するJSON形式のテキストファイルである。次に、フックハンドラーコードが、サポートされている開発者プラグイン言語の1つで記述される。フックをプライベートレジストリに登録するには、cfn submit --set-defaultを使用する。

完了すると、フックは次のように有効にできる。

aws cloudformation set-type-configuration \
 --configuration "{\"CloudFormationConfiguration\":{\"HookConfiguration\":{\"TargetStacks\":\"ALL\",\"FailureMode\":\"FAIL\",\"Properties\":{\"SsmKey\": \"compliant-imageid-x86\"}}}}" \
 --type-arn $HOOK_TYPE_ARN 

TargetStacksALLに設定されている場合、フックは、CREATEUPDATEDELETE操作中にアカウント内のすべてのスタックに適用される。FailureModeWARNFAILのいずれかに設定できる。Propertiesオブジェクトは、フックスキーマ内で定義されているフックランタイムプロパティが提供される場所である。

AWSは、PythonとJavaの両方で、サンプルのフックを多数リリースした。たとえば、AWSSamples::S3BucketEncrypt::Hookサンプルは、CREATEまたはUPDATE操作中にKMSキーを使ってサーバ側の暗号化が有効になっていることを確認する。FailureModeFAILが設定されている場合、次に示すCloudFormationテンプレートは暗号化プロパティを指定していないため、続行できない。

AWSTemplateFormatVersion: "2010-09-09" 
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket 
    Properties: {}

CloudFormation Hooksは、CDK、SAM、AWS Amplify、AWS Elastic Beanstalkによって作成されたスタックを含むすべてのCloudFormationスタックに対して実行される。CloudFormation Hooksの呼び出しイベントは、イベントブリッジルールを作成することでAmazon EventBridgeでサブスクライブできる。

詳細については、AWSのドキュメントをご覧ください。割り当てについては、アカウントあたりのフック数を100に、リソースあたりのフック数を100に、各フックのバージョン数を100に制限されている。CloudFormation Hooksは、リクエストの数と期間に基づいてフックごとに課金される。

作者について

この記事に星をつける

おすすめ度
スタイル

BT