All Products
Search
Document Center

Resource Orchestration Service:ALIYUN::ROS::Stack

Last Updated:Jun 26, 2025

ALIYUN::ROS::Stack digunakan untuk membuat tumpukan bersarang dengan kedalaman hingga lima tingkat.

Tumpukan bersarang dapat mencakup tumpukan bersarang lainnya, membentuk hierarki tumpukan. Tumpukan akar adalah tumpukan induk tempat semua tumpukan bersarang bernaung. Template dari tumpukan akar disebut template tingkat atas. Anda dapat menggunakan ALIYUN::ROS::Stack untuk menumpukkan sebuah tumpukan sebagai sumber daya dalam template tingkat atas.

Dalam template tumpukan bersarang, output dari satu tumpukan dapat digunakan sebagai input ke tumpukan lain. Untuk mendapatkan output dari tumpukan bersarang, gunakan fungsi Fn::GetAtt dan konfigurasikan nama tumpukan bersarang serta nama output dalam format Outputs.NestedStackOutputName. Untuk informasi lebih lanjut, lihat Gunakan tumpukan bersarang.

Sintaksis

{
  "Type": "ALIYUN::ROS::Stack",
  "Properties": {
    "TemplateURL": String,
    "TemplateBody": String,
    "TemplateId": String,
    "TemplateVersion": String,
    "TimeoutMins": Number,
    "Parameters": Map,
    "ResourceGroupId": String,
    "Tags": List
  }
}

Properti

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Batasan

TemplateURL

String

Tidak

Ya

URL file yang berisi badan template.

File yang berisi badan template bisa mencapai panjang maksimum 524.288 byte. URL bisa mencapai panjang maksimum 1.024 byte.

URL harus menunjuk ke template yang terletak di server web HTTP atau HTTPS atau di Bucket Object Storage Service (OSS), seperti oss://ros/template/demo atau oss://ros/template/demo?RegionId=cn-hangzhou.

Jika Anda tidak menentukan ID wilayah bucket OSS, ID wilayah tumpukan akan digunakan.

Anda harus menentukan salah satu properti TemplateURL, TemplateBody, dan TemplateId. Jika Anda menentukan semua properti di atas, TemplateBody memiliki prioritas tertinggi.

TemplateBody

Map

Tidak

Ya

Konten template yang digunakan untuk memfasilitasi pengiriman template.

Konten ini adalah data mentah. Fungsi dalam konten template hanya berlaku untuk template anak.

Anda harus menentukan salah satu properti TemplateURL, TemplateBody, dan TemplateId. Jika Anda menentukan semua properti di atas, TemplateBody memiliki prioritas tertinggi.

TemplateId

String

Tidak

Ya

ID template.

Anda harus menentukan salah satu properti TemplateURL, TemplateBody, dan TemplateId. Jika Anda menentukan semua properti di atas, TemplateBody memiliki prioritas tertinggi.

TemplateVersion

String

Tidak

Ya

Nama versi template.

Tidak ada.

TimeoutMins

Number

Tidak

Ya

Periode timeout untuk membuat atau memperbarui tumpukan induk.

Satuan: menit.

Nilai default: 60.

Parameters

Map

Tidak

Ya

Sekumpulan pasangan kunci-nilai yang mewakili parameter yang diteruskan ke Resource Orchestration Service (ROS) saat tumpukan bersarang dibuat.

Setiap kunci dan nilai dalam properti ini sesuai dengan nama parameter dan nilai parameter yang didefinisikan dalam template tumpukan bersarang. Properti ini harus ditentukan ketika tumpukan bersarang memerlukan parameter input.

ResourceGroupId

String

Tidak

Tidak

ID grup sumber daya.

Tidak ada.

Tags

List

Tidak

Ya

Tag.

Anda dapat menentukan hingga 20 tag. Untuk informasi lebih lanjut, lihat Properti Tag.

Sintaksis Tag

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]

Properti Tag

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Batasan

Key

String

Ya

Tidak

Kunci tag.

Kunci tag bisa mencapai panjang maksimum 128 karakter. Tidak boleh dimulai dengan aliyun atau acs: dan tidak boleh mengandung http:// atau https://.

Value

String

Tidak

Tidak

Nilai tag.

Nilai tag bisa mencapai panjang maksimum 128 karakter. Tidak boleh dimulai dengan aliyun atau acs: dan tidak boleh mengandung http:// atau https://.

Nilai Pengembalian

Fn::GetAtt

Gunakan kode berikut untuk mendapatkan output dari tumpukan bersarang:

{
  "Fn::GetAtt": [
    "<nested_stack>",
    "Outputs.<nested_stack_output_name>"
  ]
}

Jika Anda menggunakan Ref untuk mereferensikan sumber daya dari tumpukan bersarang, Nama Sumber Daya Cloud Alibaba (ARN) dari tumpukan bersarang akan dikembalikan. Contoh: arn:acs:ros::cn-hangzhou:12345****:stacks/test-nested-stack-Demo-jzkyq7mn****/e71c1e04-1a57-46fc-b9a4-cf7ce0d3****.

Contoh

Kode sampel berikut memberikan contoh YAML dan JSON untuk membuat tumpukan anak. Dalam tumpukan anak, virtual private cloud (VPC), vSwitch, dan kelompok keamanan dibuat. Template tumpukan anak disimpan di direktori oss://ros/template/vpc.txt.

  • Format YAML

    ROSTemplateFormatVersion: '2015-09-01'
    Description: Satu VPC, vSwitch, kelompok keamanan.
    Parameters:
      ZoneId:
        Type: String
        Description: Zona yang tersedia
      SecurityGroupName:
        Type: String
        Description: Nama kelompok keamanan
        Default: my-sg-name
      VpcName:
        Type: String
        Description: Nama VPC
        MinLength: 2
        MaxLength: 128
        ConstraintDescription: '[2, 128] huruf Inggris atau Cina'
        Default: my-vpc-name
      VpcCidrBlock:
        Type: String
        AllowedValues:
          - 192.168.0.0/16
          - 172.16.0.0/12
          - 10.0.0.0/8
        Default: 10.0.0.0/8
      VSwitchCidrBlock:
        Type: String
        Description: Subnet vSwitch yang harus berada dalam VPC
        Default: 10.0.10.0/24
      UpdateVersion:
        Type: Number
        Default: 0
    Resources:
      Vpc:
        Type: ALIYUN::ECS::VPC
        Properties:
          CidrBlock:
            Ref: VpcCidrBlock
          VpcName:
            Ref: VpcName
      VSwitch:
        Type: ALIYUN::ECS::VSwitch
        Properties:
          CidrBlock:
            Ref: VSwitchCidrBlock
          ZoneId:
            Ref: ZoneId
          VpcId:
            Fn::GetAtt:
              - Vpc
              - VpcId
      SecurityGroup:
        Type: ALIYUN::ECS::SecurityGroup
        Properties:
          SecurityGroupName:
            Ref: SecurityGroupName
          VpcId:
            Ref: Vpc
      WaitConditionHandle:
        Type: ALIYUN::ROS::WaitConditionHandle
        Properties:
          UpdateVersion:
            Ref: UpdateVersion
    Outputs:
      SecurityGroupId:
        Value:
          Fn::GetAtt:
            - SecurityGroup
            - SecurityGroupId
      VpcId:
        Value:
          Fn::GetAtt:
            - Vpc
            - VpcId
      VSwitchId:
        Value:
          Fn::GetAtt:
            - VSwitch
            - VSwitchId
    
  • Format JSON

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Description": "Satu VPC, vSwitch, kelompok keamanan.",
      "Parameters": {
        "ZoneId": {
          "Type": "String",
          "Description": "Zona yang tersedia"
        },
        "SecurityGroupName": {
          "Type": "String",
          "Description": "Nama kelompok keamanan",
          "Default": "my-sg-name"
        },
        "VpcName": {
          "Type": "String",
          "Description": "Nama VPC",
          "MinLength": 2,
          "MaxLength": 128,
          "ConstraintDescription": "[2, 128] huruf Inggris atau Cina",
          "Default": "my-vpc-name"
        },
        "VpcCidrBlock": {
          "Type": "String",
          "AllowedValues": [
            "192.168.0.0/16",
            "172.16.0.0/12",
            "10.0.0.0/8"
          ],
          "Default": "10.0.0.0/8"
        },
        "VSwitchCidrBlock": {
          "Type": "String",
          "Description": "Subnet vSwitch yang harus berada dalam VPC",
          "Default": "10.0.10.0/24"
        },
        "UpdateVersion": {
          "Type": "Number",
          "Default": 0
        }
      },
      "Resources": {
        "Vpc": {
          "Type": "ALIYUN::ECS::VPC",
          "Properties": {
            "CidrBlock": {
              "Ref": "VpcCidrBlock"
            },
            "VpcName": {
              "Ref": "VpcName"
            }
          }
        },
        "VSwitch": {
          "Type": "ALIYUN::ECS::VSwitch",
          "Properties": {
            "CidrBlock": {
              "Ref": "VSwitchCidrBlock"
            },
            "ZoneId": {
              "Ref": "ZoneId"
            },
            "VpcId": {
              "Fn::GetAtt": [
                "Vpc",
                "VpcId"
              ]
            }
          }
        },
        "SecurityGroup": {
          "Type": "ALIYUN::ECS::SecurityGroup",
          "Properties": {
            "SecurityGroupName": {
              "Ref": "SecurityGroupName"
            },
            "VpcId": {
              "Ref": "Vpc"
            }
          }
        },
        "WaitConditionHandle": {
          "Type": "ALIYUN::ROS::WaitConditionHandle",
          "Properties": {
            "UpdateVersion": {
              "Ref": "UpdateVersion"
            }
          }
        }
      },
      "Outputs": {
        "SecurityGroupId": {
          "Value": {
            "Fn::GetAtt": [
              "SecurityGroup",
              "SecurityGroupId"
            ]
          }
        },
        "VpcId": {
          "Value": {
            "Fn::GetAtt": [
              "Vpc",
              "VpcId"
            ]
          }
        },
        "VSwitchId": {
          "Value": {
            "Fn::GetAtt": [
              "VSwitch",
              "VSwitchId"
            ]
          }
        }
      }
    }

Kode sampel berikut memberikan contoh YAML dan JSON untuk membuat tumpukan induk:

  • Format YAML

    ROSTemplateFormatVersion: '2015-09-01'
    Description: Satu Instance ECS.
    Parameters:
      ImageId:
        Default: centos_7
        Type: String
        Description: ID Gambar, mewakili sumber daya gambar untuk memulai instance ECS
      InstanceType:
        Type: String
        Description: Jenis instance ECS,
        Default: ecs.xn4.small
      ZoneId:
        Type: String
        Description: 'Zona yang tersedia '
      InstanceChargeType:
        Type: String
        AllowedValues:
          - PrePaid
          - PostPaid
        Default: PostPaid
        Description: Jenis biaya instance
      SecurityGroupName:
        Type: String
        Description: Nama kelompok keamanan
        Default: my-sg-name
      NetworkInterfaceName:
        Type: String
        Description: Nama antarmuka jaringan
        Default: my-eni-name
      VpcName:
        Type: String
        Description: Nama VPC
        MinLength: 2
        MaxLength: 128
        ConstraintDescription: '[2, 128] huruf Inggris atau Cina'
        Default: my-vpc-name
      IoOptimized:
        AllowedValues:
          - none
          - optimized
        Description: IO dioptimalkan, dioptimalkan untuk jenis instance yang dioptimalkan IO
        Type: String
        Default: optimized
      SystemDiskCategory:
        AllowedValues:
          - cloud
          - cloud_efficiency
          - cloud_ssd
        Description: 'Kategori disk sistem: rata-rata cloud disk(cloud), efisien cloud disk(cloud_efficiency) atau SSD cloud disk(cloud_ssd)'
        Type: String
        Default: cloud_ssd
      VpcCidrBlock:
        Type: String
        AllowedValues:
          - 192.168.0.0/16
          - 172.16.0.0/12
          - 10.0.0.0/8
        Default: 10.0.0.0/8
      VSwitchCidrBlock:
        Type: String
        Description: Subnet vSwitch yang harus berada dalam VPC
        Default: 10.0.10.0/24
      UpdateVersion:
        Type: Number
        Default: 0
    Resources:
      NetworkStack:
        Type: ALIYUN::ROS::Stack
        Properties:
          TemplateURL: oss://ros/template/vpc.txt
          TimeoutMins: 5
          Parameters:
            ZoneId:
              Ref: ZoneId
            SecurityGroupName:
              Ref: SecurityGroupName
            VpcName:
              Ref: VpcName
            VpcCidrBlock:
              Ref: VpcCidrBlock
            VSwitchCidrBlock:
              Ref: VSwitchCidrBlock
            UpdateVersion:
              Ref: UpdateVersion
      WebServer:
        Type: ALIYUN::ECS::Instance
        Properties:
          ImageId:
            Ref: ImageId
          InstanceType:
            Ref: InstanceType
          InstanceChargeType:
            Ref: InstanceChargeType
          SecurityGroupId:
            Fn::GetAtt:
              - NetworkStack
              - Outputs.SecurityGroupId
          VpcId:
            Fn::GetAtt:
              - NetworkStack
              - Outputs.VpcId
          VSwitchId:
            Fn::GetAtt:
              - NetworkStack
              - Outputs.VSwitchId
          IoOptimized:
            Ref: IoOptimized
          ZoneId:
            Ref: ZoneId
          SystemDisk_Category:
            Ref: SystemDiskCategory
          DiskMappings:
            - Category: cloud_ssd
              Size: 20
    Outputs:
      InstanceId:
        Value:
          Fn::GetAtt:
            - WebServer
            - InstanceId
      PublicIp:
        Value:
          Fn::GetAtt:
            - WebServer
            - PublicIp
      SecurityGroupId:
        Value:
          Fn::GetAtt:
            - NetworkStack
            - Outputs.SecurityGroupId
      VpcId:
        Value:
          Fn::GetAtt:
            - NetworkStack
            - Outputs.VpcId
      VSwitchId:
        Value:
          Fn::GetAtt:
            - NetworkStack
            - Outputs.VSwitchId
      NetworkStackArn:
        Value:
          Ref: NetworkStack
    
  • Format JSON

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Description": "Satu Instance ECS.",
      "Parameters": {
        "ImageId": {
          "Default": "centos_7",
          "Type": "String",
          "Description": "ID Gambar, mewakili sumber daya gambar untuk memulai instance ECS"
        },
        "InstanceType": {
          "Type": "String",
          "Description": "Jenis instance ECS,",
          "Default": "ecs.xn4.small"
        },
        "ZoneId": {
          "Type": "String",
          "Description": "Zona yang tersedia "
        },
        "InstanceChargeType": {
          "Type": "String",
          "AllowedValues": [
            "PrePaid",
            "PostPaid"
          ],
          "Default": "PostPaid",
          "Description": "Jenis biaya instance"
        },
        "SecurityGroupName": {
          "Type": "String",
          "Description": "Nama kelompok keamanan",
          "Default": "my-sg-name"
        },
        "NetworkInterfaceName": {
          "Type": "String",
          "Description": "Nama antarmuka jaringan",
          "Default": "my-eni-name"
        },
        "VpcName": {
          "Type": "String",
          "Description": "Nama VPC",
          "MinLength": 2,
          "MaxLength": 128,
          "ConstraintDescription": "[2, 128] huruf Inggris atau Cina",
          "Default": "my-vpc-name"
        },
        "IoOptimized": {
          "AllowedValues": [
            "none",
            "optimized"
          ],
          "Description": "IO dioptimalkan, dioptimalkan untuk jenis instance yang dioptimalkan IO",
          "Type": "String",
          "Default": "optimized"
        },
        "SystemDiskCategory": {
          "AllowedValues": [
            "cloud",
            "cloud_efficiency",
            "cloud_ssd"
          ],
          "Description": "Kategori disk sistem: rata-rata cloud disk(cloud), efisien cloud disk(cloud_efficiency) atau SSD cloud disk(cloud_ssd)",
          "Type": "String",
          "Default": "cloud_ssd"
        },
        "VpcCidrBlock": {
          "Type": "String",
          "AllowedValues": [
            "192.168.0.0/16",
            "172.16.0.0/12",
            "10.0.0.0/8"
          ],
          "Default": "10.0.0.0/8"
        },
        "VSwitchCidrBlock": {
          "Type": "String",
          "Description": "Subnet vSwitch yang harus berada dalam VPC",
          "Default": "10.0.10.0/24"
        },
        "UpdateVersion": {
          "Type": "Number",
          "Default": 0
        }
      },
      "Resources": {
        "NetworkStack": {
          "Type": "ALIYUN::ROS::Stack",
          "Properties": {
            "TemplateURL": "oss://ros/template/vpc.txt",
            "TimeoutMins": 5,
            "Parameters": {
              "ZoneId": {
                "Ref": "ZoneId"
              },
              "SecurityGroupName": {
                "Ref": "SecurityGroupName"
              },
              "VpcName": {
                "Ref": "VpcName"
              },
              "VpcCidrBlock": {
                "Ref": "VpcCidrBlock"
              },
              "VSwitchCidrBlock": {
                "Ref": "VSwitchCidrBlock"
              },
              "UpdateVersion": {
                "Ref": "UpdateVersion"
              }
            }
          }
        },
        "WebServer": {
          "Type": "ALIYUN::ECS::Instance",
          "Properties": {
            "ImageId": {
              "Ref": "ImageId"
            },
            "InstanceType": {
              "Ref": "InstanceType"
            },
            "InstanceChargeType": {
              "Ref": "InstanceChargeType"
            },
            "SecurityGroupId": {
              "Fn::GetAtt": [
                "NetworkStack",
                "Outputs.SecurityGroupId"
              ]
            },
            "VpcId": {
              "Fn::GetAtt": [
                "NetworkStack",
                "Outputs.VpcId"
              ]
            },
            "VSwitchId": {
              "Fn::GetAtt": [
                "NetworkStack",
                "Outputs.VSwitchId"
              ]
            },
            "IoOptimized": {
              "Ref": "IoOptimized"
            },
            "ZoneId": {
              "Ref": "ZoneId"
            },
            "SystemDisk_Category": {
              "Ref": "SystemDiskCategory"
            },
            "DiskMappings": [
              {
                "Category": "cloud_ssd",
                "Size": 20
              }
            ]
          }
        }
      },
      "Outputs": {
        "InstanceId": {
          "Value": {
            "Fn::GetAtt": [
              "WebServer",
              "InstanceId"
            ]
          }
        },
        "PublicIp": {
          "Value": {
            "Fn::GetAtt": [
              "WebServer",
              "PublicIp"
            ]
          }
        },
        "SecurityGroupId": {
          "Value": {
            "Fn::GetAtt": [
              "NetworkStack",
              "Outputs.SecurityGroupId"
            ]
          }
        },
        "VpcId": {
          "Value": {
            "Fn::GetAtt": [
              "NetworkStack",
              "Outputs.VpcId"
            ]
          }
        },
        "VSwitchId": {
          "Value": {
            "Fn::GetAtt": [
              "NetworkStack",
              "Outputs.VSwitchId"
            ]
          }
        },
        "NetworkStackArn": {
          "Value": {
            "Ref": "NetworkStack"
          }
        }
      }
    }