CloudFormation テンプレートでは、Amazon EC2 リソースの Metadata
セクション内で AWS::CloudFormation::Init
を使用して初期化タスクを定義できます。詳細については、「AWS CloudFormation ユーザーガイド」の「AWS::CloudFormation::Init」を参照してください。
cfn-init
ヘルパースクリプトは、AWS::CloudFormation::Init
キーからテンプレートメタデータを読み取って、次の状況に応じて操作を行います。
-
CloudFormation のメタデータの取得と解析
-
パッケージをインストールする
-
ディスクへのファイルの書き込み
-
サービスの有効化/無効化と開始/停止
cfn-init
ヘルパースクリプトは通常、Amazon EC2 インスタンスまたは起動テンプレートのユーザーデータから実行されます。
注記
cfn-init
を使用して既存のファイルを更新すると、同じディレクトリに元のファイルのバックアップコピーが作成され、bak という拡張子が付けられます。たとえば、/
を更新すると、そのアクションにより 2 つのファイルが生成されます。path
/to
/file_name
/
には元のファイルの内容が含まれ、path
/to
/file_name
.bak/
には更新された内容が含まれます。path
/to
/file_name
構文
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
注記
cfn-init
は認証情報を必要としないため、--access-key
、--secret-key
、--role
、--credential-file
オプションを使用する必要はありません。ただし、認証情報が指定されていない場合、CloudFormation はスタックのメンバーシップを確認し、そのインスタンスが属するスタックの呼び出し範囲を制限します。詳細については、「ヘルパースクリプトのアクセス許可」を参照してください。
オプション
名前 | 説明 | 必須 |
---|---|---|
|
スタック名またはスタック ID。 タイプ: 文字列 デフォルト: なし 例: |
はい |
|
メタデータを含むリソースの論理リソース ID です。 タイプ: 文字列 例: |
はい |
|
使用する CloudFormation リージョンのエンドポイントです。 タイプ: 文字列 デフォルト: 例: |
いいえ |
|
CloudFormation で タイプ: 文字列 |
いいえ |
|
指定した AWS アクセスキーに対応する AWS シークレットアクセスキーです。 タイプ: 文字列 |
いいえ |
|
インスタンスに関連付けられた IAM ロールの名前です。 タイプ: 文字列 条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。 |
いいえ |
|
シークレットアクセスキーとアクセスキーの両方を含むファイルです。認証情報ファイルパラメーターは、--role、--access-key、および --secret-key パラメーターよりも優先されます。 タイプ: 文字列 |
いいえ |
|
実行する configset のカンマ区切りリスト (実行順)。 タイプ: 文字列 デフォルト: |
いいえ |
|
使用する CloudFormation エンドポイントです。 タイプ: 文字列 |
いいえ |
|
HTTP プロキシ (非 SSL)。次の形式を使用します。 タイプ: 文字列 |
いいえ |
|
HTTPS プロキシ。次の形式を使用します。 タイプ: 文字列 |
いいえ |
|
詳細を出力します。 注記初期化イベントをデバッグするには、 |
いいえ |
|
ヘルプメッセージと終了を示します。 |
いいえ |
例
Amazon Linux の例
次の例は、EC2 インスタンス (WebServerInstance
リソースに関連付けられた InstallAndRun
configset を実行) の UserData
プロパティを示しています。
最新バージョンを含めるには、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}
- {}
関連リソース
また、GitHub リポジトリにアクセスして、cfn-init
を使用するサンプルテンプレートをダウンロードすることもできます。これには次のテンプレートが含まれます。
Windows テンプレートについては、「AWS CloudFormation ユーザーガイド」の「Microsoft Windows スタックテンプレートの使用」を参照してください。