cfn-init
説明
cfn-init ヘルパースクリプトは、AWS::CloudFormation::Init
キーからテンプレートメタデータを読み取って、次の状況に応じて操作を行います。
-
CloudFormation のメタデータの取得と解析
-
パッケージをインストールする
-
ディスクへのファイルの書き込み
-
サービスの有効化/無効化と開始/停止
注記
cfn-init を使用して既存のファイルを更新すると、同じディレクトリに元のファイルのバックアップコピーが作成され、.bak という拡張子が付けられます。たとえば、/
を更新すると、そのアクションにより 2 つのファイルが生成されます。path
/to
/file_name
/
には元のファイルの内容が含まれ、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|-rlogical.resource.id
\ --regionregion
\ --access-keyaccess.key
\ --secret-keysecret.key
\ --rolerolename
\ --credential-file|-fcredential.file
\ --configsets|-cconfig.sets
\ --url|-uservice.url
\ --http-proxyHTTP.proxy
\ --https-proxyHTTPS.proxy
\ --verbose|-v
オプション
名前 | 説明 | 必須 |
---|---|---|
|
スタック名またはスタック ID。 タイプ: 文字列 デフォルト: なし 例: |
あり |
|
メタデータを含むリソースの論理リソース ID です。 タイプ: 文字列 例: |
あり |
|
使用する CloudFormation リージョンのエンドポイントです。 タイプ: 文字列 デフォルト: 例: |
なし |
|
CloudFormation で タイプ: 文字列 |
なし |
|
指定した AWS アクセスキーに対応する AWS シークレットアクセスキーです。 タイプ: 文字列 |
なし |
|
インスタンスに関連付けられた IAM ロールの名前です。 タイプ: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。 |
なし |
|
シークレットアクセスキーとアクセスキーの両方を含むファイルです。認証情報ファイルパラメーターは、--role、--access-key、および --secret-key パラメーターよりも優先されます。 タイプ: 文字列 |
なし |
|
実行する configset のカンマ区切りリスト (実行順)。 タイプ: 文字列 デフォルト: |
なし |
|
使用する CloudFormation エンドポイントです。 タイプ: 文字列 |
なし |
|
HTTP プロキシ (非 SSL)。次の形式を使用します。 タイプ: 文字列 |
なし |
|
HTTPS プロキシ。次の形式を使用します。 タイプ: 文字列 |
なし |
|
詳細を出力します。cfn-init が初期化に失敗した場合のデバッグに役立ちます。 注記初期化イベントをデバッグするには、DisableRollback を有効にする必要があります。CloudFormation コンソールを使用して、高度なオプションの表示を選択し、[Show Advanced Options] (失敗時のロールバック) を [No] (いいえ) に設定することでこの操作ができます。次に、コンソールに SSH 設定して、/var/log/cfn-init.log でログを読み込めます。 |
なし |
|
ヘルプメッセージと終了を示します。 |
なし |
例
Amazon Linux の例
次のスニペットは、EC2 インスタンス (WebServerInstance
リソースに関連付けられた InstallAndRun
configset を実行) の UserData
プロパティを示しています。
完全なサンプルテンプレートについては、「Amazon EC2 にアプリケーションをデプロイする」を参照してください。
最新バージョンを含めるには、UserData
に yum 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} - {}