AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

cfn-signal

説明

cfn-signal ヘルパースクリプトは、Amazon EC2 インスタンスが正常に作成または更新されたかどうかを示すシグナルを AWS CloudFormation に送信します。インスタンスにソフトウェアアプリケーションをインストールして設定する場合、ソフトウェアアプリケーションが使用できる状態になった時に AWS CloudFormation にシグナルを送信できます。

cfn-signal スクリプトは CreationPolicy または WaitOnResourceSignals 更新ポリシーを持つ Auto Scaling グループともに使用します。AWS CloudFormation がこれらのポリシーとともにリソースを作成または更新する場合、リソースが必要な数のシグナルを受信するか、またはタイムアウト期間を超過するまで、スタックの作業を停止します。AWS CloudFormation が有効なシグナルを受信するたびに、AWS CloudFormation はスタックイベントにシグナルを発行して各シグナルを追跡できるようにします。作成ポリシーおよび cfn-signal の使用に関するウォークスルーは、「AWS CloudFormation による Amazon EC2 へのアプリケーションのデプロイ」を参照してください。

注記

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

リソースシグナリングの構文 (推奨)

AWS CloudFormation リソースにシグナルを送信するには、次の構文を使用します。

cfn-signal --success|-s signal.to.send \ --access-key access.key \ --credential-file|-f credential.file \ --exit-code|-e exit.code \ --http-proxy HTTP.proxy \ --https-proxy HTTPS.proxy \ --id|-i unique.id \ --region AWS.region \ --resource resource.logical.ID \ --role IAM.role.name \ --secret-key secret.key \ --stack stack.name.or.stack.ID \ --url AWS CloudFormation.endpoint

待機条件ハンドルを使用するための構文

待機条件ハンドルのシグナルを送信するには、次の構文を使用します。

cfn-signal --success|-s signal.to.send \ --reason|-r resource.status.reason \ --data|-d data \ --id|-i unique.id \ --exit-code|-e exit.code \ waitconditionhandle.url

オプション

使用できるオプションは、シグナルが作成ポリシーか待機条件ハンドルかによって異なります。作成ポリシーに適用するオプションは、待機条件ハンドルに適用されない場合があります。

名前 説明 必須

--access-key (リソースシグナル送信のみ)

AWS CloudFormation SignalResource API を呼び出すアクセス権限を持つアカウントの AWS アクセスキーです。認証情報ファイルパラメーターは、このパラメーターより優先されます。

Type: String

いいえ

-d, --data (待機条件ハンドルのみ)

waitConditionHandle とともに返送するデータです。デフォルトは空白です。

Type: String

デフォルト: 空白

いいえ

-e, --exit-code

成功か失敗かの判断に使用できる、プロセスからのエラーコードです。指定した場合、--success オプションは無視されます。

Type: String

: -e $? (Linux 用)、-e %ERRORLEVEL% (Windows cmd.exe 用)、および -e $lastexitcode (Windows PowerShell 用)。

いいえ

-f, --credential-file (リソースシグナル送信のみ)

シークレットアクセスキーとアクセスキーの両方を含むファイルです。認証情報ファイルパラメーターは、--role、--access-key、および --secret-key パラメーターよりも優先されます。

Type: String

いいえ

--http-proxy

HTTP プロキシ (非 SSL)。次の形式を使用します。http://user:password@host:port

Type: String

いいえ

--https-proxy

HTTPS プロキシ。次の形式を使用します。https://user:password@host:port

Type: String

いいえ

-i, --id

送信するユニーク ID です。

Type: String

デフォルト: Amazon EC2 インスタンスの ID です。ID が解決されない場合は、マシンの完全修飾ドメイン名 (FQDN) が返されます。

いいえ

-r, --reason (待機条件ハンドルのみ)

リソースイベントのステータスの理由です (現在は失敗の場合のみ使用されています) - success が false の場合、デフォルトは "Configuration failed" です。

Type: String

いいえ

--region (リソースシグナル送信のみ)

使用する AWS CloudFormation リージョンのエンドポイントです。

Type: String

デフォルト: us-east-1

いいえ

--resource (リソースシグナル送信のみ)

シグナルを送信する作成ポリシーを含むリソースの論理 ID です。

Type: String

はい

--role (リソースシグナル送信のみ)

インスタンスに関連付けられた IAM ロールの名前です。

Type: String

条件: 認証情報ファイルパラメーターは、このパラメーターより優先されます。

いいえ

-s, --success

true の場合、シグナルは SUCCESS で、それ以外の場合は FAILURE です。

Type: Boolean

デフォルト: true

いいえ

--secret-key (リソースシグナル送信のみ)

指定した AWS アクセスキーに対応する AWS シークレットアクセスキーです。

Type: String

いいえ

--stack (リソースシグナル送信のみ)

シグナルを送信するリソースを含むスタック名またはスタック ID です。

Type: String

はい

-u, --url (リソースシグナル送信のみ)

使用する AWS CloudFormation エンドポイントです。

Type: String

いいえ

waitconditionhandle.url (待機条件ハンドルのみ)

関連付けられている WaitCondition に成功または失敗のシグナルを送信するために使用できる署名済み URL です。

Type: String

はい

Amazon Linux の例

よくある使用パターンは、cfn-init と cfn-signal を一緒に使用することです。cfn-signal 呼び出しは、cfn-init への呼び出しから返されるステータスを使用します ($? シェル構造を使用)。アプリケーションのインストールが失敗すると、インスタンスの作成が失敗し、スタックはロールバックされます。Windows 用のスタックは、「AWS CloudFormation の Windows スタックのブートストラップ」を参照してください。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Simple EC2 instance", "Resources": { "MyInstance": { "Type": "AWS::EC2::Instance", "Metadata": { "AWS::CloudFormation::Init": { "config": { "files": { "/tmp/test.txt": { "content": "Hello world!", "mode": "000755", "owner": "root", "group": "root" } } } } }, "Properties": { "ImageId": "ami-a4c7edb2", "InstanceType": "t2.micro", "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -x\n", "# Install the files and packages from the metadata\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource MyInstance ", " --region ", { "Ref": "AWS::Region" }, "\n", "# Signal the status from cfn-init\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref": "AWS::StackName" }, " --resource MyInstance ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }, "CreationPolicy": { "ResourceSignal": { "Timeout": "PT5M" } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: Simple EC2 instance Resources: MyInstance: Type: AWS::EC2::Instance Metadata: 'AWS::CloudFormation::Init': config: files: /tmp/test.txt: content: Hello world! mode: '000755' owner: root group: root Properties: ImageId: ami-a4c7edb2 InstanceType: t2.micro UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -x - | # Install the files and packages from the metadata - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource MyInstance ' - ' --region ' - !Ref 'AWS::Region' - |+ - | # Signal the status from cfn-init - '/opt/aws/bin/cfn-signal -e $? ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource MyInstance ' - ' --region ' - !Ref 'AWS::Region' - |+ CreationPolicy: ResourceSignal: Timeout: PT5M

以下のテンプレートなど、いくつかの AWS CloudFormation サンプルテンプレートは、cfn-signal を使用します。