cfn-init - AWS CloudFormation

cfn-init

説明

cfn-init ヘルパースクリプトは、AWS::CloudFormation::Init キーからテンプレートメタデータを読み取って、次の状況に応じて操作を行います。

  • CloudFormation のメタデータの取得と解析

  • パッケージをインストールする

  • ディスクへのファイルの書き込み

  • サービスの有効化/無効化と開始/停止

注記

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

テンプレートメタデータについては、「AWS::CloudFormation::Init」を参照してください。

注記

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

構文

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

オプション

名前 説明 必須

-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 を有効にする必要があります。CloudFormation コンソールを使用して、高度なオプションの表示を選択し、[Show Advanced Options] (失敗時のロールバック) を [No] (いいえ) に設定することでこの操作ができます。次に、コンソールに SSH 設定して、/var/log/cfn-init.log でログを読み込めます。

なし

-h, --help

ヘルプメッセージと終了を示します。

なし

Amazon Linux の例

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

完全なサンプルテンプレートについては、「AWS CloudFormation を使用して Amazon EC2 にアプリケーションをデプロイする」を参照してください。

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

JSON

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

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

UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - '' - yum install -y aws-cfn-bootstrap - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+

JSON

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

{ "UserData": { "Fn::Base64": { "Fn::Sub": [ "#!/bin/bash -x\n# Install the files and packages from the metadata\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n\n# Signal the status from cfn-init\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n", {} ] } } }

YAML

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

UserData: !Base64 'Fn::Sub': - > #!/bin/bash -x # Install the files and packages from the metadata /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} - {}