すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:ALIYUN::ROS::Stack

最終更新日:Jan 16, 2025

ALIYUN::ROS::Stack は、ネストされたスタックを作成するために使用されます。最大 5 レベルの深さまでスタックをネストできます。

ネストされたスタックには、他のネストされたスタックを含めることができます。これはスタックの階層を形成します。ルートスタックは、すべてのネストされたスタックが属する親スタックです。ルートスタックのテンプレートは、トップレベルテンプレートと呼ばれます。ALIYUN::ROS::Stack を使用して、スタックをトップレベルテンプレートのリソースとしてネストできます。

ネストされたスタックのテンプレートでは、スタックの出力を別のスタックへの入力として使用できます。ネストされたスタックの出力を取得するには、Fn::GetAtt 関数を使用し、Outputs.NestedStackOutputName 形式でネストされたスタックの名前と出力名を設定します。詳細については、「ネストされたスタックを使用する」をご参照ください。

構文

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

プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

TemplateURL

String

いいえ

はい

テンプレート本文を含むファイルの URL。

テンプレート本文を含むファイルは、最大 524,288 バイトの長さにすることができます。 URL は最大 1,024 バイトの長さにすることができます。

URL は、HTTP または HTTPS Web サーバー上、またはオブジェクトストレージサービス(OSS)バケットにあるテンプレートを指している必要があります(例:oss://ros/template/demo または oss://ros/template/demo?RegionId=cn-hangzhou)。

OSS バケットのリージョン ID を指定しない場合は、スタックのリージョン ID が使用されます。

TemplateURLTemplateBodyTemplateId プロパティのいずれかを指定する必要があります。上記のすべてのプロパティを指定した場合、TemplateBody が優先されます。

TemplateBody

Map

いいえ

はい

テンプレートの配信を容易にするために使用されるテンプレートコンテンツ。

コンテンツは生データです。テンプレートコンテンツの関数は、子テンプレートに対してのみ有効です。

TemplateURLTemplateBodyTemplateId プロパティのいずれかを指定する必要があります。上記のすべてのプロパティを指定した場合、TemplateBody が優先されます。

TemplateId

String

いいえ

はい

テンプレート ID。

TemplateURLTemplateBodyTemplateId プロパティのいずれかを指定する必要があります。上記のすべてのプロパティを指定した場合、TemplateBody が優先されます。

TemplateVersion

String

いいえ

はい

テンプレートバージョンの名前。

なし。

TimeoutMins

Number

いいえ

はい

親スタックの作成または更新のタイムアウト期間。

単位:分。

デフォルト値:60。

Parameters

Map

いいえ

はい

ネストされたスタックの作成時に Resource Orchestration Service (ROS) に渡されるパラメーターを表すキーと値のペアのセット。

このプロパティの各キーと値は、ネストされたスタックのテンプレートで定義されているパラメーター名とパラメーター値に対応しています。ネストされたスタックが入力パラメーターを必要とする場合は、このプロパティを指定する必要があります。

ResourceGroupId

String

いいえ

いいえ

リソースグループの ID。

なし。

Tags

List

いいえ

はい

タグ。

最大 20 個のタグを指定できます。詳細については、「タグのプロパティ」をご参照ください。

タグの構文

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

タグのプロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Key

String

はい

いいえ

タグキー。

タグキーは最大 128 文字の長さにすることができます。aliyun または acs: で始めることはできず、http:// または https:// を含めることはできません。

Value

String

いいえ

いいえ

タグ値。

タグ値は最大 128 文字の長さにすることができます。aliyun または acs: で始めることはできず、http:// または https:// を含めることはできません。

戻り値

Fn::GetAtt

次のコードを使用して、ネストされたスタックの出力を取得できます。

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

Ref を使用してネストされたスタックのリソースを参照すると、ネストされたスタックの Alibaba Cloud Resource Name (ARN) が返されます。例:arn:acs:ros::cn-hangzhou:12345****:stacks/test-nested-stack-Demo-jzkyq7mn****/e71c1e04-1a57-46fc-b9a4-cf7ce0d3****

次のサンプルコードは、子スタックを作成する方法の YAML と JSON の例を示しています。子スタックでは、仮想プライベートクラウド(VPC)、vSwitch、およびセキュリティグループが作成されます。子スタックのテンプレートは、oss://ros/template/vpc.txt ディレクトリに保存されます。

  • YAML 形式

    ROSTemplateFormatVersion: '2015-09-01'
    Description: 1 つの VPC、vSwitch、セキュリティグループ。
    Parameters:
      ZoneId:
        Type: String
        Description: 使用可能なゾーン
      SecurityGroupName:
        Type: String
        Description: セキュリティグループ名
        Default: my-sg-name
      VpcName:
        Type: String
        Description: VPC 名
        MinLength: 2
        MaxLength: 128
        ConstraintDescription: '[2, 128] 英語または中国語の文字'
        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: VPC 内にある必要がある vSwitch サブネット
        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
    
  • JSON 形式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Description": "1 つの VPC、vSwitch、セキュリティグループ。",
      "Parameters": {
        "ZoneId": {
          "Type": "String",
          "Description": "使用可能なゾーン"
        },
        "SecurityGroupName": {
          "Type": "String",
          "Description": "セキュリティグループ名",
          "Default": "my-sg-name"
        },
        "VpcName": {
          "Type": "String",
          "Description": "VPC 名",
          "MinLength": 2,
          "MaxLength": 128,
          "ConstraintDescription": "[2, 128] 英語または中国語の文字",
          "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": "VPC 内にある必要がある vSwitch サブネット",
          "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"
            ]
          }
        }
      }
    }

次のサンプルコードは、親スタックを作成する方法の YAML と JSON の例を示しています。

  • YAML 形式

    ROSTemplateFormatVersion: '2015-09-01'
    Description: 1 つの ECS インスタンス。
    Parameters:
      ImageId:
        Default: centos_7
        Type: String
        Description: イメージ ID。ECS インスタンスを起動するイメージリソースを表します。
      InstanceType:
        Type: String
        Description: ECS インスタンスタイプ。
        Default: ecs.xn4.small
      ZoneId:
        Type: String
        Description: 使用可能なゾーン
      InstanceChargeType:
        Type: String
        AllowedValues:
          - PrePaid
          - PostPaid
        Default: PostPaid
        Description: インスタンスの課金タイプ
      SecurityGroupName:
        Type: String
        Description: セキュリティグループ名
        Default: my-sg-name
      NetworkInterfaceName:
        Type: String
        Description: ネットワークインターフェース名
        Default: my-eni-name
      VpcName:
        Type: String
        Description: VPC 名
        MinLength: 2
        MaxLength: 128
        ConstraintDescription: '[2, 128] 英語または中国語の文字'
        Default: my-vpc-name
      IoOptimized:
        AllowedValues:
          - none
          - optimized
        Description: IO 最適化。optimized は IO 最適化インスタンスタイプ用です。
        Type: String
        Default: optimized
      SystemDiskCategory:
        AllowedValues:
          - cloud
          - cloud_efficiency
          - cloud_ssd
        Description: システムディスクカテゴリ:平均クラウドディスク(cloud)、効率的クラウドディスク(cloud_efficiency)、または SSD クラウドディスク(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: VPC 内にある必要がある VSwitch サブネット
        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
    
  • JSON 形式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Description": "1 つの ECS インスタンス。",
      "Parameters": {
        "ImageId": {
          "Default": "centos_7",
          "Type": "String",
          "Description": "イメージ ID。ECS インスタンスを起動するイメージリソースを表します。"
        },
        "InstanceType": {
          "Type": "String",
          "Description": "ECS インスタンスタイプ。",
          "Default": "ecs.xn4.small"
        },
        "ZoneId": {
          "Type": "String",
          "Description": "使用可能なゾーン"
        },
        "InstanceChargeType": {
          "Type": "String",
          "AllowedValues": [
            "PrePaid",
            "PostPaid"
          ],
          "Default": "PostPaid",
          "Description": "インスタンスの課金タイプ"
        },
        "SecurityGroupName": {
          "Type": "String",
          "Description": "セキュリティグループ名",
          "Default": "my-sg-name"
        },
        "NetworkInterfaceName": {
          "Type": "String",
          "Description": "ネットワークインターフェース名",
          "Default": "my-eni-name"
        },
        "VpcName": {
          "Type": "String",
          "Description": "VPC 名",
          "MinLength": 2,
          "MaxLength": 128,
          "ConstraintDescription": "[2, 128] 英語または中国語の文字",
          "Default": "my-vpc-name"
        },
        "IoOptimized": {
          "AllowedValues": [
            "none",
            "optimized"
          ],
          "Description": "IO 最適化。optimized は IO 最適化インスタンスタイプ用です。",
          "Type": "String",
          "Default": "optimized"
        },
        "SystemDiskCategory": {
          "AllowedValues": [
            "cloud",
            "cloud_efficiency",
            "cloud_ssd"
          ],
          "Description": "システムディスクカテゴリ:平均クラウドディスク(cloud)、効率的クラウドディスク(cloud_efficiency)、または SSD クラウドディスク(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": "VPC 内にある必要がある VSwitch サブネット",
          "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"
          }
        }
      }
    }