CloudFormation カスタムリソースのリクエストおよびレスポンスのリファレンス
CloudFormation は、カスタムリソースプロバイダーと通信するリクエスト/レスポンスプロトコルを使用してカスタムリソースを管理します。各リクエストにはリクエストタイプ (Create、Update、または Delete) が含まれ、次の高レベルのワークフローに従います。
-
テンプレート開発者は、テンプレート内の
ServiceTokenとServiceTimeoutを使用してカスタムリソースを定義し、スタックオペレーションを開始します。 -
CloudFormation は、JSON リクエストを SNS または Lambda を介してカスタムリソースプロバイダーに送信します。
-
カスタムリソースプロバイダーはリクエストを処理し、タイムアウト期間が終了する前に JSON レスポンスを署名付き Amazon S3 バケット URL に返します。
-
CloudFormation はレスポンスを読み取り、スタックオペレーションを続行します。タイムアウト時間が終了する前に応答を受信しない場合、リクエストは不成功と見なされ、スタック操作は失敗します。
詳細については、「カスタムリソースのしくみ」を参照してください。
このセクションでは、各リクエストタイプの構造、パラメータ、および予想されるレスポンスについて説明します。
注記
レスポンス本文の合計サイズは 4,096 バイトを超えることはできません。
テンプレートのセットアップ
テンプレートでカスタムリソースを定義する場合、テンプレート開発者は次のプロパティで AWS::CloudFormation::CustomResource を使用します。
ServiceToken-
スタックと同じリージョンからの Amazon SNS トピック ARN または Lambda 関数 ARN。
必須: はい
タイプ: 文字列
ServiceTimeout-
カスタムリソースオペレーションがタイムアウトするまでの最大時間 (秒単位)。1~3600 の範囲の値にする必要があります。デフォルト: 3600 秒 (1 時間)。
必須: いいえ
タイプ: 文字列
追加のリソースプロパティがサポートされています。リソースプロパティは、リクエストに ResourceProperties として含まれます。カスタムリソースプロバイダーは、有効なプロパティとそれらの許容値を決定する必要があります。
オブジェクトをリクエストする
レスポンスオブジェクト
カスタムリソースプロバイダーは、レスポンスをすべてのリクエストタイプの署名付き URL に送信します。カスタムリソースプロバイダーがレスポンスを送信しない場合、CloudFormation はオペレーションがタイムアウトするまで待機します。
レスポンスは、次のフィールドを持つ JSON オブジェクトである必要があります。
Status-
SUCCESSまたはFAILEDである必要があります。必須: はい
タイプ: 文字列
RequestId-
リクエストの一意の ID。リクエストに表示されるように、この値を正確にコピーします。
必須: はい
タイプ: 文字列
StackId-
カスタムリソースを含むスタックを識別する Amazon リソースネーム (ARN)。リクエストに表示されるように、この値を正確にコピーします。
必須: はい
タイプ: 文字列
LogicalResourceId-
CloudFormation テンプレートで開発者が選択したカスタムリソースの名前 (論理 ID)。リクエストに表示されるように、この値を正確にコピーします。
必須: はい
タイプ: 文字列
PhysicalResourceId-
この値は、カスタムリソースベンダーに固有の識別子である必要があり、サイズは最大 1 KB までです。値は空でない文字列でなければならず、同じリソースに対するすべての応答で同一である必要があります。
カスタムリソースを更新する場合、
PhysicalResourceIdに返される値は更新動作を決定します。値が同じままの場合、CloudFormation はこれを通常の更新と見なします。値が変わっている場合には、CloudFormation は新しい方が更新用のものであると解釈し、古いリソースに削除リクエストを送信します。詳細については、 を参照してください。AWS::CloudFormation::CustomResource必須: はい
タイプ: 文字列
Reason-
失敗応答の理由を説明します。
StatusがFAILEDの場合は必須です。それ以外の場合はオプションです。必須: 条件に応じて異なります
タイプ: 文字列
NoEcho-
Fn::GetAtt関数を使用して取得したときに、カスタムリソースの出力をマスクするかどうかを示します。trueに設定すると、テンプレートのMetadataセクションに保存されているものを除き、すべての戻り値はアスタリスク (*****) でマスクされます。CloudFormation は、Metadataセクションに含める情報の変換、変更、または編集を行いません。デフォルト値はfalseです。NoEchoを使用して機密情報をマスクする方法、および動的なパラメータを使用してシークレットを管理する方法の詳細については、「テンプレートに認証情報を埋め込まない」ベストプラクティスを参照してください。CreateおよびUpdateレスポンスでのみ使用できます。Deleteレスポンスではサポートされていません。必須: いいえ
型: ブール
Data-
レスポンスで送信するカスタムリソースプロバイダー定義の名前と値のペア。ここで提供されている値には、
Fn::GetAttを使用してテンプレートの名前でアクセスできます。CreateおよびUpdateレスポンスでのみ使用できます。Deleteレスポンスではサポートされていません。重要
名前と値のペアに機密情報が含まれている場合は、
NoEchoフィールドを使用して、カスタムリソースの出力をマスクします。それ以外の場合は、プロパティ値 (DescribeStackEventsなど) を表示する API を通じて値が表示されます。必須: いいえ
タイプ: JSON オブジェクト
成功したレスポンスの例
Create と Update レスポンス
{
"Status": "SUCCESS",
"RequestId": "unique-request-id",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
"LogicalResourceId": "resource-logical-id",
"PhysicalResourceId": "provider-defined-physical-id",
"NoEcho": true,
"Data": {
"key1": "value1",
"key2": "value2"
}
}
Delete 応答
{
"Status": "SUCCESS",
"RequestId": "unique-request-id",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
"LogicalResourceId": "resource-logical-id",
"PhysicalResourceId": "provider-defined-physical-id"
}
失敗したレスポンスの例
{
"Status": "FAILED",
"RequestId": "unique-request-id",
"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id",
"LogicalResourceId": "resource-logical-id",
"PhysicalResourceId": "provider-defined-physical-id",
"Reason": "Required failure reason string"
}