全部产品
Search
文档中心

资源编排:多账号多地域创建ECS实例

更新时间:Sep 20, 2026

通过ROS的资源栈组,您可以在多个阿里云账号下的多地域创建相同配置的ECS实例。

方案概述

本方案介绍如何使用ROS资源栈组(StackGroup)在多个阿里云账号的多个地域同时创建相同配置的ECS实例及其依赖的网络资源(VPC、交换机、安全组)。适用于集团企业多账号统一部署、全球化业务多地域扩展、多环境(开发/测试/生产)标准化基础设施等场景。

前提条件

根据选择的权限模式,需要完成不同的准备工作:

服务管理权限模式(推荐多账号场景):

  1. 阿里云账号:拥有阿里云账号,且已开通ROS和ECS产品。

  2. 资源目录:已创建资源目录(Resource Directory),目标账号已加入资源目录。

  3. 委派管理员账号:已设置ROS的委派管理员账号。详情请参见设置委派管理员账号。

自助管理权限模式:

  1. 阿里云账号:拥有阿里云账号,且已开通ROS和ECS产品。

  2. 管理员账号和目标账号:已创建管理员账号和多个目标账号。

  3. RAM角色和信任关系:在管理员账号和每个目标账号中手动创建RAM角色,建立双向信任关系。详情请参见授予自助管理权限。

操作教程

步骤一:准备ROS模板

以下模板通过DATASOURCE自动查询推荐的实例规格,在目标地域创建完整的ECS环境(VPC + vSwitch + 安全组 + ECS 实例):

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: 自动选择实例规格,创建一台ECS实例及网络资源
  en: Creates one ECS instance with an auto-selected instance type

Resources:
  # 数据源:查询当前地域推荐的实例规格(2核8G + ESSD云盘)
  DS-InstanceTypes:
    Type: DATASOURCE::ECS::RecommendInstanceTypes
    Properties:
      Cores: 2
      Memory: 8
      SystemDiskCategory: cloud_essd

  # 创建VPC
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 192.168.0.0/16

  # 创建交换机(可用区由DATASOURCE自动确定)
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.0.0/24
      ZoneId:
        Fn::Jq:
          - First
          - .[].ZoneId
          - Fn::GetAtt:
              - DS-InstanceTypes
              - InstanceTypes

  # 创建安全组
  SecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: Vpc

  # 创建ECS实例(实例规格由DATASOURCE自动确定)
  Instance:
    Type: ALIYUN::ECS::Instance
    Properties:
      IoOptimized: optimized
      VpcId:
        Ref: Vpc
      SecurityGroupId:
        Ref: SecurityGroup
      VSwitchId:
        Ref: VSwitch
      ImageId: centos
      InstanceType:
        Fn::Jq:
          - First
          - .[].InstanceType
          - Fn::GetAtt:
              - DS-InstanceTypes
              - InstanceTypes
      SystemDiskCategory: cloud_essd

Outputs:
  VpcId:
    Label:
      zh-cn: VPC实例ID
    Value:
      Fn::GetAtt:
        - Vpc
        - VpcId
  InstanceId:
    Label:
      zh-cn: ECS实例ID
    Value:
      Fn::GetAtt:
        - Instance
        - InstanceId

关键语法解析

  1. DATASOURCE数据源资源

    DS-InstanceTypes:
      Type: DATASOURCE::ECS::RecommendInstanceTypes    # DATASOURCE:: 前缀表示数据源
      Properties:
        Cores: 2                    # vCPU核数
        Memory: 8                   # 内存(GB)
        SystemDiskCategory: cloud_essd  # 系统盘类型

    DATASOURCE类型的资源不创建实际云资源,而是查询已有资源或推荐配置。返回结果通过Fn::GetAtt获取。本例中返回的InstanceTypes属性是一个数组:

    [
      {"InstanceType": "ecs.g7.large", "ZoneId": "cn-hangzhou-h", ...},
      {"InstanceType": "ecs.g6.large", "ZoneId": "cn-hangzhou-i", ...}
    ]
  2. Fn::Jq数据提取函数

    ZoneId:
      Fn::Jq:
        - First           # 模式:First=取第一个结果,All=取所有结果
        - .[].ZoneId      # JQ表达式:遍历数组,提取每个元素的ZoneId
        - Fn::GetAtt:     # 数据源:DATASOURCE查询结果
            - DS-InstanceTypes
            - InstanceTypes

    Fn::Jq使用JQ语法从复杂JSON结构中提取数据。First模式取第一个匹配结果作为字符串返回。

    Fn::Jq参数

    含义

    本例中的值

    第1个参数

    结果模式

    First(取第一个匹配值)

    第2个参数

    JQ过滤表达式

    .[].ZoneId(提取所有元素的ZoneId)

    第3个参数

    输入数据

    DATASOURCE返回的InstanceTypes数组

步骤二:创建资源栈组

  1. 登录资源编排控制台。

  2. 在左侧导航栏,单击资源栈组。

  3. 在顶部菜单栏选择地域(此地域为资源栈组的管理地域,不影响实际部署地域)。

  4. 单击创建资源栈组。

步骤三:配置资源栈组

  1. 在配置资源栈组页面,设置权限。

  2. 若选择自助管理权限,需按照页面要求配置管理员角色和执行角色;若选择服务管理权限,资源栈组将会自动创建所需角色,无需进行配置。完成配置后,请单击下一步。

步骤四:配置模板和参数

  1. 在选择模板页面,点击选择已有模板,模板录入方式为输入模板,粘贴步骤一的YAML模板,然后单击下一步。

  2. 在配置参数页面,输入资源栈组名称和资源栈组描述,然后单击下一步。

    说明

    本模板无需配置额外参数(实例规格和可用区由DATASOURCE自动确定),直接单击下一步即可。

步骤五:设置部署选项

  1. 在设置部署选项页面,配置项会根据步骤三:配置资源栈组时选择的权限模式发生变化。

    使用服务管理权限时:

    配置项

    操作

    部署目标

    在资源目录中选择多个成员账号或组织单元。

    自动部署

    启用后,新增账号时,自动部署资源栈到该账号;删除账号时,具体行为由账号删除行为决定。禁用后则不再自动处理。

    账号删除行为

    自动部署启用时生效,可设置账号从资源夹中删除时,是否删除该账号下的资源栈。

    使用自助管理权限时:

    配置项

    操作

    部署位置

    选择在账号中部署资源栈。

    账号

    输入多个目标账号ID,以半角逗号分隔。

  2. 配置地域与部署选项。

    参数

    说明

    建议值

    地域

    选择要部署ECS实例的目标地域(最多20个)。

    根据业务需要选择。

    最大并发账号数

    同时部署的账号数量

    默认1(可提高以加速部署)

    容错

    允许的最大失败数,超过后停止

    根据部署规模设置

    地域并发

    地域间是否并行部署

    并行(加速部署)

    说明

    部署矩阵示例(3个账号 × 4个地域 = 12个资源栈实例):

                      华东1(杭州)  华北2(北京)  华南1(深圳)  中国香港
    账号A(12345…)    实例1         实例2         实例3         实例4
    账号B(67890…)    实例5         实例6         实例7         实例8
    账号C(11111…)    实例9         实例10        实例11        实例12

    每个实例包含:VPC + VSwitch + SecurityGroup + ECS Instance(共4个资源)

  3. 单击下一步,在检查并确认页面核对信息,然后单击创建资源栈组。

步骤六:查看部署结果

  1. 在左侧导航栏,单击资源栈组,然后单击目标资源栈组名称。

  2. 单击实例页签,按账号和地域查看资源栈实例。

    列

    说明

    资源栈实例所属账号

    资源栈实例所属的目标账号。

    资源栈实例地域

    资源栈实例所在的地域。

    资源栈ID

    各实例的独立资源栈标识。

    实例状态

    最新:资源栈实例是最新的,即该实例没有正在进行中的或者失败的操作。

    已过期:资源栈实例不是最新的,即该实例最新一次的操作未完成或失败。例如:更新资源栈组及资源栈实例时,更新中的资源栈实例状态为已过期。创建或更新资源栈实例时,角色扮演失败,创建或更新资源栈未执行,资源栈实例状态为已过期。创建或更新资源栈实例时,角色扮演成功,创建或更新资源栈失败,资源栈实例状态为已过期。

  3. 单击某个资源栈ID,在资源页签查看该实例创建的所有资源(VPC、VSwitch、SecurityGroup、Instance)。

  4. 当所有实例的资源状态为创建成功时,表示多账号多地域ECS部署完成。

常见问题

DATASOURCE资源会产生费用吗?

不会。DATASOURCE类型的资源只执行查询操作,不创建实际云资源,不产生任何费用。它类似于API查询调用,在资源栈创建过程中自动执行。

如果某个地域没有满足条件的实例规格怎么办?

DATASOURCE查询返回空结果时,后续依赖该结果的资源(VSwitch和Instance)会创建失败。该地域的资源栈实例状态变为失败,但不影响其他地域的部署。

解决方法:

  • 调整DATASOURCE的查询条件(如降低Cores和Memory要求)

  • 在部署选项中排除不支持的地域

多个地域的ECS实例使用相同的私网IP(192.168.0.1)会冲突吗?

不会冲突。每个地域/账号的资源栈实例创建的是独立的VPC,私网IP在各自的VPC内有效。不同VPC之间的私网IP互相隔离,即使使用相同的网段和IP地址也不会冲突。

可以修改模板中的ECS配置(如vCPU核数、内存大小)吗?

可以。修改DATASOURCE中的Cores和Memory属性即可。例如需要4核16G的实例:

DS-InstanceTypes:
  Type: DATASOURCE::ECS::RecommendInstanceTypes
  Properties:
    Cores: 4
    Memory: 16
    SystemDiskCategory: cloud_essd

DATASOURCE会自动查询各地域满足新条件的推荐规格,无需手动指定实例规格名称。

想要了解更多资源部署问题,可以查询常见问题。