全部产品
Search
文档中心

CloudOps Orchestration Service:ACS-ECS-UpdateImage

更新时间:Jun 28, 2025

Nama Template

ACS-ECS-UpdateImage

Eksekusi Sekarang

Deskripsi Template

Menjalankan perintah untuk membuat citra Elastic Compute Service (ECS) baru dengan memperbarui citra ECS yang sudah ada. Ini berlaku untuk skenario di mana Anda ingin memperbarui dan mengelola citra ECS secara massal, seperti instalasi aplikasi dan perubahan konfigurasi sistem. Selama proses konfigurasi, Anda harus memberikan informasi berikut: regionId: wilayah tempat citra dibuat dan diperbarui, serta sourceImageId: ID citra ECS asli. Parameter yang dapat dimodifikasi meliputi targetImageName: nama citra ECS yang akan dibuat, instanceType: tipe instans citra, dan updateType: jenis pembaruan. Setelah template dieksekusi, ID citra yang dibuat akan dikembalikan untuk memfasilitasi verifikasi dan pengelolaan citra.

Jenis Template

Otomatis

Pemilik

Alibaba Cloud

Parameter Masukan

Parameter

Deskripsi

Tipe

Diperlukan

Nilai Default

Batasan

sourceImageId

ID citra sumber.

String

Ya

instanceType

Tipe instans dari Instance ECS.

String

Ya

regionId

ID wilayah.

String

Tidak

{{ ACS::RegionId }}

zoneId

Zona tempat vSwitch ditempatkan.

String

Tidak

""

targetImageName

Nama citra baru.

String

Tidak

UpdateImage_from_{{sourceImageId}}on{{ACS::ExecutionId}}

whetherCreateVpc

Menentukan apakah akan membuat virtual private cloud (VPC).

Boolean

Tidak

False

vpcCidrBlock

Blok CIDR IPv4 dari VPC.

String

Tidak

192.168.0.0/16

vSwitchCidrBlock

Blok CIDR dari vSwitch.

String

Tidak

192.168.1.0/24

securityGroupId

ID grup keamanan.

String

Tidak

""

vSwitchId

ID vSwitch.

String

Tidak

""

internetMaxBandwidthOut

Bandwidth publik.

Number

Tidak

0

ramRoleName

Peran Resource Access Management (RAM) yang ditetapkan pada Instance ECS.

String

Tidak

""

systemDiskCategory

Kategori disk sistem.

String

Tidak

cloud_essd

commandType

Tipe perintah Cloud Assistant.

String

Tidak

RunShellScript

tags

Tag dari citra.

Json

Tidak

[]

commandContent

Perintah Cloud Assistant yang akan dijalankan pada Instance ECS.

String

Tidak

echo hello

timeout

Periode timeout.

Number

Tidak

600

updateType

Metode yang digunakan untuk memperbarui citra.

String

Tidak

RunCommand

packageName

Nama paket perangkat lunak yang akan diinstal.

String

Tidak

""

packageVersion

Versi paket perangkat lunak yang akan diinstal.

String

Tidak

""

parameters

Parameter dalam perintah.

Json

Tidak

{}

OOSAssumeRole

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

String

Tidak

""

Parameter Keluaran

Parameter

Deskripsi

Tipe

imageId

String

Kebijakan Izin yang Diperlukan untuk Menjalankan Template

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:CreateImage",
                "ecs:DeleteInstance",
                "ecs:DescribeCloudAssistantStatus",
                "ecs:DescribeImages",
                "ecs:DescribeInstances",
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:InstallCloudAssistant",
                "ecs:RebootInstance",
                "ecs:RunCommand",
                "ecs:RunInstances",
                "ecs:StopInstance"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ros:CreateStack",
                "ros:DeleteStack",
                "ros:GetStack"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oos:GetTemplate",
                "oos:UpdateInstancePackageState"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oss:GetObject"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Referensi

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

Konten Template

FormatVersion: OOS-2019-06-01
Description:
  en:   en: 'Memperbarui citra ECS yang sudah ada dengan menjalankan perintah dan membuat citra ECS baru. Ini berlaku untuk skenario yang memerlukan pembaruan dan pengelolaan citra ECS secara massal, seperti instalasi perangkat lunak dan perubahan konfigurasi sistem. Selama konfigurasi, pengguna perlu menyediakan parameter wajib berikut: Region ID (regionId), yang menentukan wilayah tempat operasi pembuatan dan pembaruan citra terjadi, dan Source Image ID (sourceImageId), yang mengidentifikasi citra ECS asli yang perlu diperbarui. Parameter tambahan yang dapat dimodifikasi dari nilai defaultnya meliputi: Target Image Name (targetImageName) untuk penamaan citra ECS baru, Instance Type (instanceType) untuk tipe instans tempat menginstal dan mengonfigurasi citra baru, dan Update Type (updateType), yang dapat dipilih untuk menjalankan perintah atau menginstal paket. Setelah eksekusi, template akan mengembalikan ID citra baru yang dibuat, memudahkan verifikasi dan pengelolaan citra ECS yang dibuat.'
  zh-cn: deskripsi dalam bahasa Cina
  name-en: Perbarui Citra
  name-zh-cn: deskripsi dalam bahasa Cina
  categories:
    - image_manage
    - application_manage
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
      zh-cn: deskripsi dalam bahasa Cina
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  zoneId:
    Type: String
    Label:
      en: Zona Ketersediaan VSwitch
      zh-cn: deskripsi dalam bahasa Cina
    Default: ''
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    AssociationPropertyMetadata:
      RegionId: regionId
  targetImageName:
    Label:
      en: TargetImageName
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    Description:
      en: <p class="p">Catatan:</p> <ul class="ul"> <li class="li">Panjang adalah 2~128 karakter Inggris atau Cina</li> <li class="li"><font color='red'>harus dimulai dengan huruf besar atau kecil atau Cina, bukan http:// dan https://. </font></li> <li class="li">Dapat berisi angka, titik dua (:), garis bawah (_), atau tanda hubung (-). </li> </ul>
      zh-cn: deskripsi dalam bahasa Cina  </li> </ul>
    Default: 'UpdateImage_from_{{sourceImageId}}_on_{{ACS::ExecutionId}}'
  sourceImageId:
    Label:
      en: SourceImageId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Image::ImageId'
    AssociationPropertyMetadata:
      RegionId: regionId
      ImageOwnerAlias:
        - self
  instanceType:
    Label:
      en: InstanceType
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
    AssociationPropertyMetadata:
      RegionId: regionId
      ZoneId: zoneId
  whetherCreateVpc:
    Type: Boolean
    Label:
      en: WhetherCreateVpc
      zh-cn: deskripsi dalam bahasa Cina
    Default: false
  vpcCidrBlock:
    Type: String
    Label:
      en: Blok CIDR IPv4 VPC
      zh-cn: deskripsi dalam bahasa Cina
    Description:
      zh-cn: deskripsi dalam bahasa Cina
      en: 'Rentang alamat IP dari VPC dalam bentuk CidrBlock; <br>Anda dapat menggunakan rentang alamat IP berikut dan subnet mereka: <br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>'
    Default: 192.168.0.0/16
    AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - true
  vSwitchCidrBlock:
    Type: String
    Label:
      en: Blok CIDR VSwitch
      zh-cn: deskripsi dalam bahasa Cina
    Description:
      zh-cn: deskripsi dalam bahasa Cina
      en: Harus termasuk dalam segmen subnet VPC
    Default: 192.168.1.0/24
    AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
    AssociationPropertyMetadata:
      VpcCidrBlock: vpcCidrBlock
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - true
  securityGroupId:
    Label:
      en: SecurityGroupId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    Default: ''
    AssociationProperty: 'ALIYUN::ECS::SecurityGroup::SecurityGroupId'
    AssociationPropertyMetadata:
      RegionId: regionId
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - false
  vSwitchId:
    Label:
      en: VSwitchId
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    Default: ''
    AssociationProperty: 'ALIYUN::VPC::VSwitch::VSwitchId'
    AssociationPropertyMetadata:
      RegionId: regionId
      ZoneId: zoneId
      Filters:
        - SecurityGroupId: securityGroupId
      Visible:
        Condition:
          Fn::Equals:
            - ${whetherCreateVpc}
            - false
  internetMaxBandwidthOut:
    Type: Number
    Label:
      zh-cn: deskripsi dalam bahasa Cina
      en: Bandwidth Publik Maksimum
    Description:
      zh-cn: deskripsi dalam bahasa Cina
      en: tidak ada ip publik jika nol
    Default: 0
    MinValue: 0
    MaxValue: 100
  ramRoleName:
    Label:
      en: RamRoleName
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationProperty: ALIYUN::ECS::RAM::Role
    Default: ''
  systemDiskCategory:
    Label:
      en: SystemDiskCategory
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      RegionId: regionId
      InstanceType: instanceType
    Default: cloud_essd
  commandType:
    Label:
      en: CommandType
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationPropertyMetadata:
      LocaleKey: PricingCycle
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - RunCommand
    AllowedValues:
      - RunBatScript
      - RunPowerShellScript
      - RunShellScript
    Default: RunShellScript
  tags:
    Label:
      en: Tags
      zh-cn: deskripsi dalam bahasa Cina
    Type: Json
    AssociationProperty: Tags
    AssociationPropertyMetadata:
      ShowSystem: false
    Default: []
  commandContent:
    Label:
      en: CommandContent
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationProperty: Code
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - RunCommand
    Default: 'echo hello'
  timeout:
    Label:
      en: Timeout
      zh-cn: deskripsi dalam bahasa Cina
    Type: Number
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - RunCommand
    Default: 600
  updateType:
    Label:
      en: UpdateType
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AllowedValues:
      - RunCommand
      - InstallPackage
    Default: RunCommand
    AssociationPropertyMetadata:
      ValueLabelMapping:
        RunCommand:
          zh-cn: deskripsi dalam bahasa Cina
          en: RunCommand
        InstallPackage:
          zh-cn: deskripsi dalam bahasa Cina
          en: InstallPackage
  packageName:
    Label:
      en: packageName
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    Default: ''
    AssociationProperty: 'ALIYUN::OOS::Package::PackageName'
    AssociationPropertyMetadata:
      RegionId: regionId
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - InstallPackage
  packageVersion:
    Label:
      en: packageVersion
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    AssociationProperty: 'ALIYUN::OOS::Package::PackageVersion'
    AssociationPropertyMetadata:
      TemplateName: ${packageName}
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - InstallPackage
    Default: ''
  parameters:
    Label:
      en: Parameters
      zh-cn: deskripsi dalam bahasa Cina
    Type: Json
    Default: {}
    AssociationProperty: TemplateParameter
    AssociationPropertyMetadata:
      TemplateName: packageName
      TemplateVersion: packageVersion
      TemplateType: Package
      Visible:
        Condition:
          Fn::Equals:
            - ${updateType}
            - InstallPackage
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
      zh-cn: deskripsi dalam bahasa Cina
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: checkNewImageName
  Action: ACS::CheckFor
  Description:
    en: Periksa apakah nama citra tersedia
    zh-cn: deskripsi dalam bahasa Cina
  Properties:
    Service: ECS
    API: DescribeImages
    Parameters:
      RegionId: '{{ regionId }}'
      ImageName: '{{ targetImageName }}'
    DesiredValues:
    - 0
    PropertySelector: TotalCount
- Name: createStack
  Action: 'ACS::ExecuteAPI'
  When:
    Fn::Equals:
      - '{{ whetherCreateVpc }}'
      - true
  Description:
    en: Buat tumpukan sumber daya
    zh-cn: deskripsi dalam bahasa Cina
  Properties:
    Service: ROS
    API: CreateStack
    Parameters:
      RegionId: '{{ regionId  }}'
      StackName: 'OOS-{{ACS::ExecutionId}}'
      TimeoutInMinutes: 10
      DisableRollback: false
      Parameters:
        - ParameterKey: ZoneId
          ParameterValue: '{{ zoneId }}'
        - ParameterKey: VpcCidrBlock
          ParameterValue: '{{ vpcCidrBlock  }}'
        - ParameterKey: VSwitchCidrBlock
          ParameterValue: '{{ vSwitchCidrBlock  }}'
      TemplateBody: |
        ROSTemplateFormatVersion: '2015-09-01'
        Parameters:
          ZoneId:
            Type: String
          VpcCidrBlock:
            Type: String
          VSwitchCidrBlock:
            Type: String
        Resources:
          EcsVpc:
            Type: ALIYUN::ECS::VPC
            Properties:
              CidrBlock:
                Ref: VpcCidrBlock
              VpcName:
                Ref: ALIYUN::StackName
          EcsVSwitch:
            Type: ALIYUN::ECS::VSwitch
            Properties:
              ZoneId:
                Ref: ZoneId
              VpcId:
                Ref: EcsVpc
              CidrBlock:
                Ref: VSwitchCidrBlock
          EcsSecurityGroup:
            Type: ALIYUN::ECS::SecurityGroup
            Properties:
              VpcId:
                Ref: EcsVpc
        Outputs:
          SecurityGroupId:
            Value:
              Ref: EcsSecurityGroup
          VSwitchId:
            Value:
              Ref: EcsVSwitch
  Outputs:
    StackId:
      Type: String
      ValueSelector: StackId
- Name: untilStackReady
  Action: 'ACS::WaitFor'
  When:
    Fn::Equals:
      - '{{ whetherCreateVpc }}'
      - true
  Description:
    en: Tunggu status tumpukan CREATE_COMPLETE
    zh-cn: deskripsi dalam bahasa Cina
  OnError: deleteStack
  Properties:
    Service: ROS
    API: GetStack
    Parameters:
      RegionId: '{{ regionId  }}'
      StackId: '{{createStack.StackId}}'
    DesiredValues:
      - CREATE_COMPLETE
    StopRetryValues:
      - CREATE_FAILED
      - CHECK_FAILED
      - ROLLBACK_FAILED
      - ROLLBACK_COMPLETE
      - CREATE_ROLLBACK_COMPLETE
    PropertySelector: Status
  Outputs:
    securityGroupId:
      Type: String
      ValueSelector: 'Outputs[0].OutputValue'
    vSwitchId:
      Type: String
      ValueSelector: 'Outputs[1].OutputValue'
- Name: runInstances
  Action: ACS::ECS::RunInstances
  Description:
    en: Buat instans ECS dengan citra sumber
    zh-cn: deskripsi dalam bahasa Cina
  OnError: deleteStack
  Properties:
    regionId: '{{ regionId }}'
    imageId: '{{ sourceImageId }}'
    instanceType: '{{ instanceType }}'
    securityGroupId:
      Fn::If:
        - Fn::Equals:
            - '{{ whetherCreateVpc }}'
            - true
        - '{{ untilStackReady.securityGroupId }}'
        - '{{ securityGroupId }}'
    vSwitchId:
      Fn::If:
        - Fn::Equals:
            - '{{ whetherCreateVpc }}'
            - true
        - '{{ untilStackReady.vSwitchId }}'
        - '{{ vSwitchId }}'
    internetMaxBandwidthOut: '{{ internetMaxBandwidthOut }}'
    ramRoleName: '{{ ramRoleName }}'
    systemDiskCategory: '{{ systemDiskCategory }}'
  Outputs:
    instanceId:
      ValueSelector: instanceIds[0]
      Type: String
- Name: installCloudAssistant
  Action: ACS::ECS::InstallCloudAssistant
  Description:
    en: Instal asisten cloud untuk instans ECS
    zh-cn: deskripsi dalam bahasa Cina
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    instanceId: '{{ runInstances.instanceId }}'
- Name: runCommand
  Action: ACS::ECS::RunCommand
  When:
    Fn::Equals:
      - '{{ updateType }}'
      - RunCommand
  Description:
    en: Jalankan perintah asisten cloud pada instans ECS
    zh-cn: deskripsi dalam bahasa Cina
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    commandContent: '{{ commandContent }}'
    commandType: '{{ commandType }}'
    instanceId: '{{ runInstances.instanceId }}'
    timeout: '{{ timeout }}'
- Name: configurePackage
  Action: ACS::ECS::ConfigureOOSPackageWithTemporaryURL
  Description:
    en: Konfigurasi Paket
    zh-cn: deskripsi dalam bahasa Cina
  When:
    Fn::Equals:
      - '{{ updateType }}'
      - InstallPackage
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    instanceId: '{{ runInstances.instanceId }}'
    packageName: '{{ packageName }}'
    packageVersion: '{{ packageVersion }}'
    parameters: '{{ parameters }}'
  Outputs:
    commandOutput:
      Type: String
      ValueSelector: .commandOutput
- Name: stopInstance
  Action: ACS::ECS::StopInstance
  Description:
    en: Menghentikan instans ECS
    zh-cn: deskripsi dalam bahasa Cina
  Properties:
    regionId: '{{ regionId }}'
    instanceId: '{{ runInstances.instanceId }}'
- Name: createImage
  Action: ACS::ECS::CreateImage
  Description:
    en: Buat citra baru dengan nama citra dan ID instans yang ditentukan
    zh-cn: deskripsi dalam bahasa Cina
  OnError: deleteInstance
  Properties:
    regionId: '{{ regionId }}'
    imageName: '{{ targetImageName }}'
    instanceId: '{{ runInstances.instanceId }}'
    tags: '{{tags}}'
  Outputs:
    imageId:
      ValueSelector: imageId
      Type: String
- Name: deleteInstance
  Action: ACS::ExecuteAPI
  Description:
    en: Menghapus instans ECS
    zh-cn: deskripsi dalam bahasa Cina
  Properties:
    Service: ECS
    API: DeleteInstance
    Risk: Normal
    Parameters:
      RegionId: '{{ regionId }}'
      InstanceId: '{{ runInstances.instanceId }}'
      Force: true
- Name: deleteStack
  Action: 'ACS::ExecuteApi'
  When:
    Fn::Equals:
      - '{{ whetherCreateVpc }}'
      - true
  Description:
    en: Hapus tumpukan
    zh-cn: deskripsi dalam bahasa Cina
  Properties:
    Service: ROS
    API: DeleteStack
    Parameters:
      RegionId: '{{ regionId  }}'
      StackId: '{{ createStack.StackId }}'
Outputs:
  imageId:
    Type: String
    Value: '{{ createImage.imageId }}'
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - regionId
          - sourceImageId
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Pilih Citra Asli
      - Parameters:
          - targetImageName
          - tags
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Konfigurasi Citra
      - Parameters:
          - zoneId
          - instanceType
          - whetherCreateVpc
          - vpcCidrBlock
          - vSwitchCidrBlock
          - securityGroupId
          - vSwitchId
          - internetMaxBandwidthOut
          - systemDiskCategory
          - ramRoleName
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Konfigurasi Instans ECS
      - Parameters:
          - updateType
          - packageName
          - packageVersion
          - parameters
          - commandType
          - commandContent
          - timeout
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Konfigurasi Pembaruan Citra
      - Parameters:
          - OOSAssumeRole
        Label:
          default:
            zh-cn: deskripsi dalam bahasa Cina
            en: Opsi Kontrol