全部产品
Search
文档中心

CloudOps Orchestration Service:ACS-ECS-CloneInstancesAcrossRegion

更新时间:Jun 28, 2025

Nama Template

ACS-ECS-CloneInstancesAcrossRegion

Eksekusi Sekarang

Deskripsi Template

Mengkloning instance Elastic Compute Service (ECS) di seluruh wilayah.

Tipe Template

Otomatis

Pemilik

Alibaba Cloud

Parameter Input

Parameter

Deskripsi

Tipe

Diperlukan

Nilai Default

Batasan

instanceIds

ID instance ECS yang akan dikloning.

List

Ya

regionId

ID wilayah dari mana instance ECS dikloning.

String

Ya

Nilai harus memiliki panjang 1 hingga 30 karakter.

targetRegionId

ID wilayah ke mana instance ECS dikloning.

String

Ya

Nilai harus memiliki panjang 1 hingga 30 karakter.

targetZoneId

ID zona ke mana instance ECS dikloning.

String

Ya

Nilai harus memiliki panjang 1 hingga 30 karakter.

targetInstanceType

Tipe instance dari instance ECS.

String

Ya

Ekspresi reguler untuk verifikasi string: ecs.[A-Za-z0-9.-]*.

Nilai harus memiliki panjang 1 hingga 30 karakter.

targetSecurityGroupId

ID grup keamanan.

String

Ya

Ekspresi reguler untuk verifikasi string: sg-[A-Za-z0-9]*.

Nilai harus memiliki panjang 1 hingga 30 karakter.

targetVSwitchId

ID vSwitch.

String

Ya

Ekspresi reguler untuk verifikasi string: vsw-[A-Za-z0-9]*.

Nilai harus memiliki panjang 1 hingga 30 karakter.

OOSAssumeRole

Peran Resource Access Management (RAM) yang diasumsikan oleh CloudOps Orchestration Service (OOS).

String

Tidak

""

Parameter Output

Parameter

Deskripsi

Tipe

instanceIds

List

Kebijakan Izin yang Diperlukan untuk Menjalankan Template

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:CopyImage",
                "ecs:CreateImage",
                "ecs:DescribeDisks",
                "ecs:DescribeImages",
                "ecs:DescribeInstances",
                "ecs:RunInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Referensi

Untuk informasi lebih lanjut, lihat ACS-ECS-CloneInstancesAcrossRegion.yml di GitHub.

Konten Template

FormatVersion: OOS-2019-06-01
Description:
  en: Cross Region copy and run ECS instance by InstanceIds
  zh-cn: deskripsi dalam bahasa Cina
  title: ACS-ECS-CloneInstancesAcrossRegion
  name-en: ACS-ECS-CloneInstancesAcrossRegion
  name-zh-cn: deskripsi dalam bahasa Cina
  categories:
    - cross_region
Parameters:
  instanceIds:
    Label:
      en: InstanceIds
      zh-cn: deskripsi dalam bahasa Cina
    Type: List
  regionId:
    Label:
      en: RegionId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    MinLength: 1
    MaxLength: 30
  targetRegionId:
    Label:
      en: TargetRegionId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    MinLength: 1
    MaxLength: 30
  targetZoneId:
    Label:
      en: TargetZoneId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    MinLength: 1
    MaxLength: 30
  targetInstanceType:
    Label:
      en: TargetInstanceType
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AllowedPattern: 'ecs\.[A-Za-z0-9\.\-]*'
    MinLength: 1
    MaxLength: 30
  targetSecurityGroupId:
    Label:
      en: TargetSecurityGroupId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AllowedPattern: 'sg-[A-Za-z0-9]*'
    MinLength: 1
    MaxLength: 30
  targetVSwitchId:
    Label:
      en: TargetVSwitchId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AllowedPattern: 'vsw-[A-Za-z0-9]*'
    MinLength: 1
    MaxLength: 30
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: queryDisks
    Action: ACS::ExecuteAPI
    Description:
      en: Views disk info of the ECS instance
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: DescribeDisks
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceId: '{{ ACS::TaskLoopItem }}'
    Outputs:
      instanceDataDisks:
        Type: Json
        ValueSelector: '.Disks.Disk|map( select(.Type == "data" )|{"Category":(.Category),"Device": (.Device),"Size":(.Size),"DiskName":(.DiskName),"PerformanceLevel":(.PerformanceLevel)})'
      instanceSystemDisk:
        Type: Json
        ValueSelector: '.Disks.Disk|map( select(.Type == "system" )|{"Category":(.Category),"Device": (.Device),"Size":(.Size),"DiskName":(.DiskName),"PerformanceLevel":(.PerformanceLevel)})[]'
    Loop:
      Items: '{{ instanceIds }}'
      Outputs:
        dataDisks:
          AggregateType: 'Fn::ListJoin'
          AggregateField: instanceDataDisks
        systemDisks:
          AggregateType: 'Fn::ListJoin'
          AggregateField: instanceSystemDisk
  - Name: createImage
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Create Image
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: CreateImage
      Parameters:
        RegionId: '{{ regionId }}'
        ImageName: 'img-{{ ACS::TaskLoopItem }}-{{ACS::ExecutionId}}'
        InstanceId: '{{ ACS::TaskLoopItem }}'
        DetectionStrategy: Standard
    Loop:
      Items: '{{ instanceIds }}'
      Outputs:
        ImageIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: ImageId
    Outputs:
      ImageId:
        ValueSelector: ImageId
        Type: String
  - Name: untilCreateImageReady
    Action: 'ACS::WaitFor'
    Description:
      en: Wait For created images available
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: DescribeImages
      Parameters:
        RegionId: '{{ regionId }}'
        ImageId: '{{ ACS::TaskLoopItem }}'
      DesiredValues:
        - Available
      PropertySelector: 'Images.Image[].Status'
    Loop:
      Items: '{{ createImage.ImageIds }}'
    Retries: 57
  - Name: copyImage
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Copy image
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: CopyImage
      Parameters:
        RegionId: '{{ regionId }}'
        ImageId: '{{ ACS::TaskLoopItem }}'
        DestinationRegionId: '{{ targetRegionId }}'
    Loop:
      Items: '{{ createImage.ImageIds }}'
      Outputs:
        ImageIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: ImageId
    Outputs:
      ImageId:
        ValueSelector: ImageId
        Type: String
  - Name: untilCopyImageReady
    Action: 'ACS::WaitFor'
    Description:
      en: Wait for copied images available
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: DescribeImages
      Parameters:
        RegionId: '{{ targetRegionId }}'
        ImageId: '{{ ACS::TaskLoopItem }}'
      DesiredValues:
        - Available
      PropertySelector: 'Images.Image[].Status'
    Loop:
      Items: '{{ copyImage.ImageIds }}'
  - Name: runInstances
    Action: 'ACS::ExecuteAPI'
    Description:
      en: run instances
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: RunInstances
      Parameters:
        RegionId: '{{ targetRegionId }}'
        ZoneId: '{{ targetZoneId }}'
        ImageId:
          'Fn::Select':
              - '{{ ACS::TaskLoopItem }}'
              - '{{ copyImage.ImageIds }}'
        DataDisks:
          'Fn::Select':
            - '{{ ACS::TaskLoopItem }}'
            - '{{queryDisks.dataDisks}}'
        SystemDiskCategory:
          'Fn::Select':
            - Category
            - 'Fn::Select':
                - '{{ ACS::TaskLoopItem }}'
                - '{{ queryDisks.systemDisks }}'
        SystemDiskSize:
          'Fn::Select':
            - Size
            - 'Fn::Select':
                - '{{ ACS::TaskLoopItem }}'
                - '{{ queryDisks.systemDisks }}'
        SystemDiskDiskName:
          'Fn::Select':
            - DiskName
            - 'Fn::Select':
                - '{{ ACS::TaskLoopItem }}'
                - '{{ queryDisks.systemDisks }}'
        SystemDiskPerformanceLevel:
          'Fn::Select':
            - PerformanceLevel
            - 'Fn::Select':
                - '{{ ACS::TaskLoopItem }}'
                - '{{ queryDisks.systemDisks }}'
        InstanceType: '{{ targetInstanceType }}'
        SecurityGroupId: '{{ targetSecurityGroupId }}'
        VSwitchId: '{{ targetVSwitchId }}'
    Loop:
      Items:
        'Fn::Jq':
          - All
          - '.|length|range(.)'
          - '{{ instanceIds }}'
      Outputs:
        instanceIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: instanceId
    Outputs:
      instanceId:
        Type: String
        ValueSelector: 'InstanceIdSets.InstanceIdSet[]'
  - Name: untilInstanceReady
    Action: 'ACS::WaitFor'
    Description:
      en: Wait for instances running
      zh-cn: deskripsi dalam bahasa Cina
    Properties:
      Service: ECS
      API: DescribeInstances
      Parameters:
        RegionId: '{{ targetRegionId }}'
        InstanceIds: '{{ runInstances.instanceIds }}'
      DesiredValues:
        - Running
      PropertySelector: '.Instances.Instance[].Status'
Outputs:
  instanceIds:
    Value: '{{ runInstances.instanceIds }}'
    Type: List
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - targetRegionId
          - targetZoneId
          - targetInstanceType
          - targetSecurityGroupId
          - targetVSwitchId
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Configure Parameters
      - Parameters:
          - regionId
          - instanceIds
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Select Ecs Instances
      - Parameters:
          - OOSAssumeRole
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Control Options