在對模板內的自訂資源屬性變更時,ROS將發送RequestType已設定為Update的自訂資源請求。因此,自訂資原始碼不必檢測更改,因為它知道其屬性在調用Update後已更改。
請求
更新要求包含以下欄位:
- RequestType
將為Update。
- ResponseURL
預簽名的公網URL。該URL接收custom resource provider到ROS的響應。
- IntranetResponseURL
預簽名的內網URL,ECS中可使用此URL。該URL接收custom resource provider到ROS的響應。
- StackId
包含自訂資源的資源棧的ID 。
- StackName
包含自訂資源的資源棧的名稱。
- ResourceOwnerId
包含自訂資源的資源棧歸屬的阿里雲帳號ID(阿里雲主帳號)。
- CallerId
執行此次資源棧操作的帳號ID(阿里雲主帳號或RAM使用者)。
- RegionId
包含自訂資源的資源棧歸屬的地區。
- RequestId
請求的唯一ID。
- ResourceType
ROS模板中模板開發人員選擇的自訂資源的資源類型。自訂資源類型名稱最長為68個字元,可包含英文字元、數字、底線(_)、at(@)和短劃線(-)。
- LogicalResourceId
ROS模板中template developer選擇的自訂資源名稱(邏輯 ID)。
- PhysicalResourceId
custom resource provider定義的物理 ID,該ID對於該提供者是唯一的。
- ResourceProperties
該欄位包含模板開發人員發送的Properties中Parameters對象的內容。其內容由custom resource provider定義。
- 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-create-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
可選。要在響應中發送的custom resource provider-defined的名稱-值對。您可以使用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)"
}