在对模板内的自定义资源属性进行任何更改时,发送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(主账号或子账号)。

  • RegionId

    包含自定义资源的资源栈归属的地域。

  • RequestId

    请求的唯一 ID。

  • ResourceType

    阿里云ROS模板中模板开发人员选择的自定义资源的资源类型。自定义资源类型名称的长度最多为68个字符,并且可包含字母数字字符和以下字符:_@-。

  • LogicalResourceId

    阿里云ROS模板中template developer选择的自定义资源名称(逻辑 ID)。

  • PhysicalResourceId

    custom resource provider定义的必需物理 ID,该ID对于该提供程序是唯一的。

  • ResourceProperties

    该字段包含 template developer 发送的 Properties中Parameters 对象的内容。其内容由 custom resource provider 定义。

  • OldResourceProperties

    该字段包含 template developer 以前定义的 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模板中template developer选择的自定义资源名称(逻辑 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模板中template developer选择的自定义资源名称(逻辑 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)"
}