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

Resource Orchestration Service:ワンクリックでリソースシナリオに基づいてテンプレートを生成する

最終更新日:Jan 16, 2025

Resource Orchestration Service (ROS) を使用して、リソース管理シナリオ内の既存リソースのコレクションに基づいてテンプレートを生成できます。テンプレートが生成された後、ビジネス要件に基づいてテンプレートを変更し、変更したテンプレートを共通テンプレートとして使用して、一度に複数リソースをデプロイできます。

ユースケース

Web アプリケーションをデプロイするためのリソースを作成する場合、リソースに app:web タグを追加できます。このようにして、リソース管理シナリオを作成するときに、タグで必要なリソースをフィルタリングできます。[テンプレートの作成] をクリックして、リソースシナリオに基づいてテンプレートを生成します。テンプレートが生成された後、テンプレートの柔軟性と再利用性を向上させるために、[パラメーター] セクションをテンプレートに追加できます。その後、変更したテンプレートを共通テンプレートとして使用して、スタックを作成し、一度に複数リソースをデプロイできます。この例では、次のリソースがデプロイされます。

  • 仮想プライベートクラウド (VPC) 1 つ

  • vSwitch 1 つ

  • セキュリティグループ 1 つ

  • Elastic Compute Service (ECS) インスタンス 2 つ

  • Server Load Balancer (SLB) インスタンス 1 つ

手順 1: リソースを作成し、リソースにタグを追加する

関連コンソールで前述のリソースを作成し、リソースに app:web タグを追加します。タグキーは app で、タグ値は web です。タグの詳細については、「タグとは」をご参照ください。

説明

リソースがすでに存在する場合は、リソースにタグを追加するだけで済みます。

  1. VPC コンソールで、VPC と vSwitch を作成し、app:web タグを追加します。

    詳細については、「VPC を作成する」および「インスタンスにタグを追加する」をご参照ください。

    説明

    vSwitch にタグを追加するには、vSwitch を見つけて、p475747..png[タグ] 列の アイコンをクリックします。同様の操作を実行して、VPC にタグを追加できます。

  2. ECS コンソールで、VPC タイプのセキュリティグループを作成し、app:web タグをセキュリティグループに追加します。1 で作成した VPC を、セキュリティグループの作成時に [ネットワーク] ドロップダウンリストから選択します。

    詳細については、「セキュリティグループを作成する」および「セキュリティグループのタグを変更する」をご参照ください。

  3. 2 つの ECS インスタンスを作成し、インスタンスに app:web タグを追加します。

    1. 1 で作成した VPC と vSwitch を選択します。

    2. 2 で作成したセキュリティグループを選択します。

    3. ECS インスタンスの関連パラメーターを設定します。

      パラメーターの詳細については、「[カスタム起動] タブでインスタンスを作成する」をご参照ください。

    4. インスタンスに app:web タグを追加します。

      詳細については、「タグを作成または追加する」をご参照ください。

  4. SLB コンソールで、SLB インスタンスを作成し、インスタンスに app:web タグを追加します。この例では、Application Load Balancer (ALB) インスタンスが作成されます。

    1. 1 で作成した VPC を選択して、ALB インスタンスを作成します。

    2. バックエンドサーバーグループを作成し、3 で作成した ECS インスタンスをグループに追加します。

    3. ビジネス要件に基づいて、リスナーとドメイン名解決を設定します。

    4. ALB インスタンスに app:web タグを追加します。

    詳細については、「ALB インスタンスを使用して IPv4 サービスの負荷を分散する」および「タグを管理する」をご参照ください。

手順 2: リソース管理シナリオを作成する

リソース管理シナリオを作成し、手順 1: リソースを作成し、タグをバインドするで作成したリソースをフィルタリングします。

  1. ROS コンソールにログオンします。

  2. 左側のナビゲーションペインで、[シナリオ] をクリックします。

  3. 上部のナビゲーションバーで、リージョンドロップダウンリストからリソースシナリオを作成するリージョンを選択します。

  4. [シナリオ] ページで、[シナリオの作成] をクリックします。

  5. [シナリオの作成] ダイアログボックスで、[説明] パラメーターを指定し、[シナリオタイプの選択] として [リソース管理] を選択します。

  6. リソース範囲セクションのパラメーターを構成します。

    1. [メソッド][ソースタグ] に設定します。

    2. [ソースタグ] セクションで、[タグキー]app に、[タグ値]web に設定します。

    p475750..png

  7. [リソースの削除][いいえ] に設定します。

    説明

    この例では、スタックが削除された場合、スタック内のリソースは保持されます。

  8. [作成] をクリックします。

    リソースシナリオが作成されると、[作成済み]シナリオ ページの [ステータス] 列に表示されます。

手順 3: リソースシナリオに基づいてテンプレートを生成する

  1. [シナリオ] ページで、リソースシナリオの ID をクリックします。

  2. リソースシナリオ管理ページの右上隅にある [テンプレートの作成] をクリックして、テンプレートを生成します。

生成されたテンプレートは JSON 形式と YAML 形式です。この例では、JSON テンプレートを使用します。次のセクションでは、テンプレートの本文と構造について説明します。

テンプレート本文

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSInstance_001:
    DeletionPolicy: Retain  // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: false
      VSwitchId:
        Ref: ECSVSwitch_001
      VpcId:
        Ref: ECSVPC_001
      Tags:
        - Value: web
          Key: app
      SystemDiskSize: 40
      HostName: iZbp11ut2d6rr7gg78a****
      SystemDiskCategory: cloud_essd
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId: cn-hangzhou-i
      InstanceName: launch-advisor-2022****
      InstanceType: ecs.g7.large
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSInstance_002:
    DeletionPolicy: Retain // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: false
      VSwitchId:
        Ref: ECSVSwitch_001
      VpcId:
        Ref: ECSVPC_001
      Tags:
        - Value: web
          Key: app
      SystemDiskSize: 40
      HostName: iZbp11ut2d6rr7gg78a****
      SystemDiskCategory: cloud_essd
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId: cn-hangzhou-i
      InstanceName: launch-advisor-2022****
      InstanceType: ecs.g7.large
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSSecurityGroup_001:
    DeletionPolicy: Retain // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: ECSVPC_001
      Description: web-sg
      SecurityGroupName: web-sg
      Tags:
        - Value: web
          Key: app
      SecurityGroupIngress:
        - PortRange: 1/65535  // ポート範囲。
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 80/80 // ポート範囲。
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 443/443 // ポート範囲。
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 22/22 // ポート範囲。
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 3389/3389 // ポート範囲。
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: '-1/-1' // ポート範囲。
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: icmp
          SourcePortRange: '-1/-1'
      SecurityGroupType: normal
    DependsOn:
      - ECSVPC_001
  ECSVPC_001:
    DeletionPolicy: Retain // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 172.16.0.0/12
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
  ECSVSwitch_001:
    DeletionPolicy: Retain // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: web-vsw
      VpcId:
        Ref: ECSVPC_001
      Description: web-vsw
      Tags:
        - Value: web
          Key: app
      ZoneId: cn-hangzhou-i
      CidrBlock: 172.16.0.0/24
    DependsOn:
      - ECSVPC_001
  SLBBackendServerAttachment_001:
    DeletionPolicy: Retain // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::SLB::BackendServerAttachment
    Properties:
      BackendServers:
        - ServerId:
            Ref: ECSInstance_002
          Type: ecs
          Weight: 100
        - ServerId:
            Ref: ECSInstance_001
          Type: ecs
          Weight: 100
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
    DependsOn:
      - SLBLoadBalancer_001
      - ECSInstance_001
      - ECSInstance_002
  SLBLoadBalancer_001:
    DeletionPolicy: Retain // スタックの削除時にこのリソースを保持します。
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      DeletionProtection: false
      VpcId:
        Ref: ECSVPC_001
      AddressIPVersion: ipv4
      Tags:
        - Value: web
          Key: app
      SupportPrivateLink: true
      PayType: PayOnDemand
      SlaveZoneId: cn-hangzhou-h
      AddressType: intranet
      VSwitchId:
        Ref: ECSVSwitch_001
      LoadBalancerName: web-app-slb
      InternetChargeType: paybytraffic
      LoadBalancerSpec: slb.s1.small
      MasterZoneId: cn-hangzhou-i
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001

テンプレート構造

テンプレートには次のセクションが含まれています。

ROSTemplateFormatVersion: '2015-09-01' // テンプレートの構文バージョン。
Resources: {} // リソースの詳細。
  • ROSTemplateFormatVersion: テンプレートの構文バージョン。2015-09-01 に設定します。

  • Resources: リソースのプロパティや依存関係など、リソースの詳細。[リソース] セクションには、手順 1: リソースを作成し、リソースにタグを追加するで作成した次のリソースが含まれています。

    • VPC 1 つ: ECSVPC_001

    • vSwitch 1 つ: ECSvSwitch_001

    • セキュリティグループ 1 つ: ECSSecurityGroup_001

    • ECS インスタンス 2 つ: ECSInstance_001 と ECSInstance_002。以降、ECSInstance_00X と呼びます。

    • ALB インスタンス 1 つ: SLBLoadBalancer_001。SLBListener_001 と SLBBackendServerAttachment_001 も作成されます。

    次の図は、リソースのアーキテクチャを示しています。

    p475753..png

手順 4: 生成されたテンプレートを変更する

生成されたテンプレートでは、リソースプロパティ値は、手順 1: リソースを作成し、リソースにタグを追加するの関連コンソールでリソースを作成したときに選択したパラメーターから解析されたリテラル値です。[パラメーター] セクションと [出力] セクションを追加して、生成されたテンプレートを変更できます。このようにして、さまざまなビジネスケースでテンプレートを共通テンプレートとして使用できます。[パラメーター] セクションでは、ゾーンやインスタンスタイプなどの関連プロパティのリテラル値を上書きするパラメーターの値を指定できます。

変更前

ROSTemplateFormatVersion: '2015-09-01' // テンプレートの構文バージョン。
Resources: {} // リソースの詳細。

変更後

ROSTemplateFormatVersion: '2015-09-01' // テンプレートの構文バージョン。
Description: {} // テンプレートの説明 (テンプレートのユースケースとアーキテクチャを含む)。
Parameters: {} // 関連リソースプロパティのリテラル値を上書きするために値を指定できるパラメーター。
Resources: {} // リソースの詳細。
Outputs: {} // テンプレートの出力 (リソースプロパティの戻り値など)。出力をクエリするには、GetStack オペレーションを呼び出すか、ROS コンソールの [出力] タブに移動します。

説明

パラメーターの詳細については、「テンプレート構文」をご参照ください。

リソース、パラメーター、出力間のマッピング

リソース名

パラメーター

出力

ECSVPC_001

VpcCidrBlock: VPC の CIDR ブロック。

なし。

ECSvSwitch_001

ZoneId: ゾーン ID。

なし。

VSwitchCidrBlock: vSwitch の CIDR ブロックです。

ECSSecurityGroup_001

なし。

なし。

ECSInstance_00X

ZoneId: ゾーン ID。

InstanceId: ECS インスタンスの ID。

ECSInstanceType: ECSインスタンスタイプ。

SystemDiskCategory: ECSインスタンスのシステムディスクカテゴリ。

SLBLoadBalancer_001

MasterZoneId: プライマリゾーンの ID。

IpAddress: ALB インスタンスの IP アドレス。

SlaveZoneId: ALBインスタンスのセカンダリゾーンIDです。

LoadBalancerSpec: ALBインスタンスの仕様。

手順

リソース: ECSVPC_001

  • Parameters セクションで、VpcCidrBlock パラメーターを追加して指定します。

  • Parameters セクションに含まれる VpcCidrBlock パラメーターを CidrBlock プロパティで参照するには、Ref を使用します。

変更前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVPC_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 172.16.0.0/12

変更後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcCidrBlock:  // パラメーター名。
    Type: String // パラメーターのデータ型。
    Label: VPC IPv4 CIDR Block // パラメーターのラベル。ROS コンソールに表示されます。
    Description: the CIDR Block of the VPC // パラメーターの説明。ROS コンソールに表示されます。
    Default: 172.16.0.0/12 // パラメーターのデフォルト値。
Resources:
  ECSVPC_001:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:  // VPC の CIDR ブロック。
        Ref: VpcCidrBlock // Parameters セクションの VpcCidrBlock パラメーターを参照します。
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
説明

ECSVPC_001 の他のプロパティの詳細については、「ALIYUN::ECS::VPC」をご参照ください。

リソース: ECSvSwitch_001

  • Parameters セクションで、ZoneId パラメーターと VSwitchCidrBlock パラメーターを追加して指定します。

  • Parameters セクションに含まれる ZoneId パラメーターを ZoneId プロパティで参照するには、Ref を使用します。

  • Parameters セクションに含まれる VSwitchCidrBlock パラメーターを CidrBlock プロパティで参照するには、Ref を使用します。

変更前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VpcId:
        Ref: ECSVPC_001
      ZoneId: cn-hangzhou-i
      CidrBlock: 172.16.0.0/24
    DependsOn:
      - ECSVPC_001

変更後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: // パラメーター名。
    Type: String // パラメーターのデータ型。
    AssociationProperty: ALIYUN::ECS::ZoneId // 使用可能なゾーン ID をクエリします。
    Description: VPC IPV4 CIDR Block // パラメーターの説明。ROS コンソールに表示されます。
    Label: the CIDR Block of the VPC // パラメーターのラベル。ROS コンソールに表示されます。
  VSwitchCidrBlock: // パラメーター名。
    Type: String // パラメーターのデータ型。
    Label: VSwitch CIDR Block // パラメーターのラベル。ROS コンソールに表示されます。
    Description: the CIDR block of the vSwitch must belong to the CIDR block of the VPC // パラメーターの説明。ROS コンソールに表示されます。
    Default: 172.16.0.0/24 // パラメーターのデフォルト値。
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      CidrBlock: // vSwitch の CIDR ブロック。
        Ref: VSwitchCidrBlock // Parameters セクションの VSwitchCidrBlock パラメーターを参照します。
      VpcId:
        Ref: ECSVPC_001
      ZoneId: // ゾーン ID。
        Ref: ZoneId // Parameters セクションの ZoneId パラメーターを参照します。
    DependsOn:
      - ECSVPC_001
説明
  • [パラメーター] セクションでは、AssociationProperty を指定して特定のリージョン内のリソースをクエリし、AssociationPropertyMetadata を指定してパラメーターのフィルター条件を追加できます。このようにして、ROSコンソールは、パラメーターに選択された値に基づいてパラメーター値を表示します。ZoneId パラメーターの場合、AssociationPropertyALIYUN::ECS::ZoneId に設定されています。このようにして、指定したリージョンで使用可能なゾーン ID をクエリし、ROSコンソールのドロップダウンリストから必要なゾーンを選択できます。詳細については、AssociationProperty and AssociationPropertyMetadata をご参照ください。

  • リソースに DependsOn を指定すると、システムはリソースの依存関係が作成された後にリソースを作成します。この例では、ECSVPC_001 が作成された後に ECSVSwitch_001 が作成されます。

  • ECSVSwitch_001 のその他のプロパティの詳細については、「ALIYUN::ECS::VSwitch」をご参照ください。

リソース: ECSInstance_00X

  • Parameters セクションで、ZoneIdECSInstanceType、および SystemDiskCategory パラメーターを追加して指定します。

  • Ref を使用して、ZoneId プロパティの Parameters セクションに含まれる ZoneId パラメーターを参照します。

  • Ref を使用して、InstanceType プロパティの Parameters セクションに含まれる ECSInstanceType パラメーターを参照します。

  • Ref を使用して、SystemDiskCategory プロパティの Parameters セクションに含まれる SystemDiskCategory パラメーターを参照します。

変更前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVSwitch_001: ''
  ECSVPC_001: ''
  ECSSecurityGroup_001: ''
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      ZoneId: cn-hangzhou-i
      InstanceType: ecs.g7.large
      SystemDiskCategory: cloud_essd
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001

変更後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  ECSInstanceType:
    Type: String
    Description: the available ECS instance type in the specified zone // 指定されたゾーンで使用可能な ECS インスタンスタイプ
    Label: ECS Instance Type // ECS インスタンスタイプ
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: the category of the system disk // システムディスクのカテゴリ
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: VSwitchZone
      InstanceType: ECSInstanceType
    Label: System Disk Category // システムディスクのカテゴリ
Resources:
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      SystemDiskCategory:
        Ref: SystemDiskCategory
      InstanceType:
        Ref: ECSInstanceType
      ZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
説明
  • EcsInstanceType パラメーターでは、AssociationPropertyALIYUN::ECS::Instance::InstanceType に設定されています。このようにして、指定されたリージョンで使用可能な ECS インスタンスタイプを照会し、ROS コンソールでドロップダウンリストから必要なインスタンスタイプを選択できます。

  • AssociationPropertyMetadata は、フィルター条件を追加するために使用されます。この例では、AssociationPropertyMetadata は ZoneId に設定されています。このようにして、指定されたゾーンで使用可能な ECS インスタンスタイプを照会できます。

  • SystemDiskCategory パラメーターでは、AssociationPropertyALIYUN::ECS::Disk::SystemDiskCategory に設定されています。このようにして、指定されたリージョンで ECS インスタンスで使用可能なシステムディスクカテゴリを照会できます。 AssociationPropertyMetadataZoneId を指定して、特定のゾーン ID をフィルター条件として使用します。

  • ECSInstance_00X のその他のプロパティの詳細については、「ALIYUN::ECS::Instance」をご参照ください。

リソース: ECSInstance_00X

  • Parameters セクションで、MasterZoneIdSlaveZoneId、および LoadBalancerSpec パラメーターを追加して指定します。

  • Ref を使用して、MasterZoneId プロパティの Parameters セクションに含まれる ZoneId パラメーターを参照します。

  • Ref を使用して、SlaveZoneId プロパティの Parameters セクションに含まれる SlaveZoneId パラメーターを参照します。

  • Ref を使用して、LoadBalancerSpec プロパティの Parameters セクションに含まれる LoadBalancerSpec パラメーターを参照します。

変更前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001: ''
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      MasterZoneId: cn-hangzhou-i
      SlaveZoneId: cn-hangzhou-h
      LoadBalancerSpec: slb.s1.small
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001

変更後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  SlaveZoneId:
    Type: String
    Description: セカンダリゾーンの ID
    Label: セカンダリゾーン
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: ALB インスタンスの仕様
    Label: ALB インスタンス仕様
    AssociationPropertyMetadata:
      ZoneId: VSwitchZone
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001: ''
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      LoadBalancerName: web-app-slb
      LoadBalancerSpec:
        Ref: LoadBalancerSpec
      SlaveZoneId:
        Ref: SlaveZoneId
      MasterZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001
説明
  • [パラメーター] セクションでは、AssociationProperty を指定して特定のリージョンのリソースをクエリし、AssociationPropertyMetadata を指定してパラメーターにフィルター条件を追加できます。このようにして、ROS コンソールは、パラメーターに選択された値に基づいてパラメーター値を表示します。

  • ZoneId パラメーターの場合、AssociationPropertyALIYUN::ECS::ZoneId に設定されています。このようにして、指定したリージョンで使用可能なゾーン ID をクエリし、ROS コンソールでドロップダウンリストから必要なゾーンを選択できます。

  • LoadBalancerSpec パラメーターの場合、AssociationPropertyALIYUN::SLB::Instance::InstanceType に設定されます。このようにして、指定したリージョンで使用可能な ALB インスタンスの仕様をクエリし、ROS コンソールでドロップダウンリストから必要な仕様を選択できます。詳細については、「AssociationProperty and AssociationPropertyMetadata」をご参照ください。

  • SLBLoadBalancer_001 のその他のプロパティの詳細については、「ALIYUN::SLB::LoadBalancer」をご参照ください。

出力: IpAddress

ALIYUN::SLB::LoadBalancer トピックの「戻り値」セクションで、SLBLoadBalancer_001 の他のプロパティの戻り値の詳細について説明しています。詳細については、「ALIYUN::SLB::LoadBalancer」をご参照ください。

Outputs:
  SLBListenerIpAddress:
    Description: ロードバランサーのIPアドレス。
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

出力: InstanceId

ECSInstance_00X の他のプロパティの戻り値の詳細については、ALIYUN::ECS::Instance トピックの「戻り値」セクションをご参照ください。

Outputs:
  ECSInstance_001:
    Description: The instance ID of created ecs instance  // 作成された ECS インスタンスのインスタンス ID
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: The instance ID of created ecs instance  // 作成された ECS インスタンスのインスタンス ID
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId

共通テンプレートを完成させる

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Description: ゾーン ID // the ID of the zone
    Label: ゾーン // Zone
  SlaveZoneId:
    Type: String
    Description: セカンダリゾーン ID // the ID of the secondary zone
    Label: SLB セカンダリゾーン // SLB Secondary Zone
  VpcCidrBlock:
    Type: String
    Label: VPC IPv4 CIDR ブロック // VPC IPv4 CIDR Block
    Description: VPC の CIDR ブロック // the CIDR Block of the VPC
    Default: 172.16.0.0/12
  VSwitchCidrBlock:
    Type: String
    Label: VSwitch CIDR ブロック // VSwitch CIDR Block
    Description: vSwitch の CIDR ブロックは、VPC の CIDR ブロックに属している必要があります // the CIDR block of the vSwitch must belong to the CIDR block of the VPC
    Default: 172.16.0.0/24
  ECSInstanceType:
    Type: String
    Description: ECS インスタンスタイプ // the ECS instance type
    Label: ECS インスタンスタイプ // ECS Instance Type
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: システムディスクのカテゴリ // the category of the system disk
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ZoneId
      InstanceType: ECSInstanceType
    Label: システムディスクカテゴリ // System Disk Category
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: インスタンスの仕様 // the specification of the instance
    Label: SLB 仕様 // SLB Specification
    AssociationPropertyMetadata:
      ZoneId: ZoneId
    Default: slb.s1.small
Resources:
  ECSVPC_001:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: web-vsw
      VpcId:
        Ref: ECSVPC_001
      Description: web-vsw
      Tags:
        - Value: web
          Key: app
      ZoneId:
        Ref: ZoneId
      CidrBlock:
        Ref: VSwitchCidrBlock
    DependsOn:
      - ECSVPC_001
  ECSSecurityGroup_001:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: ECSVPC_001
      Description: web-sg
      SecurityGroupName: web-sg
      Tags:
        - Value: web
          Key: app
      SecurityGroupIngress:
        - PortRange: 80/80
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 443/443
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 22/22
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
      SecurityGroupType: normal
    DependsOn:
      - ECSVPC_001
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: true
      SystemDiskCategory:
        Ref: SystemDiskCategory
      VpcId:
        Ref: ECSVPC_001
      Description: web-ecs
      Tags:
        - Value: web
          Key: app
      VSwitchId:
        Ref: ECSVSwitch_001
      SystemDiskSize: 40
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId:
        Ref: ZoneId
      InstanceName: web-ecs002
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSInstance_002:
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: true
      SystemDiskCategory:
        Ref: SystemDiskCategory
      VpcId:
        Ref: ECSVPC_001
      Description: web-ecs
      Tags:
        - Value: web
          Key: app
      VSwitchId:
        Ref: ECSVSwitch_001
      SystemDiskSize: 40
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId:
        Ref: ZoneId
      InstanceName: web-ecs001
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  SLBListener_001:
    Type: ALIYUN::SLB::Listener
    Properties:
      AclStatus: 'off'
      Protocol: tcp
      Description: tcp_80
      HealthCheck:
        Interval: 2
        HealthyThreshold: 3
        Switch: 'on'
        UnhealthyThreshold: 3
        HealthCheckType: tcp
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
      ListenerPort: 80
      Bandwidth: -1
      BackendServerPort: 80
      Scheduler: tch
      StartListener: true
      Persistence:
        PersistenceTimeout: 0
    DependsOn:
      - SLBLoadBalancer_001
  SLBLoadBalancer_001:
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      DeletionProtection: false
      VpcId:
        Ref: ECSVPC_001
      AddressIPVersion: ipv4
      Tags:
        - Value: web
          Key: app
      SupportPrivateLink: true
      PayType: PayOnDemand
      AddressType: intranet
      VSwitchId:
        Ref: ECSVSwitch_001
      LoadBalancerName: web-slb
      InternetChargeType: paybytraffic
      LoadBalancerSpec:
        Ref: LoadBalancerSpec
      MasterZoneId:
        Ref: ZoneId
      SlaveZoneId:
        Ref: SlaveZoneId
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001
  SLBBackendServerAttachment_001:
    Type: ALIYUN::SLB::BackendServerAttachment
    Properties:
      BackendServers:
        - ServerId:
            Ref: ECSInstance_001
          Type: ecs
          Weight: 100
        - ServerId:
            Ref: ECSInstance_002
          Type: ecs
          Weight: 100
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
    DependsOn:
      - SLBLoadBalancer_001
      - ECSInstance_001
      - ECSInstance_002
Outputs:
  ECSInstance_001:
    Description: 作成された ECS インスタンスのインスタンス ID // TheinstanceIDofcreatedecsinstance
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: 作成された ECS インスタンスのインスタンス ID // TheinstanceIDofcreatedecsinstance
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId
  SLBListenerIpAddress:
    Description: ロードバランサーの IP アドレス // TheIPaddressoftheloadbalancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

ステップ 5: (オプション) 複数リソースの一括デプロイ

共通テンプレートを使用して、スタックを作成し、複数リソースを一度にデプロイできます。

  1. ROSコンソールで、ステップ 4: 生成されたテンプレートの変更 で作成した共通テンプレートを使用して、スタックを作成し、複数リソースを一度にデプロイします。

    詳細については、「スタックの作成」をご参照ください。

  2. スタックの詳細ページで、[パラメーター] タブをクリックして、デプロイされたリソースの詳細を表示します。