

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

# CloudFormation ヘルパースクリプトリファレンス
<a name="cfn-helper-scripts-reference"></a>

CloudFormation には、スタックの一部として作成する Amazon EC2 インスタンスでソフトウェアをインストールしたりサービスを開始したりするために使用できる、次の Python ヘルパースクリプトが用意されています。
+  [cfn-init](cfn-init.md) – リソースメタデータの取得と解釈、パッケージのインストール、ファイルの作成、およびサービスの開始で使用します。
+  [cfn-signal](cfn-signal.md) – `WaitCondition` または `CreationPolicy` でシグナルを送信するために使用し、前提となるリソースやアプリケーションの準備ができたときに、スタックの他のリソースを同期できるようにします。
+  [cfn-get-metadata](cfn-get-metadata.md) – 特定のキーへのリソースまたはパスのメタデータを取得するために使用します。
+  [cfn-hup](cfn-hup.md) – メタデータへの更新を確認し、変更が検出されたときにカスタムフックを実行するために使用します。

テンプレートからスクリプトを直接呼び出します。スクリプトは、同じテンプレートで定義されているリソースメタデータと組み合わされて機能します。スクリプトは Amazon EC2 インスタンスでスタック作成プロセス中に実行されます。

**注記**  
スクリプトはデフォルトでは実行されません。特定のヘルパースクリプトを実行するには、テンプレートに呼び出しを含める必要があります。

**Topics**
+ [Amazon Linux AMI イメージ](#cfn-helper-scripts-reference-amazon-amis)
+ [その他のプラットフォーム用パッケージのダウンロード](#cfn-helper-scripts-reference-downloads)
+ [ヘルパースクリプトのアクセス許可](#cfn-helper-scripts-reference-permissions)
+ [最新バージョンの使用](#cfn-helper-scripts-reference-latest-version)
+ [cfn-init](cfn-init.md)
+ [cfn-signal](cfn-signal.md)
+ [cfn-get-metadata](cfn-get-metadata.md)
+ [cfn-hup](cfn-hup.md)

## Amazon Linux AMI イメージ
<a name="cfn-helper-scripts-reference-amazon-amis"></a>

CloudFormation ヘルパースクリプトは、ブートストラップスクリプトがインストールされた Amazon Linux AMI イメージにプレインストールされています。
+ Amazon Linux AMI の最新バージョンでは、スクリプトは `/opt/aws/bin` にプレインストールされています。
+ 以前の Amazon Linux AMI バージョンでは、スクリプトを含む `aws-cfn-bootstrap` パッケージは、Yum リポジトリにあります。

**注記**  
ヘルパースクリプトは、Amazon Linux AMI の最新バージョンにプリインストールされており、Amazon Linux をベースとして使用する ECS に最適化されたイメージなど、最適化された AMI は対象外です。

## その他のプラットフォーム用パッケージのダウンロード
<a name="cfn-helper-scripts-reference-downloads"></a>

<a name="cfn-helper-scripts-reference-downloads"></a>Amazon Linux AMI イメージと Microsoft Windows (2008 以降) を除く Linux/Unix ディストリビューション用に、`aws-cfn-bootstrap` パッケージをダウンロードできます。

**注記**  
ヘルパースクリプトのバージョン 2.0–1 以上は、Python 3.4 以上をサポートしています。以前のバージョンの Python をサポートするヘルパースクリプトが必要な場合は、「[CloudFormation ヘルパースクリプト 1.4 のリリース履歴](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/releasehistory-aws-cfn-bootstrap.html#releasehistory-aws-cfn-bootstrap-v1)」を参照してください。


| File format (ファイル形式) | URL のダウンロード | 
| --- | --- | 
|  TAR.GZ  |  [ https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz) Python の Pip を使用して `tar.gz` をインストールします。Ubuntu 用のインストールを完了するには、シンボリックリンクを作成する必要があります。 `ln -s /<path-to-extracted-tar>/aws-cfn-bootstrap-2.0/init/ubuntu/cfn-hup /etc/init.d/cfn-hup`  | 
|  ZIP  |  [ https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.zip](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.zip)  | 
|  EXE  |  32 ビット Windows: [ https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.exe](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.exe)  64 ビット Windows: [ https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-win64-latest.exe](https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-win64-latest.exe)  | 

## ヘルパースクリプトのアクセス許可
<a name="cfn-helper-scripts-reference-permissions"></a>

デフォルトでは、ヘルパースクリプトは認証情報を必要としないので、`--access-key`、`--secret-key`、`--role`、または `--credential-file` オプションを使う必要がありません。ただし、認証情報が指定されていない場合、CloudFormation はスタックのメンバーシップを確認し、そのインスタンスが属するスタックの呼び出し範囲を制限します。

オプションを指定するように選択する場合、次のいずれかのみを指定することをお勧めします。
+ `--role`
+ `--credential-file`
+ `--access-key` と共に `--secret-key`

オプションを指定する場合は、さまざまなヘルパースクリプトが必要とするアクセス権限に注意してください。
+ `cfn-signal` には `cloudformation:SignalResource` が必要です
+ 他のすべてのヘルパースクリプトは `cloudformation:DescribeStackResource` が必要です

IAM ポリシーで CloudFormation に特定されるアクションと条件コンテキストキーの使用方法の詳細については、「*AWS CloudFormation ユーザーガイド*」の「[AWS Identity and Access Management で CloudFormation アクセスを制御する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html)」を参照してください。

## 最新バージョンの使用
<a name="cfn-helper-scripts-reference-latest-version"></a>

ヘルパースクリプトは定期的に更新されます。ヘルパースクリプトを使用する場合は、必ずスクリプトの最新バージョンを使用してインスタンスを起動してください。
+ スクリプトを呼び出す前に、テンプレートの `UserData` プロパティに次のコマンドを含めます。このコマンドで、確実に最新バージョンを取得できます。

  `yum install -y aws-cfn-bootstrap`
+ `yum install` コマンドを含めずに、`cfn-init`、`cfn-signal`、または `cfn-get-metadata` スクリプトを使用する場合、次のコマンドを使用して各 Amazon EC2 Linux インスタンスのスクリプトを手動で更新する必要があります。

  `sudo yum install -y aws-cfn-bootstrap`
**注記**  
`sudo yum install -y aws-cfn-bootstrap` を実行すると、`yum` リポジトリからヘルパースクリプトがインストールされます。
+ `yum install` コマンドを含めずに、`cfn-hup` スクリプトを使用する場合、次のコマンドを使用して各 Amazon EC2 Linux インスタンスのスクリプトを手動で更新する必要があります。

  `sudo yum install -y aws-cfn-bootstrap`

  `sudo /sbin/service cfn-hup restart`
**注記**  
`sudo yum install -y aws-cfn-bootstrap` を実行すると、`yum` リポジトリからヘルパースクリプトがインストールされます。
+ スクリプトのソースコードを使用して Linux の別バージョンまたは別のプラットフォームで作業する場合、独自の証明書信頼ストアを作成済みであれば、信頼ストアも常に更新しておく必要があります。

`aws-cfn-bootstrap` パッケージのバージョン履歴については、「[CloudFormation ヘルパースクリプトのリリース履歴](releasehistory-aws-cfn-bootstrap.md)」を参照してください。

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

CloudFormation テンプレートでは、Amazon EC2 リソースの `Metadata` セクション内で `AWS::CloudFormation::Init` を使用して初期化タスクを定義できます。詳細については、「[`AWS::CloudFormation::Init`](aws-resource-init.md)」を参照してください。

`cfn-init` ヘルパースクリプトは、`AWS::CloudFormation::Init` キーからテンプレートメタデータを読み取って、次の状況に応じて操作を行います。
+ CloudFormation のメタデータの取得と解析
+ パッケージをインストールする
+ ディスクへのファイルの書き込み
+ サービスの有効化/無効化と開始/停止

`cfn-init` ヘルパースクリプトは通常、Amazon EC2 インスタンスまたは起動テンプレートのユーザーデータから実行されます。

ヘルパースクリプトを初めて使用する場合は、まず「*AWS CloudFormation ユーザーガイド*」の「[Amazon EC2 にアプリケーションをデプロイする](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html)」チュートリアルを完了することをお勧めします。

**Topics**
+ [構文](#cfn-init-Syntax)
+ [オプション](#cfn-init-options)
+ [例](#cfn-init-examples)
+ [関連リソース](#cfn-init-related-resources)

**注記**  
`cfn-init` を使用して既存のファイルを更新すると、同じディレクトリに元のファイルのバックアップコピーが作成され、bak という拡張子が付けられます。たとえば、`/path/to/file_name` を更新すると、そのアクションにより 2 つのファイルが生成されます。`/path/to/file_name.bak` には元のファイルの内容が含まれ、`/path/to/file_name` には更新された内容が含まれます。

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

```
cfn-init --stack|-s stack.name.or.id \
         --resource|-r logical.resource.id \
         --region region \
         --access-key access.key \
         --secret-key secret.key \
         --role rolename \
         --credential-file|-f credential.file \
         --configsets|-c config.sets \
         --url|-u service.url \
         --http-proxy HTTP.proxy \
         --https-proxy HTTPS.proxy \
         --verbose|-v
```

**注記**  
`cfn-init` は認証情報を必要としないため、`--access-key`、`--secret-key`、`--role`、`--credential-file` オプションを使用する必要はありません。ただし、認証情報が指定されていない場合、CloudFormation はスタックのメンバーシップを確認し、そのインスタンスが属するスタックの呼び出し範囲を制限します。詳細については、「[ヘルパースクリプトのアクセス許可](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions)」を参照してください。

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


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
|   `-s, --stack`   |  スタック名またはスタック ID。 *タイプ*: 文字列 *デフォルト*: なし 例: `--stack { "Ref" : "AWS::StackName" },`  |  はい  | 
|   `-r, --resource `   |  メタデータを含むリソースの論理リソース ID です。 タイプ: 文字列 例: `--resource WebServerHost`  |  はい  | 
|   `--region`   |  使用する CloudFormation リージョンのエンドポイントです。 *タイプ*: 文字列 *デフォルト*: `us-east-1` 例: `--region ", { "Ref" : "AWS::Region" },`  |  いいえ  | 
|   `--access-key`   |  CloudFormation で `DescribeStackResource` を呼び出す許可が付与されたアカウントの AWS アクセスキー。認証情報ファイルパラメーターは、このパラメーターより優先されます。 *タイプ*: 文字列  |  いいえ  | 
|   `--secret-key`   |  指定した AWS アクセスキーに対応する AWS シークレットアクセスキーです。 *タイプ*: 文字列  |  いいえ  | 
|   `--role`   |  インスタンスに関連付けられた IAM ロールの名前です。 *タイプ*: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。  |  いいえ  | 
|   `-f, --credential-file`   |  シークレットアクセスキーとアクセスキーの両方を含むファイルです。認証情報ファイルパラメーターは、--role、--access-key、および --secret-key パラメーターよりも優先されます。 *タイプ*: 文字列  |  いいえ  | 
|   `-c, --configsets`   |  実行する configset のカンマ区切りリスト (実行順)。 *タイプ*: 文字列 *デフォルト*: `default`  |  いいえ  | 
|   `-u, --url`   |  使用する CloudFormation エンドポイントです。 *タイプ*: 文字列  |  いいえ  | 
|  `--http-proxy`  |  HTTP プロキシ (非 SSL)。次の形式を使用します。`http://user:password@host:port` *タイプ*: 文字列  |  いいえ  | 
|  `--https-proxy`  |  HTTPS プロキシ。次の形式を使用します。`https://user:password@host:port` *タイプ*: 文字列  |  いいえ  | 
|  `-v, --verbose`  |  詳細を出力します。`cfn-init` が初期化に失敗した場合のデバッグに役立ちます。  初期化イベントをデバッグするには、`DisableRollback` を有効にする必要があります。次に、コンソールに SSH し、`/var/log/cfn-init.log` のログを読みます。詳細については、「*AWS CloudFormationユーザーガイド*」の「[リソースのプロビジョニング時における失敗への対応方法を選択する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html)」を参照してください。   |  いいえ  | 
| `-h, --help` | ヘルプメッセージと終了を示します。 |  いいえ | 

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

### Amazon Linux の例
<a name="w2aac32c27c21b3"></a>

次の例は、EC2 インスタンス (`WebServerInstance` リソースに関連付けられた `InstallAndRun` configset を実行) の `UserData` プロパティを示しています。

最新バージョンを含めるには、`UserData` に `yum install -y aws-cfn-bootstrap` を追加します。

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

`Fn::Join` 組み込み関数を使用する `UserData` プロパティ。

```
{
    "UserData": {
        "Fn::Base64": {
            "Fn::Join": [
                "",
                [
                    "#!/bin/bash -xe\n",
                    "",
                    "yum install -y aws-cfn-bootstrap",
                    "/opt/aws/bin/cfn-init -v ",
                    "         --stack ",
                    {
                        "Ref": "AWS::StackName"
                    },
                    "         --resource WebServerInstance ",
                    "         --configsets InstallAndRun ",
                    "         --region ",
                    {
                        "Ref": "AWS::Region"
                    },
                    "\n"
                ]
            ]
        }
    }
}
```

#### YAML
<a name="cfn-init-example.yaml"></a>

`UserData` 組み込み関数を使用する `Fn::Sub` プロパティ。

```
UserData:
  Fn::Base64: !Sub |
    #!/bin/bash -xe
    yum update -y aws-cfn-bootstrap
    # Install the files and packages from the metadata
    /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --configsets InstallAndRun --region ${AWS::Region}
```

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

サンプルテンプレートについては、「*AWS CloudFormation ユーザーガイド*」の「[Amazon EC2 にアプリケーションをデプロイする](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html)」を参照してください。

Windows の例については、「*AWS CloudFormation ユーザーガイド*」の「[Windows ベースの CloudFormation スタックのブートストラップ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-windows-stacks-bootstrapping.html)」を参照してください。

また、GitHub リポジトリにアクセスして、`cfn-init` を使用する[サンプルテンプレート](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) 

`cfn-init` を使用する LAMP スタックテンプレートの例については、GitHub ウェブサイトの [ec2-lamp-server](https://github.com/aws-samples/ec2-lamp-server) を参照してください。

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

`cfn-signal` ヘルパースクリプトは、Amazon EC2 インスタンスが正常に作成または更新されたかどうかを示すシグナルを CloudFormation に送信します。インスタンスにソフトウェアアプリケーションをインストールして設定する場合、ソフトウェアアプリケーションが使用できる状態になった時に CloudFormation にシグナルを送信できます。

Amazon EC2 Auto Scaling グループでは、`cfn-signal` スクリプトを [`CreationPolicy` 属性](aws-attribute-creationpolicy.md) と組み合わせて使用​​するか、[`UpdatePolicy` 属性](aws-attribute-updatepolicy.md) を `WaitOnResourceSignals` と組み合わせて使用​​します。CloudFormation がこれらのポリシーを使用してリソースを作成または更新する場合、リソースが必要な数のシグナルを受信するか、またはタイムアウト時間を超過するまで、スタック上の作業を停止します。CloudFormation が受信する有効なシグナルごとに、CloudFormation はスタックイベントにシグナルを発行して各シグナルを追跡できるようにします。

**Topics**
+ [リソースシグナリングの構文 (推奨)](#w2aac32c29b9)
+ [待機条件ハンドルを使用するための構文](#cfn-signal-Syntaxwaitcondition)
+ [オプション](#cfn-signal-options)
+ [例](#cfn-signal-examples)
+ [関連リソース](#cfn-signal-related-resources)

## リソースシグナリングの構文 (推奨)
<a name="w2aac32c29b9"></a>

CloudFormation リソースにシグナルを送信するには、次の構文を使用します。

```
cfn-signal --success|-s signal.to.send \
        --access-key access.key \
        --credential-file|-f credential.file \
        --exit-code|-e exit.code \
        --http-proxy HTTP.proxy \
        --https-proxy HTTPS.proxy \
        --id|-i unique.id \
        --region AWS.region \
        --resource resource.logical.ID \
        --role IAM.role.name \
        --secret-key secret.key \
        --stack stack.name.or.stack.ID \
        --url CloudFormation.endpoint
```

**注記**  
`cfn-signal` は認証情報を必要としないため、`--access-key`、`--secret-key`、`--role`、`--credential-file` オプションを使用する必要はありません。ただし、認証情報が指定されていない場合、CloudFormation はスタックのメンバーシップを確認し、そのインスタンスが属するスタックの呼び出し範囲を制限します。詳細については、「[ヘルパースクリプトのアクセス許可](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions)」を参照してください。

## 待機条件ハンドルを使用するための構文
<a name="cfn-signal-Syntaxwaitcondition"></a>

待機条件ハンドルのシグナルを送信するには、次の構文を使用します。

```
cfn-signal --success|-s signal.to.send \
        --reason|-r resource.status.reason \
        --data|-d data \
        --id|-i unique.id \
        --exit-code|-e exit.code \
        waitconditionhandle.url
```

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

使用できるオプションは、シグナルが作成ポリシーか待機条件ハンドルかによって異なります。作成ポリシーに適用するオプションは、待機条件ハンドルに適用されない場合があります。


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
|  `--access-key` (リソースシグナル送信のみ)  |  CloudFormation `SignalResource ` API を呼び出す許可が付与されたアカウントの AWS アクセスキー。認証情報ファイルパラメーターは、このパラメーターより優先されます。 *タイプ*: 文字列  |  いいえ  | 
|  `-d, --data` (待機条件ハンドルのみ)  |  `waitConditionHandle` とともに返送するデータです。デフォルトは空白です。 *タイプ*: 文字列 *デフォルト*: 空白  |  いいえ  | 
|  `-e, --exit-code`   |  成功か失敗かの判断に使用できる、プロセスからのエラーコードです。指定した場合、`--success` オプションは無視されます。 *タイプ*: 文字列 例: `-e $?` (Linux 用)、`-e %ERRORLEVEL%` (Windows cmd.exe 用)、および `-e $lastexitcode` (Windows PowerShell 用)。  |  いいえ  | 
|  `-f, --credential-file` (リソースシグナル送信のみ)  |  シークレットアクセスキーとアクセスキーの両方を含むファイルです。認証情報ファイルパラメーターは、--role、--access-key、および --secret-key パラメーターよりも優先されます。 *タイプ*: 文字列  |  いいえ  | 
|  `--http-proxy`  |  HTTP プロキシ (非 SSL)。次の形式を使用します。`http://user:password@host:port` *タイプ*: 文字列  |  いいえ  | 
|  `--https-proxy`  |  HTTPS プロキシ。次の形式を使用します。`https://user:password@host:port` *タイプ*: 文字列  |  いいえ  | 
|  `-i, --id`  |  送信するユニーク ID です。 *タイプ*: 文字列 *デフォルト*: Amazon EC2 インスタンスの ID です。ID が解決されない場合、マシンの完全修飾ドメイン名 (FQDN) が返されます。  |  いいえ  | 
|  `-r, --reason ` (待機条件ハンドルのみ)  |  リソースイベントのステータスの理由です (現在は失敗の場合のみ使用されています) - success が false の場合、デフォルトは "Configuration failed" です。 *タイプ*: 文字列  |  いいえ  | 
| --region (リソースシグナル送信のみ) |  使用する CloudFormation リージョンのエンドポイントです。 *タイプ*: 文字列 *デフォルト*: `us-east-1`  |  いいえ  | 
| --resource (リソースシグナル送信のみ) |  シグナルを送信する作成ポリシーを含むリソースの論理 ID です。 *タイプ*: 文字列  |  はい  | 
|  `--role` (リソースシグナル送信のみ)  |  インスタンスに関連付けられた IAM ロールの名前です。 *タイプ*: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。  |  いいえ  | 
|  `-s, --success`   |  true の場合、信号 `SUCCESS`、その他 `FAILURE`。 型: ブール *デフォルト*: `true`  |  いいえ  | 
|  `--secret-key` (リソースシグナル送信のみ)  |  指定した AWS アクセスキーに対応する AWS シークレットアクセスキーです。 *タイプ*: 文字列  |  いいえ  | 
|  `--stack` (リソースシグナル送信のみ)  |  シグナルを送信するリソースを含むスタック名またはスタック ID です。 *タイプ*: 文字列  |  はい  | 
| -u, --url (リソースシグナル送信のみ) |  使用する CloudFormation エンドポイントです。 *タイプ*: 文字列  |  いいえ  | 
|  `waitconditionhandle.url` (待機条件ハンドルのみ)  |  関連付けられている `WaitCondition` に成功または失敗のシグナルを送信するために使用できる署名済み URL です。 *タイプ*: 文字列  |  はい  | 

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

### Amazon Linux の例
<a name="w2aac32c29c15b3"></a>

よくある使用パターンは、`cfn-init` と `cfn-signal` を一緒に使用することです。`cfn-signal` 呼び出しは、`cfn-init` への呼び出しから返されるステータスを使用します (\$1? シェル構造を使用)。アプリケーションのインストールが失敗すると、インスタンスの作成が失敗し、スタックはロールバックされます。

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

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Simple EC2 instance",
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Metadata": {
                "AWS::CloudFormation::Init": {
                    "config": {
                        "files": {
                            "/tmp/test.txt": {
                                "content": "Hello world!",
                                "mode": "000755",
                                "owner": "root",
                                "group": "root"
                            }
                        }
                    }
                }
            },
            "Properties": {
                "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
                "InstanceType": "t2.micro",
                "UserData": {
                    "Fn::Base64": {
                        "Fn::Join": [
                            "",
                            [
                                "#!/bin/bash -x\n",
                                "# Install the files and packages from the metadata\n",
                                "yum install -y aws-cfn-bootstrap",
                                "\n",
                                "/opt/aws/bin/cfn-init -v ",
                                "         --stack ",
                                {
                                    "Ref": "AWS::StackName"
                                },
                                "         --resource MyInstance ",
                                "         --region ",
                                {
                                    "Ref": "AWS::Region"
                                },
                                "\n",
                                "# Signal the status from cfn-init\n",
                                "/opt/aws/bin/cfn-signal -e $? ",
                                "         --stack ",
                                {
                                    "Ref": "AWS::StackName"
                                },
                                "         --resource MyInstance ",
                                "         --region ",
                                {
                                    "Ref": "AWS::Region"
                                },
                                "\n"
                            ]
                        ]
                    }
                }
            },
            "CreationPolicy": {
                "ResourceSignal": {
                    "Timeout": "PT5M"
                }
            }
        }
    }
}
```

#### YAML
<a name="cfn-signal-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Description: Simple EC2 instance
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Metadata:
      'AWS::CloudFormation::Init':
        config:
          files:
            /tmp/test.txt:
              content: Hello world!
              mode: '000755'
              owner: root
              group: root
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
      InstanceType: t2.micro
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash -x
          # Install the files and packages from the metadata
          yum install -y aws-cfn-bootstrap
          /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
          # Signal the status from cfn-init
          /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
    CreationPolicy:
      ResourceSignal:
        Timeout: PT5M
```

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

また、GitHub リポジトリにアクセスして、`cfn-signal` を使用する[サンプルテンプレート](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) 

# cfn-get-metadata
<a name="cfn-get-metadata"></a>

`cfn-get-metadata` ヘルパースクリプトを使用すると、CloudFormation からメタデータブロックを取得して、標準出力に表示できます。キーを指定すれば、メタデータブロックのサブツリーを印字することもできます。ただし、最上位レベルのキーのみがサポートされます。

**Topics**
+ [構文](#cfn-get-metadata-Syntax)
+ [オプション](#cfn-get-metadata-options)

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

```
cfn-get-metadata --access-key access.key \
                 --secret-key secret.key \
                 --credential-file|f credential.file \
                 --key|k key \
                 --stack|-s stack.name.or.id \
                 --resource|-r logical.resource.id \
                 --role IAM.role.name \
                 --url|-u service.url \
                 --region region
```

**注記**  
`cfn-get-metadata` は認証情報を必要としないため、`--access-key`、`--secret-key`、`--role`、`--credential-file` オプションを使用する必要はありません。ただし、認証情報が指定されていない場合、CloudFormation はスタックのメンバーシップを確認し、そのインスタンスが属するスタックの呼び出し範囲を制限します。詳細については、「[ヘルパースクリプトのアクセス許可](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions)」を参照してください。

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


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
|   `-k, --key`   |  キーと値のペアの場合は、指定した値のキーの名前が返されます。 タイプ: 文字列 例: `{ "Key1": "SampleKey1", "Key2": "SampleKey2" }` では、`cfn-get-metadata -k Key2` は `SampleKey2` を返します。  |  いいえ  | 
|   `-s, --stack`   |  スタックの名前です。 タイプ: 文字列 *デフォルト*: なし 例: `-s { "Ref" : "AWS::StackName" },`  |  はい  | 
|   `-r, --resource`   |  メタデータを含むリソースの論理リソース ID です。 タイプ: 文字列 例: `-r WebServerHost`  |  はい  | 
|  `--role` (リソースシグナル送信のみ)  |  インスタンスに関連付けられた IAM ロールの名前です。 タイプ: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。  |  いいえ  | 
|   `--region`   |  CloudFormation URL の生成元となるリージョンです。 タイプ: 文字列 *デフォルト*: なし 例: `--region ", { "Ref" : "AWS::Region" },`  |  いいえ  | 
|   `--access-key`   |  CloudFormation の DescribeStackResource を呼び出す許可が付与されたアカウントの AWS アクセスキー。 タイプ: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。  |  条件付き  | 
|   `--secret-key`   |  指定した AWS アクセスキーに対応する AWS シークレットキーです。 タイプ: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。  |  条件付き  | 
|   `-f, --credential-file`   |  シークレットキーとアクセスキーの両方を含むファイルです。 タイプ: 文字列 条件: 認証情報ファイルパラメーターは、--access-key および --secret-key パラメーターよりも優先されます。  |  条件付き  | 

# 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) 