0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CloudFormation】ヘルパースクリプト(cfn-init / cfn-signal / cfn-hup / cfn-get-metadata)の個人的理解

0
Posted at

SOAの勉強のための超個人的アウトプット

AWS CloudFormation を使って EC2 の構築を自動化する際に欠かせないのが、
ヘルパースクリプト(Helper Scripts)

CloudFormation 側で「インフラの外側」まで宣言できても、
実際に EC2 インスタンスの中身を構成する処理 は OS 上で実行する必要がある

そこで活躍するのが以下のヘルパースクリプトたちです。

  • cfn-init
  • cfn-signal
  • cfn-get-metadata
  • cfn-hup

本記事では、それぞれの役割をシンプルにまとめます。


cfn-init とは

cfn-init は、CloudFormation メタデータ(AWS::CloudFormation::Init)を取得し、
その内容に基づいて EC2 の OS を構成するためのスクリプト です。

CloudFormation メタデータの取得

EC2 インスタンスには CloudFormation のスタック情報へアクセスするための IAM ロール をアタッチします。
そのロールを使って cfn-init は CloudFormation API を呼び出し、

  • パッケージ情報
  • ファイル生成
  • サービス設定
  • コマンド

などのメタデータを取得します。

実行される主な処理

cfn-init は取得したメタデータに基づき、以下のような OS 構成を実行します。

  • ソフトウェアのインストール
  • ディスクへのファイルの書き込み
  • サービスの有効化/無効化、および開始/停止

副次的なヘルスチェックとしての役割

cfn-init は処理結果を Exit Code として返します。

  • 0 → 成功
  • 0 以外 → 失敗

この Exit Code から、副次的にヘルスチェックの機能を持つ。


cfn-signal とは

cfn-signal は、
EC2 インスタンスの作成処理が正常に完了したかどうか を CloudFormation に通知するためのスクリプトです。

典型的には user-data 内で次のように利用されます。

/opt/aws/bin/cfn-init ...  
/opt/aws/bin/cfn-signal --exit-code $? \
  --stack MyStack \
  --resource MyAutoScalingGroup \
  --region ap-northeast-1

cfn-init の終了コード($?)を拾い、
CloudFormation または AutoScalingGroup に「成功・失敗」を伝えます。

cfn-get-metadata とは

cfn-get-metadata は、CloudFormation のメタデータを 文字情報として取得するためのスクリプト です。

cfn-init と異なり、
メタデータの解析や実行は行いません。

例:S3 バケット名を取得したい時

CloudFormation テンプレートに S3 バケット名が定義され、
その値だけを利用したい場合などに役立ちます。

cfn-get-metadata --stack MyStack --resource MyEC2

cfn-hup とは

cfn-hup は、CloudFormation メタデータの変更を検知し、
変更があった場合に 指定した処理を実行する常駐デーモン です。

主な用途

  • CloudFormation 側で設定変更 → EC2 内にも反映したい
  • メタデータ更新をトリガーに cfn-init を再実行したい

つまり、EC2 インスタンスを稼働中にアップデートしたい場合に利用できます。


まとめ

スクリプト 役割
cfn-init メタデータを取得し、ソフトウェア/ファイル/サービスなどの OS構成を実行
cfn-signal インスタンス構築の成功/失敗を CloudFormation に通知
cfn-get-metadata メタデータを生の文字情報として取得
cfn-hup メタデータ変更を検知し、指定処理を自動実行するデーモン

CloudFormation のヘルパースクリプトは、
EC2 の構成管理を CloudFormation テンプレートと連動させるための重要機能です。

「CloudFormation でサーバーを作る」だけでなく、
サーバー内部の設定まで含めて IaC(Infrastructure as Code)化したい場合
必須のツールセットとなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?