All Products
Search
Document Center

Compute Nest:Paket penyebaran citra ECS

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara kerja paket penyebaran citra ECS serta memandu Anda dalam membuat dan menggunakannya.

Latar Belakang

  • Mengapa menggunakan paket penyebaran citra ECS?

    Saat menyebarkan layanan, Anda sering menggunakan citra ECS untuk mendukung penyebaran di beberapa wilayah. Namun, karena citra ECS bersifat spesifik per wilayah, Anda harus mereplikasi citra tersebut ke setiap wilayah target dan menentukan ID citra yang sesuai dalam templat untuk masing-masing wilayah. Proses ini—yang mencakup replikasi citra, pemetaan, dan pengelolaan izin—harus diulang untuk setiap versi citra baru, sehingga menjadi kompleks dan membosankan.

  • Manfaat paket penyebaran citra ECS

    Sebagai penyedia layanan, Anda hanya perlu mengonfigurasi asosiasi untuk paket penyebaran citra ECS di Konsol Compute Nest.

    • Replikasi citra: Compute Nest mereplikasi citra sumber Anda ke akun Compute Nest bersama, lalu mereplikasinya ke berbagai wilayah di bawah akun tersebut.

    • Pemetaan citra: Compute Nest memeriksa apakah ImageId telah ditetapkan dalam templat. Jika iya, Anda dapat mengaitkan ImageId tersebut dengan paket penyebaran citra ECS pada halaman detail layanan. Saat pengguna menyebarkan layanan, Compute Nest mengidentifikasi wilayah penyebaran dan secara otomatis mengganti ImageId dalam templat dengan ID citra yang sesuai untuk wilayah tersebut, sehingga memungkinkan pemetaan citra dinamis.

    • Pengelolaan izin: Izin paket penyebaran ditentukan oleh layanan yang terkait. Jika paket penyebaran tidak dikaitkan dengan layanan apa pun, maka bersifat privat dan hanya tersedia bagi penyedia layanan. Jika dikaitkan dengan setidaknya satu layanan publik, paket penyebaran menjadi publik. Jika hanya dikaitkan dengan layanan privat, maka tetap privat. Dalam kasus ini, daftar putih yang ditambahkan ke layanan juga berlaku untuk paket penyebaran.

Batasan

Paket penyebaran citra ECS dapat menggantikan ID citra untuk sumber daya cloud berikut dalam templat.

ROS

Jika Anda menggunakan ROS untuk penyebaran, Anda harus menyertakan ID citra, ImageId, dalam bagian Resource templat ROS.

Terraform

Jika Anda menggunakan Terraform untuk penyebaran, Anda harus menyertakan ID citra, image_id, dalam templat.

  • Jenis sumber daya cloud yang didukung:

  • Properti resource: image_id.

  • Nilai atribut resource harus berupa string (ID citra). Parameter input templat atau fungsi bawaan templat lainnya tidak diperbolehkan.

Buat dan gunakan paket penyebaran

Prasyarat

Siapkan citra ECS. Compute Nest mendukung custom image dan Gambar Marketplace Alibaba Cloud. Pilih jenis yang sesuai dengan kebutuhan Anda.

  • Custom image: Anda dapat memilih citra ECS yang sudah ada dari akun Anda.

    Jika belum memiliki custom image, buat custom image terlebih dahulu. Untuk informasi lebih lanjut, lihat Buat custom image dari instans.

  • Gambar Marketplace Alibaba Cloud: Anda dapat memilih produk dan versi citra yang dipublikasikan di Alibaba Cloud Marketplace.

    Anda dapat menemukan produk citra yang sesuai di Alibaba Cloud Marketplace.

Buat paket penyebaran citra ECS

  1. Konfigurasikan informasi dasar untuk paket penyebaran.

    1. Login ke Konsol Compute Nest. Di panel navigasi kiri, pilih Service Deployment Package. Pada tab Packages, klik Create Deployment Package.

    2. Di bagian Basic Information, konfigurasikan parameter berikut.

      Parameter

      Deskripsi

      Deployment Package Name

      Nama dapat berisi karakter Tionghoa, huruf Inggris, angka, dan garis bawah (_). Nama harus terdiri dari 3 hingga 128 karakter, dengan satu karakter Tionghoa dihitung sebagai dua karakter. Nama paket penyebaran tidak dapat diubah setelah dibuat.

      Version Name

      Nama dapat berisi karakter Tionghoa, huruf Inggris, angka, dan garis bawah (_). Nama harus terdiri dari 3 hingga 50 karakter, dengan satu karakter Tionghoa dihitung sebagai dua karakter.

      Description

      Deskripsi harus terdiri dari 10 hingga 500 karakter. Satu karakter Tionghoa dihitung sebagai dua karakter.

      Resource Group

      Pilih kelompok sumber daya tempat paket penyebaran berada.

      Kelompok sumber daya memungkinkan Anda mengelompokkan sumber daya cloud berdasarkan penggunaan, izin, atau kepemilikan, sehingga memungkinkan manajemen sumber daya hierarkis untuk banyak pengguna dan proyek dalam suatu organisasi. Untuk informasi lebih lanjut, lihat resource groups.

      Tag Settings

      Pilih atau masukkan kunci tag dan nilai tag lengkap untuk menambahkan tag ke paket penyebaran. Anda dapat mengikat hingga 20 tag ke satu sumber daya. Jika tidak tersedia kunci atau nilai tag, Anda dapat membuat custom tag. Untuk informasi lebih lanjut, lihat Create and bind a custom tag.

  2. Konfigurasikan paket penyebaran citra ECS.

    1. Di bagian Deployment Package Content, atur Deployment Package Type menjadi ECS Image. Untuk Image Type dan Select Product, pilih citra yang telah Anda siapkan pada prasyarat.

    2. Di bagian Distribution Settings, pilih Distribution Region. Contoh ini menggunakan All Regions.

      Penting

      Anda harus memilih setidaknya satu wilayah distribusi untuk paket penyebaran citra ECS.

    3. Klik Publish Deployment Package.

      Setelah dipublikasikan, versi paket penyebaran tidak dapat diubah. Untuk melakukan perubahan, Anda harus membuat versi baru atau paket penyebaran baru.

      Catatan
      • Untuk menguji paket penyebaran, klik Save Deployment Package. Setelah pengujian selesai, klik Publish Deployment Package.

      • Jika paket penyebaran belum dipublikasikan, Anda tidak dapat mengujinya di wilayah distribusi yang dikonfigurasi. Anda hanya dapat mengujinya di wilayah tempat citra berada.

  3. Lihat paket penyebaran.

    1. Kembali ke halaman Service deployment package. Klik nama paket penyebaran yang baru dibuat untuk membuka halaman Deployment Package Details dan melihat progres penyebaran.

    2. Saat status berubah menjadi Available, klik View untuk melihat Distribution Results dari paket penyebaran citra ECS.

    Catatan

    Waktu distribusi citra dapat berkisar dari beberapa menit hingga beberapa jam, tergantung pada wilayah dan ukuran citra.

Gunakan paket penyebaran citra ECS

Bagian ini menggunakan layanan privat sebagai contoh dan berfokus pada konfigurasi paket penyebaran citra ECS saat Anda membuat layanan.

  1. Login ke Konsol Compute Nest.

  2. Di panel navigasi kiri, klik My Services. Pada tab Created Services di halaman My Services, klik Create Service.

  3. Di halaman Create New Service, pilih Custom launch sebagai metode pembuatan, pilih Private Service sebagai jenis layanan, lalu klik Next: Configure Settings.

  4. Di halaman Configure Service, isi informasi dasar layanan, lalu berikan templat. Bagian ini menggunakan templat ROS sebagai contoh.

  5. Jika Template Content mencakup ID citra ImageId, bagian Deployment package association akan muncul, tempat Anda dapat Set image association.

    Sistem secara otomatis mengurai informasi citra dari templat, menampilkan Image to be replaced sebagai centos_7 dan Associated resource sebagai EcsInstanceGroup`. Klik Select deployment package untuk menyelesaikan asosiasi.

    Contoh templat

    Catatan

    Templat contoh ini hanya untuk tujuan pengujian.

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      en: This template deploys a single instance from a custom image with a data disk.
        It supports creating a new VPC or specifying an existing one. A public IP is optional.
    Conditions:
      CreateVpcConditions:
        Fn::Equals:
        - true
        - Ref: WhetherCreateVpc
      IfAllocatePublicIP:
        Fn::Equals:
        - Ref: AllocatePublicIP
        - true
    Parameters:
      PayType:
        Type: String
        Label:
          en: ECS Instance Charge Type
        AssociationProperty: ChargeType
        AssociationPropertyMetadata:
          LocaleKey: InstanceChargeType
        Default: PostPaid
        AllowedValues:
          - PostPaid
          - PrePaid
      PayPeriodUnit:
        Type: String
        Label:
          en: Pay Period Unit
        AssociationProperty: PayPeriodUnit
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Not:
                Fn::Equals:
                  - ${PayType}
                  - PostPaid
        Default: Month
        AllowedValues:
          - Month
          - Year
      PayPeriod:
        Type: Number
        Label:
          en: Period
        AssociationProperty: PayPeriod
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Not:
                Fn::Equals:
                  - ${PayType}
                  - PostPaid
        Default: 1
        AllowedValues:
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
      EcsInstanceType:
        Type: String
        Label:
          en: Instance Type
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          ZoneId: ${ZoneId}
          InstanceChargeType: ${InstanceChargeType}
      ZoneId:
        Type: String
        Label:
          en: Availability Zone
        AssociationProperty: ALIYUN::ECS::Instance::ZoneId
      WhetherCreateVpc:
        Type: Boolean
        Label:
          en: Create New VPC
        Default: false
      VpcCidrBlock:
        Type: String
        Label:
          en: VPC IPv4 CIDR Block
        Description:
          en: 'The IPv4 CIDR block for the VPC. You can use the following CIDR blocks or their
            subnets: <br/><font>10.0.0.0/8</font><br/><font>172.16.0.0/12</font><br/><font>192.168.0.0/16</font>'
        AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - true
        Default: 192.168.0.0/16
      VSwitchCidrBlock:
        Type: String
        Label:
          en: VSwitch CIDR Block
        Description:
          en: Must be a subnet of the VPC.
        AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
        AssociationPropertyMetadata:
          VpcCidrBlock: VpcCidrBlock
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - true
        Default: 192.168.1.0/24
      VpcId:
        Type: String
        Label:
          en: VPC ID
        AssociationProperty: ALIYUN::ECS::VPC::VPCId
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - false
        Default: ''
      VSwitchId:
        Type: String
        Label:
          en: VSwitch ID
        AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
        AssociationPropertyMetadata:
          VpcId: ${VpcId}
          ZoneId: ${ZoneId}
          Visible:
            Condition:
              Fn::Equals:
              - ${WhetherCreateVpc}
              - false
        Default: ''
      InstancePassword:
        Type: String
        Label:
          en: Instance Password
        Description:
          en: The login password for the instance. It must be 8 to 30 characters long and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
        ConstraintDescription:
          en: The password must be 8 to 30 characters long and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
        AssociationProperty: ALIYUN::ECS::Instance::Password
        AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
        MinLength: 8
        MaxLength: 30
        NoEcho: true
      SystemDiskCategory:
        Type: String
        Label:
          en: System Disk Category
        AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
        AssociationPropertyMetadata:
          LocaleKey: DiskCategory
          InstanceType: ${EcsInstanceType}
        AllowedValues:
        - cloud_efficiency
        - cloud_ssd
        - cloud_essd
      SystemDiskSize:
        Type: Number
        Label:
          en: System Disk Size (GB)
        Default: 200
      DataDiskCategory:
        Type: String
        Label:
          en: Data Disk Type
        AssociationProperty: ALIYUN::ECS::Disk::DataDiskCategory
        AssociationPropertyMetadata:
          InstanceType: EcsInstanceType
          ZoneId: ZoneId
          LocaleKey: DiskCategory
      DataDiskSize:
        Type: Number
        Label:
          en: Data Disk Size (GB)
        Description:
          en: 'The size of the ECS instance data disk, in GiB. The value must be in the range of 20 to 32,768.'
        Default: 200
        MinValue: 20
        MaxValue: 32768
      AllocatePublicIP:
        Type: Boolean
        Label:
          en: Allocate Public IP
        Default: true
      InternetMaxBandwidthOut:
        Type: Number
        Label:
          en: Internet Max Bandwidth Out (Mbit/s)
        Description:
          en: The value must be in the range of 0 to 100. A value of 0 means no public IP is allocated.
        AssociationPropertyMetadata:
          Visible:
            Condition:
              Fn::Equals:
              - ${AllocatePublicIP}
              - true
        Default: 5
        MinValue: 0
        MaxValue: 100
    Resources:
      EcsVpc:
        Type: ALIYUN::ECS::VPC
        Condition: CreateVpcConditions
        Properties:
          CidrBlock:
            Ref: VpcCidrBlock
          VpcName:
            Ref: ALIYUN::StackName
      EcsVSwitch:
        Type: ALIYUN::ECS::VSwitch
        Condition: CreateVpcConditions
        Properties:
          ZoneId:
            Ref: ZoneId
          VpcId:
            Ref: EcsVpc
          CidrBlock:
            Ref: VSwitchCidrBlock
      EcsSecurityGroup:
        Type: ALIYUN::ECS::SecurityGroup
        Properties:
          # Set the security group name based on the software name.
          #SecurityGroupName: nginx-sg
          VpcId:
            Fn::If:
            - CreateVpcConditions
            - Ref: EcsVpc
            - Ref: VpcId
          # Set inbound rules based on the ports listened to by the software.
          # By default, all outbound ports are open in a security group.
          #SecurityGroupIngress:
          #  - PortRange: 80/80
          #    Priority: 1
          #    SourceCidrIp: 0.0.0.0/0
          #    IpProtocol: tcp
      EcsInstanceGroup:
        Type: ALIYUN::ECS::InstanceGroup
        Properties:
          ZoneId:
            Ref: ZoneId
          VpcId:
            Fn::If:
            - CreateVpcConditions
            - Ref: EcsVpc
            - Ref: VpcId
          VSwitchId:
            Fn::If:
            - CreateVpcConditions
            - Ref: EcsVSwitch
            - Ref: VSwitchId
          SecurityGroupId:
            Ref: EcsSecurityGroup
          ImageId: centos_7
          IoOptimized: optimized
          InstanceChargeType:
            Ref: PayType
          PeriodUnit:
            Ref: PayPeriodUnit
          Period:
            Ref: PayPeriod
          SystemDiskCategory:
            Ref: SystemDiskCategory
          # Adjust the system disk size as needed.
          SystemDiskSize:
            Ref: SystemDiskSize
          # Data disk configuration.
          DiskMappings:
          - Category:
              Ref: DataDiskCategory
            Size:
              Ref: DataDiskSize
          MaxAmount: 1
          InstanceType:
            Ref: EcsInstanceType
          Password:
            Ref: InstancePassword
          # Public bandwidth. A value of 0 means no public IP.
          InternetMaxBandwidthOut:
            Fn::If:
            - IfAllocatePublicIP
            - Ref: InternetMaxBandwidthOut
            - 0
          InstanceName:
            Fn::Join:
            - '-'
            - - Ref: ALIYUN::StackName
              - '[1,4]'
      WaitConditionHandle:
        Type: ALIYUN::ROS::WaitConditionHandle
        Properties: {}
      WaitCondition:
        Type: ALIYUN::ROS::WaitCondition
        Properties:
          Count: 1
          Handle:
            Ref: WaitConditionHandle
          # Timeout for command execution to complete.
          Timeout: 300
      InstanceRunCommand:
        Type: ALIYUN::ECS::RunCommand
        Properties:
          InstanceIds:
            Fn::GetAtt:
            - EcsInstanceGroup
            - InstanceIds
          CommandContent:
            Fn::Sub:
            - |
              #!/bin/bash
              # 1. If a data disk is used, format and mount it to a specified directory.
              #    This example assumes it is mounted to /data.
              init_and_mount_data_disk() {
                local fs_type=$1
                local mount_point=$2
                # Find disk devices (excluding partitions).
                devices=(`lsblk -o NAME,FSTYPE --noheadings --nodeps | awk '$2 == "" {print $1}'`)
                # Find disk devices that do not have a file system.
                for device in ${!devices[@]};
                do
                  lsblk -o NAME,FSTYPE --noheadings  | awk '$2 != "" {print $1}' | grep ${!device}
                  if [[ $? -eq 1 ]]; then
                    data_disk=${!device}
                    break
                  fi
                done
                # Create a file system for the data disk.
                mkfs -t ${!fs_type} /dev/${!data_disk}
                cp /etc/fstab /etc/fstab.bak
                mkdir ${!mount_point}
                # Update /etc/fstab and mount the disk.
                echo `blkid /dev/${!data_disk} | awk '{print $2}' | sed 's/\\\"//g'` ${!mount_point} ext4 defaults 0 0 >> /etc/fstab
                mount -a
              }
              # Mount the disk to /data.
              init_and_mount_data_disk ext4 /data
              # 2. Install software or perform initial configuration, such as pointing data file directories to the data disk.
              # yum install -y nginx
              # 3. To enable auto-start on boot, add and enable the system service.
              # systemctl enable nginx.service
              # 4. Configure the startup script or start the system service.
              # systemctl start nginx.service
              # 5. On success, send a callback to end the WaitCondition.
              ${CurlCli} -d "{\"Data\" : \"Success\", \"status\" : \"SUCCESS\"}"
              # If the script fails at any point, use the following command to return FAILURE and an error message.
              # ${CurlCli} -d "{\"Data\" : \"error message\", \"status\" : \"FAILURE\"}"
            - CurlCli:
                Fn::GetAtt:
                - WaitConditionHandle
                - CurlCli
          Type: RunShellScript
          # Set the timeout in seconds based on the expected command execution time.
          # If the command times out, the deployment fails.
          Timeout: 300
    # Outputs are defined according to software requirements.
    # The following is an example for NGINX, which outputs the public access address of the website.
    #Outputs:
    #  endpoint:
    #    Condition: IfAllocatePublicIP
    #    Description:
    #      en: Public IP Addresses
    #    Value:
    #      Fn::Sub:
    #        - http://${ServerAddress}
    #        - ServerAddress:
    #            Fn::Select:
    #              - 0
    #              - Fn::GetAtt:
    #                  - EcsInstanceGroup
    #                  - PublicIps
    Metadata:
      ALIYUN::ROS::Interface:
    ## The order of the parameter groups determines the parameter arrangement on the service instance creation page.
    ## If most instance types are applicable (e.g., x86 architecture), you can place the availability zone selection first, as shown in the comments.
    #    ParameterGroups:
    #      - Parameters:
    #          - ZoneId
    #        Label:
    #          default:
    #            en: Zone Configuration
    #      - Parameters:
    #          - WhetherCreateVpc
    #          - VpcCidrBlock
    #          - VSwitchCidrBlock
    #          - VpcId
    #          - VSwitchId
    #        Label:
    #          default:
    #            en: VPC Configuration
    #      - Parameters:
    #          - PayType
    #          - PayPeriodUnit
    #          - PayPeriod
    #        Label:
    #          default:
    #            en: Billing Configuration
    #      - Parameters:
    #          - EcsInstanceType
    #          - InstancePassword
    #          - SystemDiskCategory
    #          - SystemDiskSize
    #          - DataDiskCategory
    #          - DataDiskSize
    #          - AllocatePublicIP
    #          - InternetMaxBandwidthOut
    #        Label:
    #          default:
    #            en: Instance Configuration
        ParameterGroups:
        - Parameters:
            - PayType
            - PayPeriodUnit
            - PayPeriod
          Label:
            default:
              en: Billing Configuration
        - Parameters:
          - EcsInstanceType
          Label:
            default:
              en: ECS Instance Type Configuration
        - Parameters:
          - ZoneId
          Label:
            default:
              en: Zone Configuration
        - Parameters:
          - WhetherCreateVpc
          - VpcCidrBlock
          - VSwitchCidrBlock
          - VpcId
          - VSwitchId
          Label:
            default:
              en: VPC Configuration
        - Parameters:
          - InstancePassword
          - SystemDiskCategory
          - SystemDiskSize
          - DataDiskCategory
          - DataDiskSize
          - AllocatePublicIP
          - InternetMaxBandwidthOut
          Label:
            default:
              en: Detailed Instance Configuration
        TemplateTags:
        - acs:example:ISV software deployment:Single-instance custom image with optional data disk and public IP.
    <br/><br/><br/>
  6. Klik Select Deployment Package, pilih paket penyebaran dan versinya, lalu klik OK untuk mengaitkan paket penyebaran citra ECS.

    Penting
    • Jika Anda memilih draft version, citra ECS dalam versi tersebut belum didistribusikan. Citra hanya tersedia di wilayah tempat citra tersebut dibuat.

    • Jika Anda memilih published version, citra ECS tersedia di wilayah sumber dan semua wilayah distribusi.

    Dalam contoh ini, citra yang akan diganti adalah centos_7. Di kotak dialog, pilih paket penyebaran SpringBootEcsImage dan pilih Version 1.

  7. Setelah membuat dan menguji layanan, pastikan layanan tersebut memenuhi kriteria tinjauan Compute Nest, lalu kirimkan untuk ditinjau. Untuk informasi lebih lanjut, lihat Review criteria.

  8. Setelah layanan disetujui, publikasikan. Untuk informasi lebih lanjut, lihat Publish a service.

    Setelah instans layanan dibuat, ID citra secara otomatis diganti dengan distribution result yang sesuai dari paket penyebaran.

    • Sebelum penggantian:

      SecurityGroupId:
                Ref: EcsSecurityGroup
              ImageId: centos_7
              IoOptimized: optimized
              InstanceChargeType:
                Ref: InstanceChargeType
    • Setelah penggantian:

      InternetMaxBandwidthOut:
                Ref: InternetMaxBandwidthOut
              ImageId: m-bp1dxxx
              PeriodUnit:
                Ref: PayPeriodUnit

Dokumen terkait

  • Untuk informasi lebih lanjut tentang cara membuat layanan di Compute Nest, lihat Create a service.

  • Jika Anda tidak lagi memerlukan paket penyebaran atau versi tertentu, Anda dapat menghapusnya. Untuk informasi lebih lanjut, lihat Delete a deployment package.

  • Untuk mengubah konten paket penyebaran, wilayah distribusi, atau detail lainnya, buat versi baru. Untuk informasi lebih lanjut, lihat Create a new version.

  • Untuk mengonfigurasi pengaturan upgrade paket penyebaran, lihat Configure service upgrades.