テンプレートのカスタムリソースのプロパティが変更されると、Resource Orchestration Service (ROS) はカスタムリソースプロバイダーにリクエストを送信します。リクエストの RequestType フィールドは Update に設定されます。カスタムリソースコードは、Update が呼び出された後にプロパティが変更されたことがわかっているため、変更を検出する必要はありません。
リクエスト
更新リクエストには、次のフィールドが含まれています。
RequestType
このフィールドは Update に設定されます。
ResponseURL
署名付きのパブリック URL。この URL は、カスタムリソースプロバイダーから ROS へのレスポンスを受信します。
IntranetResponseURL
署名付きの内部 URL。この URL は Elastic Compute Service (ECS) で使用できます。この URL は、カスタムリソースプロバイダーから ROS へのレスポンスを受信します。
StackId
カスタムリソースを含むスタックの ID。
StackName
カスタムリソースを含むスタックの名前。
ResourceOwnerId
カスタムリソースを含むスタックが属する Alibaba Cloud アカウントの ID。
CallerId
この操作を実行するために使用される Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの ID。
RegionId
カスタムリソースを含むスタックのリージョン ID。
RequestId
リクエストの一意の ID。
ResourceType
テンプレート開発者がテンプレート内のカスタムリソースに対して選択したリソースタイプ。カスタムリソースタイプの名前は最大 68 文字で、文字、数字、アンダースコア (_)、アットマーク (@)、ハイフン (-) を使用できます。
LogicalResourceId
テンプレート開発者がテンプレート内のカスタムリソースに指定した名前 (論理 ID)。
PhysicalResourceId
カスタムリソースプロバイダーによって定義された必須の物理 ID。この ID はプロバイダーに対して一意です。
ResourceProperties
このフィールドには、テンプレート開発者によって送信されたリクエストの Properties セクションのパラメーターが含まれています。コンテンツはカスタムリソースプロバイダーによって定義されます。
OldResourceProperties
このフィールドには、テンプレート開発者によって定義された Properties セクションの元の パラメーターが含まれています。
例:
{
"RequestType" : "Update",
"RequestId" : "unique id for this update request", // この更新リクエストの一意のID
"ResponseURL" : "pre-signed-url-for-update-response", // 更新レスポンス用の署名付きURL
"IntranetResponseURL" : "pre-signed-intranet-url-for-create-response", // 作成レスポンス用の署名付きイントラネットURL
"ResourceType" : "Custom::MyCustomResourceType", // カスタムリソースタイプ
"LogicalResourceId" : "name of resource in template", // テンプレート内のリソース名
"PhysicalResourceId" : "custom resource provider-defined physical id", // カスタムリソースプロバイダー定義の物理ID
"StackId" : "stack id", // スタックID
"StackName" : "stack name", // スタック名
"ResourceOwnerId": "resource owner id", // リソース所有者ID
"CallerId": "caller id", // 呼び出し元ID
"RegionId": "region id", // リージョンID
"ResourceProperties" : {
"key1" : "new-string", // 新しい文字列
"key2" : [ "new-list" ], // 新しいリスト
"key3" : { "key4" : "new-map" } // 新しいマップ
},
"OldResourceProperties" : {
"key1" : "string", // 文字列
"key2" : [ "list" ], // リスト
"key3" : { "key4" : "map" } // マップ
}
} レスポンス
成功
更新リクエストが送信されると、カスタムリソースプロバイダーは次のフィールドを含むレスポンスを ROS に送信する必要があります。
Status
このフィールドには SUCCESS のみ返されます。
RequestId
リクエストの一意の ID。このレスポンス値はリクエストからコピーする必要があります。
LogicalResourceId
テンプレート開発者がテンプレート内のカスタムリソースに指定した名前 (論理 ID)。このレスポンス値はリクエストからコピーする必要があります。
StackId
カスタムリソースを含むスタックの ID。このレスポンス値はリクエストからコピーする必要があります。
PhysicalResourceId
このフィールドの値は変更できません。このレスポンス値はリクエストからコピーする必要があります。
Data
オプション。レスポンスで送信される名前と値のペア。Fn::GetAtt 関数を使用して、テンプレート内の名前でここで提供される値にアクセスできます。
例:
{
"Status" : "SUCCESS", // 成功
"RequestId" : "unique id for this update request (copied from request)", // この更新リクエストの一意のID (リクエストからコピー)
"LogicalResourceId" : "name of resource in template (copied from request)", // テンプレート内のリソース名 (リクエストからコピー)
"StackId" : "stack id (copied from request)", // スタックID (リクエストからコピー)
"PhysicalResourceId" : "custom resource provider-defined physical id", // カスタムリソースプロバイダー定義の物理ID
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1", // key1のデータ (GetAttで使用可能)
"keyThatCanBeUsedInGetAtt2" : "data for key 2" // key2のデータ (GetAttで使用可能)
}
}失敗
更新リクエストが失敗した場合、カスタムリソースプロバイダーは次のフィールドを含むレスポンスを ROS に送信する必要があります。
Status
このフィールドには FAILED のみ返されます。
Reason
レスポンスが失敗した理由。
RequestId
リクエストの一意の ID。このレスポンス値はリクエストからコピーする必要があります。
LogicalResourceId
テンプレート開発者がテンプレート内のカスタムリソースに指定した名前 (論理 ID)。このレスポンス値はリクエストからコピーする必要があります。
StackId
カスタムリソースを含むスタックの ID。このレスポンス値はリクエストからコピーする必要があります。
例:
{
"Status" : "FAILED", // 失敗
"Reason" : "Required failure reason string", // 失敗理由の文字列 (必須)
"RequestId" : "unique id for this update request (copied from request)", // この更新リクエストの一意のID (リクエストからコピー)
"LogicalResourceId" : "name of resource in template (copied from request)", // テンプレート内のリソース名 (リクエストからコピー)
"StackId" : "stack id (copied from request)" // スタックID (リクエストからコピー)
}