

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# cfn-hup
<a name="cfn-hup"></a>

`cfn-hup` ヘルパーは、リソースメタデータの変更を検出し、変更が検出された場合に、ユーザーが指定した操作を実行するデーモンです。これによって、`UpdateStack` API アクションを介して、実行中の Amazon EC2 インスタンスに構成を更新できます。

詳細については、「*AWS CloudFormation ユーザーガイド*」の「[CloudFormation スタックの更新](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/updating.stacks.walkthrough.html)」を参照してください。

**Topics**
+ [構文](#cfn-hup-Syntax)
+ [オプション](#cfn-hup-options)
+ [cfn-hup.conf 構成ファイル](#cfn-hup-config-file)
+ [`hooks.conf` 設定ファイル](#cfn-hup-hook-file)
+ [`hooks.d` ディレクトリ](#cfn-hup-hooks-dir)
+ [例](#cfn-hup-examples)
+ [関連リソース](#cfn-hup-related-resources)

## 構文
<a name="cfn-hup-Syntax"></a>

```
cfn-hup --config|-c config.dir \
        --no-daemon \
        --verbose|-v
```

## オプション
<a name="cfn-hup-options"></a>


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
|   `--config\|-c config.dir`   |  `cfn-hup` スクリプトが `cfn-hup.conf` および `hooks.d` ディレクトリを探すパスを指定します。Windows では、デフォルトのパスは `system_drive\cfn` です。Linux では、デフォルトのパスは `/etc/cfn` です。  |  いいえ  | 
|   `--no-daemon`   |  `cfn-hup` スクリプトを一度実行して終了するには、このオプションを指定します。  |  いいえ  | 
|   `-v, --verbose `   |  詳細モードを使用するには、このオプションを指定します。  |  いいえ  | 

## cfn-hup.conf 構成ファイル
<a name="cfn-hup-config-file"></a>

`cfn-hup.conf` ファイルは、`cfn-hup` デーモンのターゲットとなるスタックの名前と AWS 認証情報を格納します。

`cfn-hup.conf` ファイルは、次の形式を使用します。

```
[main]
stack=<stack-name-or-id>
```


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
|   `stack`   |  スタックの名前または ID です。 *タイプ*: 文字列  |  はい  | 
|   `credential-file`   |  コマンドラインツールで使用するのと同じ形式の、所有者のみの認証情報ファイルです。 *タイプ*: 文字列 *条件*: `role` パラメータは、このパラメータより優先されます。  |  いいえ  | 
|   `role`   |  インスタンスに関連付けられた IAM ロールの名前です。 *タイプ*: 文字列  |  いいえ  | 
|   `region`   |  スタックを含む AWS リージョン の名前です。 *例*: us-east-2  |  いいえ  | 
|   `umask`   |  `umask` デーモンで使用される `cfn-hup` 。 この値は、前に 0 を付けても、付けなくても指定できます。両方の場合も、8 進数として解釈されます (Linux の `umask` コマンドと同様)。このパラメータは Windows には影響しません。 *タイプ *: `0`～`0777` の 8 進数の整数 *デフォルト*: `022`、バージョン 1.4–22 以上。`022` のデフォルト値は、グループとワールド書き込み許可をマスクするため、`cfn-hup` デーモンによって作成されるファイルは、デフォルトでグループまたはワールドの書き込みができません。バージョン 1.4〜21 以前のデフォルト値は `0` で、何もマスクされません。  |  いいえ  | 
|   `interval`   |  リソースメタデータへの変更を確認する間隔 (分単位)。 *タイプ:* 整数 *デフォルト*: `15`  |  いいえ  | 
|   `verbose`   |  詳細ログ記録を行うかどうかを指定します。 型: ブール *デフォルト*: `false`  |  いいえ  | 

## `hooks.conf` 設定ファイル
<a name="cfn-hup-hook-file"></a>

`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` アクションを再度実行するように強制されます。


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
|   `hookname`   |  このフックの一意の名前。 *タイプ*: 文字列  |  はい  | 
|   `triggers`   |  検出する条件のカンマ区切りのリストです。 *有効な値*: `post.add`、`post.update`、または `post.remove` 例: `post.add, post.update`  |  はい  | 
|   `path`   |  メタデータオブジェクトへのパスです。メタデータブロック内の任意の深いパスをサポートします。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/TemplateReference/cfn-hup.html)  |  はい  | 
|   `action`   |  所定のものとして実行される任意のシェルコマンドです。  |  はい  | 
|   `runas`   |  `cfn-hup` としてコマンドを実行するユーザーは、su コマンドを使用してユーザーに切り替えます。  |  はい  | 

## `hooks.d` ディレクトリ
<a name="cfn-hup-hooks-dir"></a>

変更通知フックをデプロイする複数のアプリケーションの構成をサポートするために、`cfn-hup` はフック構成ディレクトリにある `hooks.d` という名前のディレクトリをサポートします。`hooks.d` ディレクトリには、1 つ以上の追加のフック構成ファイルを含めることもできます。追加のフックファイルは、`hooks.conf` ファイルと同じレイアウトを使用する必要があります。

`cfn-hup` デーモンは、このディレクトリの各ファイルを解析およびロードします。`hooks.d` ディレクトリのいずれかのフックが `hooks.conf` 内のフックと同じ名前である場合、フックはマージされます (つまり、両方のファイルで指定されている値では、`hooks.d` が `hooks.conf` を上書きします)。

## 例
<a name="cfn-hup-examples"></a>

次の例では、CloudFormation は `cfn-auto-reloader.conf` フックファイルを、`LaunchConfig` リソースに関連付けられた `AWS::CloudFormation::Init` リソースが変更された時にトリガーします。

### JSON
<a name="cfn-hup-example.json"></a>

```
...
    "LaunchConfig": {
      "Type" : "AWS::AutoScaling::LaunchConfiguration",
      "Metadata" : {
        "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
<a name="cfn-hup-example.yaml"></a>

```
...
  LaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      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"
...
```

## 関連リソース
<a name="cfn-hup-related-resources"></a>

また、GitHub リポジトリにアクセスして、`cfn-hup` を使用する[サンプルテンプレート](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates)をダウンロードすることもできます。これには次のテンプレートが含まれます。
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 