

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

# 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。<br />*タイプ*: 文字列<br />*デフォルト*: なし<br />例: `--stack { "Ref" : "AWS::StackName" },` | はい | 
|  `-r, --resource `  | メタデータを含むリソースの論理リソース ID です。<br />タイプ: 文字列<br />例: `--resource WebServerHost` | はい | 
|  `--region`  | 使用する CloudFormation リージョンのエンドポイントです。<br />*タイプ*: 文字列<br />*デフォルト*: `us-east-1`<br />例: `--region ", { "Ref" : "AWS::Region" },` | いいえ | 
|  `--access-key`  | CloudFormation で `DescribeStackResource` を呼び出す許可が付与されたアカウントの AWS アクセスキー。認証情報ファイルパラメーターは、このパラメーターより優先されます。<br />*タイプ*: 文字列 | いいえ | 
|  `--secret-key`  | 指定した AWS アクセスキーに対応する AWS シークレットアクセスキーです。<br />*タイプ*: 文字列 | いいえ | 
|  `--role`  | インスタンスに関連付けられた IAM ロールの名前です。<br />*タイプ*: 文字列<br />条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。 | いいえ | 
|  `-f, --credential-file`  | シークレットアクセスキーとアクセスキーの両方を含むファイルです。認証情報ファイルパラメーターは、--role、--access-key、および --secret-key パラメーターよりも優先されます。<br />*タイプ*: 文字列 | いいえ | 
|  `-c, --configsets`  | 実行する configset のカンマ区切りリスト (実行順)。<br />*タイプ*: 文字列<br />*デフォルト*: `default` | いいえ | 
|  `-u, --url`  | 使用する CloudFormation エンドポイントです。<br />*タイプ*: 文字列 | いいえ | 
| `--http-proxy` | HTTP プロキシ (非 SSL)。次の形式を使用します。`http://{{user:password}}@{{host}}:{{port}}`<br />*タイプ*: 文字列 | いいえ | 
| `--https-proxy` | HTTPS プロキシ。次の形式を使用します。`https://{{user:password}}@{{host}}:{{port}}`<br />*タイプ*: 文字列 | いいえ | 
| `-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) を参照してください。