如果您需要更新资源,但是资源的属性不支持直接修改,您可以替换更新资源。

背景信息

如果您只需要修改资源的属性,保留原有的资源(资源物理ID不变),您可以在资源栈模板中修改参数属性。

如果您需要更新资源,但是资源的属性不支持直接修改,您可以通过替换更新功能删除资源后重新创建资源,此时资源物理ID会发生变化。本文以替换ALIYUN::ECS::VSwitch的属性CidrBlock为例,为您介绍如何替换更新资源。

通过控制台替换更新资源

  1. 登录资源编排控制台
  2. 创建资源栈。
    使用如下模板创建一个包含ALIYUN::ECS::VSwitch资源的资源栈,属性CidrBlock取值为172.16.100.0/24。

    创建资源栈操作方法,请参见创建资源栈

    {
        "ROSTemplateFormatVersion": "2015-09-01",
        "Parameters": {
            "ZoneId": {
                "Type": "String",
                "Default": "cn-hangzhou-i"
            },
            "VSwitchCidrBlock": {
                "Type": "String",
                "Default": "172.16.100.0/24"
            }
        },
        "Resources": {
            "EcsVpc": {
                "Type": "ALIYUN::ECS::VPC",
                "Properties": {
                    "CidrBlock": "172.16.0.0/12",
                    "VpcName": "MyTestVpc"
                }
            },
            "VSwitch": {
                "Type": "ALIYUN::ECS::VSwitch",
                "Properties": {
                    "ZoneId": {
                        "Ref": "ZoneId"
                    },
                    "CidrBlock": {
                        "Ref": "VSwitchCidrBlock"
                    },
                    "VpcId": {
                        "Fn::GetAtt": [
                            "EcsVpc",
                            "VpcId"
                        ]
                    },
                    "VSwitchName": "VSwitch"
                }
            }
        },
        "Outputs": {
        }
    }
  3. 替换更新资源栈。
    1. 在左侧导航栏,单击资源栈
    2. 在页面左上角的地域下拉列表,选择资源栈的所在地域。
    3. 资源栈列表页面,找到需要更新的资源栈,单击右侧操作列中的更新
    4. 配置模板参数页面的参数录入区域,将VSwitchCidrBlock由172.16.100.0/24更新为172.16.200.0/24。
      替换更新-控制台
    5. 单击下一步
    6. 配置资源栈页面,单击启用,开启替换更新功能。
      替换更新
    7. 单击确认修改
      替换更新成功后,VSwitch资源物理ID将发生变化,CidrBlock参数将从172.16.100.0/24替换为172.16.200.0/24。您可以在资源栈详情页单击资源页签,单击新的VSwitch资源ID进入交换机详情页查看资源信息。

通过OpenAPI替换更新资源

  1. 登录OpenAPI Explorer
  2. 调用CreateStack接口创建资源栈。
    1. 在左侧文本框输入CreateStack搜索CreateStack接口。
    2. 选择RegionId,输入StackNameTemplateBody,单击发起调用
      创建资源栈TemplateBody取值如下:
      {
          "ROSTemplateFormatVersion": "2015-09-01",
          "Parameters": {
              "ZoneId": {
                  "Type": "String",
                  "Default": "cn-hangzhou-i"
              },
              "VSwitchCidrBlock": {
                  "Type": "String",
                  "Default": "172.16.100.0/24"
              }
          },
          "Resources": {
              "EcsVpc": {
                  "Type": "ALIYUN::ECS::VPC",
                  "Properties": {
                      "CidrBlock": "172.16.0.0/12",
                      "VpcName": "MyTestVpc"
                  }
              },
              "VSwitch": {
                  "Type": "ALIYUN::ECS::VSwitch",
                  "Properties": {
                      "ZoneId": {
                          "Ref": "ZoneId"
                      },
                      "CidrBlock": {
                          "Ref": "VSwitchCidrBlock"
                      },
                      "VpcId": {
                          "Fn::GetAtt": [
                              "EcsVpc",
                              "VpcId"
                          ]
                      },
                      "VSwitchName": "VSwitch"
                  }
              }
          },
          "Outputs": {
          }
      }
  3. 调用UpdateStack接口替换更新资源栈。
    1. 在左侧文本框输入UpdateStack搜索UpdateStack接口。
    2. 选择RegionId,输入StackIdTemplateBodyReplacementOption,单击发起调用
      更新资源栈参数设置说明如下:
      • RegionId:选择与创建资源栈时相同的地域。
      • StackId:输入创建资源栈后返回的资源栈ID。
      • TemplateBody:以替换VSwitch的CidrBlock参数为例,将172.16.100.0/24更新为172.16.200.0/24。取值如下:
        {
            "ROSTemplateFormatVersion": "2015-09-01",
            "Parameters": {
                "ZoneId": {
                    "Type": "String",
                    "Default": "cn-hangzhou-i"
                },
                "VSwitchCidrBlock": {
                    "Type": "String",
                    "Default": "172.16.200.0/24"
                }
            },
            "Resources": {
                "EcsVpc": {
                    "Type": "ALIYUN::ECS::VPC",
                    "Properties": {
                        "CidrBlock": "172.16.0.0/12",
                        "VpcName": "MyTestVpc"
                    }
                },
                "VSwitch": {
                    "Type": "ALIYUN::ECS::VSwitch",
                    "Properties": {
                        "ZoneId": {
                            "Ref": "ZoneId"
                        },
                        "CidrBlock": {
                            "Ref": "VSwitchCidrBlock"
                        },
                        "VpcId": {
                            "Fn::GetAtt": [
                                "EcsVpc",
                                "VpcId"
                            ]
                        },
                        "VSwitchName": "VSwitch"
                    }
                }
            },
            "Outputs": {
            }
        }
      • ReplacementOption:填写Enabled。表示允许替换更新资源。
UpdateStack接口调用成功后,VSwitch资源物理ID将发生变化,CidrBlock参数将从172.16.100.0/24替换为172.16.200.0/24。您可以调用GetStack接口查看资源信息。查看资源栈