

これは新しい 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。 *タイプ*: 文字列 *デフォルト*: なし 例: `--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) を参照してください。