cfn-hup
ヘルパーは、リソースメタデータの変更を検出し、変更が検出された場合に、ユーザーが指定した操作を実行するデーモンです。これによって、UpdateStack
API アクションを介して、実行中の Amazon EC2 インスタンスに構成を更新できます。
構文
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
オプション
名前 | 説明 | 必須 |
---|---|---|
|
|
いいえ |
|
|
いいえ |
|
詳細モードを使用するには、このオプションを指定します。 |
いいえ |
cfn-hup.conf 構成ファイル
cfn-hup.conf
ファイルは、cfn-hup
デーモンのターゲットとなるスタックの名前と AWS 認証情報を格納します。
cfn-hup.conf
ファイルは、次の形式を使用します。
[main]
stack=<stack-name-or-id>
名前 | 説明 | 必須 |
---|---|---|
|
スタックの名前または ID です。 タイプ: 文字列 |
あり |
|
コマンドラインツールで使用するのと同じ形式の、所有者のみの認証情報ファイルです。 タイプ: 文字列 条件: |
いいえ |
|
インスタンスに関連付けられた IAM ロールの名前です。 タイプ: 文字列 |
いいえ |
|
スタックを含む AWS リージョンの名前です。 例: us-east-2 |
いいえ |
|
この値は、前に 0 を付けても、付けなくても指定できます。両方の場合も、8 進数として解釈されます (Linux の タイプ : デフォルト: |
いいえ |
|
リソースメタデータへの変更を確認する間隔 (分単位)。 タイプ: 整数 デフォルト: |
いいえ |
|
詳細ログ記録を行うかどうかを指定します。 タイプ: ブール デフォルト: |
いいえ |
hooks.conf
設定ファイル
cfn-hup
デーモンが定期的に呼び出すユーザーアクションは、hooks.conf
構成ファイルに定義されています。hooks.conf
ファイルは、次の形式を使用します。
[hookname]
triggers=post.add or
post.update or
post.remove
path=Resources.<logicalResourceId>
(.Metadata or
.PhysicalResourceId)(.<optionalMetadatapath>
)
action=<arbitrary shell command>
runas=<runas user>
オペレーションが実行されるとき、現在の環境 (cfn-hup
が所在する環境) のコピーで実行され、かつ CFN_OLD_METADATA
はパスで指定された前のメタデータ値に設定され、CFN_NEW_METADATA
は現在の値に設定されます。
フック構成ファイルは cfn-hup
デーモンの開始時にのみロードされるため、新しいフックはデーモンを再起動する必要があります。以前のメタデータ値のキャッシュは /var/lib/cfn-hup/data/metadata_db
に保存されます。このキャッシュを削除すると、cfn-hup
はすべての post.add
アクションを再度実行するように強制されます。
名前 | 説明 | 必須 |
---|---|---|
|
このフックの一意の名前。 タイプ: 文字列 |
あり |
|
検出する条件のカンマ区切りのリストです。 有効な値: 例: |
あり |
|
メタデータオブジェクトへのパスです。メタデータブロック内の任意の深いパスをサポートします。 パス形式オプション
|
あり |
|
所定のものとして実行される任意のシェルコマンドです。 |
あり |
|
|
あり |
hooks.d
ディレクトリ
変更通知フックをデプロイする複数のアプリケーションの構成をサポートするために、cfn-hup
はフック構成ディレクトリにある hooks.d
という名前のディレクトリをサポートします。hooks.d
ディレクトリには、1 つ以上の追加のフック構成ファイルを含めることもできます。追加のフックファイルは、hooks.conf
ファイルと同じレイアウトを使用する必要があります。
cfn-hup
デーモンは、このディレクトリの各ファイルを解析およびロードします。hooks.d
ディレクトリのいずれかのフックが hooks.conf
内のフックと同じ名前である場合、フックはマージされます (つまり、両方のファイルで指定されている値では、hooks.d
が hooks.conf
を上書きします)。
例
次の例では、CloudFormation は cfn-auto-reloader.conf
フックファイルを、LaunchConfig
リソースに関連付けられた AWS::CloudFormation::Init
リソースが変更された時にトリガーします。
JSON
...
"LaunchConfig": {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"QBVersion": {"Ref": "paramQBVersion"},
"AWS::CloudFormation::Init" : {
...
"/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
"content": { "Fn::Join": [ "", [
"[cfn-auto-reloader-hook]\n",
"triggers=post.update\n",
"path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
"action=/opt/aws/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configsets wordpress_install ",
" --region ", { "Ref" : "AWS::Region" }, "\n",
"runas=root\n"
]]},
"mode" : "000400",
"owner" : "root",
"group" : "root"
}
...
YAML
...
LaunchConfig:
Type: "AWS::AutoScaling::LaunchConfiguration"
Metadata:
QBVersion: !Ref paramQBVersion
AWS::CloudFormation::Init:
...
/etc/cfn/hooks.d/cfn-auto-reloader.conf:
content: !Sub |
[cfn-auto-reloader-hook]
triggers=post.update
path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init
action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
runas=root
mode: "000400"
owner: "root"
group: "root"
...
関連リソース
サンプルテンプレートについては、「AWS CloudFormationユーザーガイド」の「Amazon EC2 にアプリケーションをデプロイする」を参照してください。