Todos os produtos
Search
Central de documentação

Compute Nest:Pacote de implantação de imagem ECS

Última atualização: Sep 06, 2026

Este tópico explica o funcionamento de um pacote de implantação de imagem ECS e orienta você na criação e no uso desse recurso.

Contexto

  • Por que usar um pacote de implantação de imagem ECS?

    Ao implantar services, é comum utilizar imagens ECS para oferecer suporte a implantações em várias regiões. No entanto, como as imagens ECS são específicas por região, você precisa replicá-las em cada região de destino e especificar o ID da imagem correspondente no modelo para cada uma delas. Esse processo, que envolve replicação de imagem, mapeamento e gerenciamento de permissões, deve ser repetido para cada nova versão da imagem, tornando-o complexo e trabalhoso.

  • Benefícios de um pacote de implantação de imagem ECS

    Como provedor de services, basta configurar a associação do pacote de implantação de imagem ECS no console do Compute Nest.

    • Replicação de imagem: O Compute Nest replica sua imagem de source para uma conta compartilhada do Compute Nest e, em seguida, a replica em várias regiões sob essa conta.

    • Mapeamento de imagem: O Compute Nest verifica se um ImageId está definido no modelo. Em caso afirmativo, associe o ImageId a um pacote de implantação de imagem ECS na página de detalhes do service. Quando um usuário implanta o service, o Compute Nest identifica a região de implantação e substitui automaticamente o ImageId no modelo pelo ID correto da imagem daquela região, permitindo o mapeamento dinâmico de imagens.

    • Gerenciamento de permissões: As permissões de um pacote de implantação são determinadas pelo service associado. Se um pacote de implantação não estiver associado a nenhum service, ele será privado e disponível apenas para o provedor do service. Caso esteja associado a pelo menos um service público, o pacote de implantação se tornará público. Se estiver associado apenas a services privados, permanecerá privado. Nesse cenário, ao adicionar uma lista de permissões ao service, ela também se aplicará ao pacote de implantação.

Limitações

Um pacote de implantação de imagem ECS pode substituir o ID da imagem dos seguintes recursos de cloud nos modelos.

ROS

Se você utilizar o ROS para implantação, inclua o ID da imagem, ImageId, na seção Resource do modelo ROS.

Terraform

Caso utilize o Terraform para implantação, inclua o ID da imagem, image_id, no modelo.

  • Tipos de recursos de cloud suportados:

  • Propriedade do recurso: image_id.

  • O valor do atributo do recurso deve ser uma string (o ID da imagem). Parâmetros de entrada do modelo ou outras funções integradas do modelo não são permitidos.

Criar e usar um pacote de implantação

Pré-requisitos

Prepare uma imagem ECS. O Compute Nest oferece suporte a imagens personalizadas e imagens do Alibaba Cloud Marketplace. Escolha o tipo que melhor atende às suas necessidades.

Criar um pacote de implantação de imagem ECS

  1. Configure as informações básicas do pacote de implantação.

    1. Faça login no console do Compute Nest. No painel de navegação à esquerda, escolha Service Deployment Package. Na aba Packages, clique em Create Deployment Package.

    2. Na seção Basic Information, configure os seguintes parâmetros.

      Parâmetro

      Descrição

      Deployment Package Name

      O nome pode conter caracteres chineses, letras inglesas, dígitos e sublinhados (_). Deve ter entre 3 e 128 caracteres, considerando que um caractere chinês equivale a dois caracteres. Não é possível alterar o nome do pacote de implantação após a criação.

      Version Name

      O nome pode conter caracteres chineses, letras inglesas, dígitos e sublinhados (_). Deve ter entre 3 e 50 caracteres, considerando que um caractere chinês equivale a dois caracteres.

      Description

      A descrição deve ter entre 10 e 500 caracteres. Um caractere chinês conta como dois caracteres.

      Resource Group

      Selecione o grupo de recursos ao qual o pacote de implantação pertence.

      Os grupos de recursos permitem agrupar seus recursos de cloud por uso, permissões ou propriedade, possibilitando o gerenciamento hierárquico de recursos para múltiplos usuários e projetos dentro de uma organização. Para mais informações, consulte resource groups.

      Tag Settings

      Selecione ou insira uma chave de tag e um valor de tag completos para adicionar uma tag ao pacote de implantação. É possível vincular até 20 tags a um recurso. Se não houver chaves ou valores disponíveis, crie uma tag personalizada. Para mais informações, consulte Create and bind a custom tag.

  2. Configure o pacote de implantação de imagem ECS.

    1. Na seção Deployment Package Content, defina Deployment Package Type como ECS Image. Para Image Type e Select Product, selecione a imagem preparada nos pré-requisitos.

    2. Na seção Distribution Settings, configure a Distribution Region. Este exemplo utiliza All Regions.

      Importante

      É necessário selecionar pelo menos uma região de distribuição para um pacote de implantação de imagem ECS.

    3. Clique em Publish Deployment Package.

      Após a publicação, não é possível modificar uma versão do pacote de implantação. Para fazer alterações, crie uma nova versão ou um novo pacote de implantação.

      Nota
      • Para testar o pacote de implantação, clique em Save Deployment Package. Após concluir os testes, clique em Publish Deployment Package.

      • Se o pacote de implantação não for publicado, não será possível testá-lo nas regiões de distribuição configuradas. O teste só pode ser realizado na região onde a imagem reside.

  3. Visualize o pacote de implantação.

    1. Retorne à página Service deployment package. Clique no nome do pacote de implantação recém-criado para acessar a página Deployment Package Details e visualizar o progresso da implantação.

    2. Quando o status mudar para Available, clique em View para obter os Distribution Results do pacote de implantação de imagem ECS.

    Nota

    O tempo de distribuição da imagem pode variar de alguns minutos a várias horas, dependendo da região e do tamanho da imagem.

  4. Usar um pacote de implantação de imagem ECS

    Esta seção utiliza um service privado como exemplo e foca na configuração do pacote de implantação de imagem ECS durante a criação de um service.

    1. Faça login no console do Compute Nest.

    2. No painel de navegação à esquerda, clique em My Services. Na aba Created Services da página My Services, clique em Create Service.

    3. Na página Create New Service, selecione Custom launch como método de criação, escolha Private Service como tipo de service e clique em Next: Configure Settings.

    4. Na página Configure Service, preencha as informações básicas do service e forneça um modelo. Esta seção utiliza um modelo ROS como exemplo.

    5. Se o Template Content incluir o ID da imagem ImageId, a seção Deployment package association aparecerá, permitindo que você Set image association.

      O sistema analisa automaticamente as informações da imagem no modelo, exibindo a Image to be replaced como centos_7 e o Associated resource como EcsInstanceGroup. Clique em Select deployment package para concluir a associação.

      Modelo de exemplo

      Nota

      Este modelo de exemplo serve apenas para fins de teste.

      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: 10.0.0.0/8172.16.0.0/12192.168.0.0/16'
          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.
      
    6. Clique em Select Deployment Package, selecione um pacote de implantação e uma versão e, em seguida, clique em OK para associar o pacote de implantação de imagem ECS.

      Importante
      • Se você selecionar uma draft version, a imagem ECS nessa versão não será distribuída. A imagem estará disponível apenas na região onde foi criada.

      • Ao selecionar uma published version, a imagem ECS estará disponível na região de source e em todas as regiões distribuídas.

      Neste exemplo, a imagem a ser substituída é centos_7. Na caixa de diálogo, selecione o pacote de implantação SpringBootEcsImage e escolha Version 1.

    7. Após criar e testar o service, certifique-se de que ele atenda aos critérios de revisão do Compute Nest e envie-o para revisão. Para mais informações, consulte Review criteria.

    8. Depois que o service for aprovado, publique-o. Para mais informações, consulte Publish a service.

      Após a criação de uma instância de service, o ID da imagem é substituído automaticamente pelo distribution result correspondente do pacote de implantação.

      • Antes da substituição:

        SecurityGroupId:
                  Ref: EcsSecurityGroup
                ImageId: centos_7
                IoOptimized: optimized
                InstanceChargeType:
                  Ref: InstanceChargeType
      • Após a substituição:

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

    Documentos relacionados

    • Para mais informações sobre como criar um service no Compute Nest, consulte Create a service.

    • Caso não precise mais de um pacote de implantação ou de uma versão específica, exclua-o. Para mais informações, consulte Delete a deployment package.

    • Para alterar o conteúdo de um pacote de implantação, as regiões de distribuição ou outros detalhes, crie uma nova versão. Para mais informações, consulte Create a new version.

    • Para definir configurações de atualização de um pacote de implantação, consulte Configure service upgrades.