CloudFormation カスタムリソースの更新リクエスト
テンプレート開発者がテンプレート内のカスタムリソースのプロパティを変更し、スタックを更新すると、CloudFormation は RequestType
を Update
に設定して custom resource provider にリクエストを送信します。カスタムリソースコードは、リクエスト タイプが Update
のときにプロパティが変更されたことを認識しているため、リソースの変更を検出する必要がないということを、これは意味します。
カスタムリソースとその仕組みの概要については、「カスタムリソースを使用してカスタムプロビジョニングロジックを作成する」を参照してください。
リクエスト
更新リクエストには、以下のフィールドが含まれています。
RequestType
-
Update
. RequestId
-
リクエストの一意の ID。
ResponseURL
-
応答 URL は、custom resource provider から AWS CloudFormation への応答を受信する署名済み S3 バケットを識別します。
ResourceType
-
CloudFormation テンプレート内のカスタムリソースに対し、テンプレートのデベロッパーが選択したリソースタイプ。カスタムリソースタイプの名前は、60 文字までの長さで指定できます。また、英数字や記号
_@-
を含めることができます。更新時にタイプを変更することはできません。 LogicalResourceId
-
AWS CloudFormation テンプレートで開発者が選択したカスタムリソースの名前 (論理 ID)。
StackId
-
カスタムリソースを含むスタックを識別する Amazon リソースネーム (ARN)。
PhysicalResourceId
-
custom resource provider によって定義された、プロバイダーで一意となる物理 ID (必須)。
PhysicalResourceId
に返された値は、カスタムリソース更新オペレーションを変更できます。返される値が同じであれば、通常の更新と見なされます。返された値が異なる場合には、AWS CloudFormation は新しい方が更新用のものであると認識し、古いリソースに削除リクエストを送信します。詳細については、「AWS::CloudFormation::CustomResource
」を参照してください。 ResourceProperties
-
更新された CloudFormation テンプレート内のテンプレートデベロッパーによって宣言された、新しいリソースプロパティ値。
OldResourceProperties
-
CloudFormation テンプレート内のテンプレートデベロッパーによって以前に宣言されたリソースプロパティ値。
例
{
"RequestType" : "Update",
"RequestId" : "unique id for this update request",
"ResponseURL" : "pre-signed-url-for-update-response",
"ResourceType" : "Custom::MyCustomResourceType",
"LogicalResourceId" : "name of resource in template",
"StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"ResourceProperties" : {
"key1" : "new-string",
"key2" : [ "new-list" ],
"key3" : { "key4" : "new-map" }
},
"OldResourceProperties" : {
"key1" : "string",
"key2" : [ "list" ],
"key3" : { "key4" : "map" }
}
}
レスポンス
Success (成功)
カスタムリソースプロバイダーがリソースを正常に更新できる場合、CloudFormation は応答でステータスが SUCCESS
に設定されると想定します。
Status
-
SUCCESS
を指定してください。 RequestId
-
リクエストの一意の ID。この応答値は、リクエストから逐語的にコピーする必要があります。
LogicalResourceId
-
AWS CloudFormation テンプレートで開発者が選択したカスタムリソースの名前 (論理 ID)。この応答値は、リクエストから逐語的にコピーする必要があります。
StackId
-
カスタムリソースを含むスタックを識別する Amazon リソースネーム (ARN)。この応答値は、リクエストから逐語的にコピーする必要があります。
PhysicalResourceId
-
この値は、カスタムリソースベンダーに固有の識別子である必要があり、サイズは最大 1 KB までです。値は空でない文字列でなければならず、同じリソースに対するすべての応答で同一である必要があります。
PhysicalResourceId
に返された値は、カスタムリソース更新オペレーションを変更できます。返される値が同じであれば、通常の更新と見なされます。返された値が異なる場合には、AWS CloudFormation は新しい方が更新用のものであると認識し、古いリソースに削除リクエストを送信します。詳細については、「AWS::CloudFormation::CustomResource
」を参照してください。 NoEcho
-
オプション。
Fn::GetAtt
関数を使用して取得したときに、カスタムリソースの出力をマスクするかどうかを示します。true
に設定すると、テンプレートのMetadata
セクションに格納されているものを除き、すべての戻り値がアスタリスク (*****) でマスクされる。AWS CloudFormation は、Metadata
セクションに含まれる情報を変換、変更、または編集しません。デフォルト値はfalse
です。NoEcho
を使用して機密情報をマスクする方法、および動的なパラメータを使用してシークレットを管理する方法の詳細については、「テンプレートに認証情報を埋め込まない」ベストプラクティスを参照してください。 Data
-
オプション。レスポンスで送信するカスタムリソースプロバイダー定義の名前と値のペア。ここで提供されている値には、
Fn::GetAtt
を使用してテンプレートの名前でアクセスできます。重要
名前と値のペアに機密情報が含まれている場合は、
NoEcho
フィールドを使用して、カスタムリソースの出力をマスクします。それ以外の場合は、プロパティ値 (DescribeStackEvents
など) を表示する API を通じて値が表示されます。
例
{
"Status" : "SUCCESS",
"RequestId" : "unique id for this update request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1",
"keyThatCanBeUsedInGetAtt2" : "data for key 2"
}
}
失敗
プロパティの新しいセットでリソースを更新できない場合、CloudFormation は応答で失敗の理由とともにステータスが FAILED
に設定されると想定します。
Status
-
FAILED
を指定してください。 Reason
-
失敗応答の理由を説明します。
RequestId
-
リクエストの一意の ID。この応答値は、リクエストから逐語的にコピーする必要があります。
LogicalResourceId
-
AWS CloudFormation テンプレートで開発者が選択したカスタムリソースの名前 (論理 ID)。この応答値は、リクエストから逐語的にコピーする必要があります。
StackId
-
カスタムリソースを含むスタックを識別する Amazon リソースネーム (ARN)。この応答値は、リクエストから逐語的にコピーする必要があります。
PhysicalResourceId
-
この値は、カスタムリソースベンダーに固有の識別子である必要があり、サイズは最大 1 KB までです。値は空でない文字列でなければならず、同じリソースに対するすべての応答で同一である必要があります。
PhysicalResourceId
に返された値は、カスタムリソース更新オペレーションを変更できます。返される値が同じであれば、通常の更新と見なされます。返された値が異なる場合には、AWS CloudFormation は新しい方が更新用のものであると認識し、古いリソースに削除リクエストを送信します。詳細については、「AWS::CloudFormation::CustomResource
」を参照してください。
例
{
"Status" : "FAILED",
"Reason" : "Required failure reason string",
"RequestId" : "unique id for this update request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id"
}