テンプレート内のカスタムリソースのプロパティを変更すると、Resource Orchestration Service (ROS) は RequestType を Update に設定したカスタムリソースリクエストを送信します。Update 呼び出し自体がプロパティの変更を示しているため、カスタムリソースコードで変更を検出する必要はありません。
リクエスト
更新リクエストには、次のフィールドが含まれます。
- RequestType
Updateに設定されます。 - ResponseURL
カスタムリソースプロバイダーが ROS に応答を送信する際に使用する、事前署名付きパブリックネットワーク URL。
- IntranetResponseURL
カスタムリソースプロバイダーが Elastic Compute Service (ECS) 内で ROS に応答を送信する際に使用する、事前署名付き内部ネットワーク URL。
- StackId
カスタムリソースを含むスタックの ID。
- StackName
カスタムリソースを含むスタックの名前。
- ResourceOwnerId
カスタムリソースを含むスタックを所有する Alibaba Cloud アカウントの ID。
- CallerId
スタック操作を実行するアカウントの ID。Alibaba Cloud アカウントまたは RAM ユーザーのいずれかです。
- RegionId
カスタムリソースを含むスタックのリージョン。
- RequestId
リクエストの一意の ID。
- ResourceType
ROS テンプレート内でテンプレート開発者が指定した、カスタムリソースのリソースタイプ。リソースタイプ名は最大 68 文字で、英字、数字、アンダースコア (_)、アットマーク (@)、ハイフン (-) を含めることができます。
- LogicalResourceId
ROS テンプレート内でテンプレート開発者が指定した、カスタムリソースの名前 (論理 ID)。
- PhysicalResourceId
カスタムリソースプロバイダーが定義した物理 ID。この ID はプロバイダーに対して一意です。
- ResourceProperties
テンプレート開発者が指定した、
Properties内のParametersオブジェクトの内容。構造はカスタムリソースプロバイダーが定義します。 - OldResourceProperties
以前のリソース構成における、
Properties内のParametersオブジェクトの内容。
例
{
"RequestType" : "Update",
"RequestId" : "unique id for this update request",
"ResponseURL" : "pre-signed-url-for-update-response",
"IntranetResponseURL" : "pre-signed-intranet-url-for-update-response",
"ResourceType" : "Custom::MyCustomResourceType",
"LogicalResourceId" : "name of resource in template",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"StackId" : "stack id",
"StackName" : "stack name",
"ResourceOwnerId": "resource owner id",
"CallerId": "caller id",
"RegionId": "region 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
ROS テンプレート内でテンプレート開発者が指定した、カスタムリソースの名前 (論理 ID)。リクエストからこの値をコピーしてください。
- StackId
カスタムリソースを含むスタックの ID。リクエストからこの値をコピーしてください。
- PhysicalResourceId
この値は不変です。リクエストからこの値をコピーしてください。
- Data
オプション。カスタムリソースプロバイダーが定義し、応答で返される名前と値のペア。テンプレート内で
Fn::GetAtt関数を使用して、これらの値に名前でアクセスできます。
例
{
"Status" : "SUCCESS",
"RequestId" : "unique id for this update request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "stack id (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1",
"keyThatCanBeUsedInGetAtt2" : "data for key 2"
}
}
失敗
更新リクエストが失敗した場合は、次のフィールドを含む応答を ROS に送信する必要があります。
- Status
FAILEDである必要があります。 - Reason
失敗の理由の説明。
- RequestId
リクエストの一意の ID。リクエストからこの値をコピーしてください。
- LogicalResourceId
ROS テンプレート内でテンプレート開発者が指定した、カスタムリソースの名前 (論理 ID)。リクエストからこの値をコピーしてください。
- StackId
カスタムリソースを含むスタックの ID。リクエストからこの値をコピーしてください。
例
{
"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" : "stack id (copied from request)"
}