Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 28, 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 serviços, é 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 de cada região. Esse processo envolve replicação de imagem, mapeamento e gerenciamento de permissões. Além disso, 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 serviços, 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 origem 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 serviço. Quando um usuário implanta o serviço, 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 dependem do serviço associado. Se um pacote de implantação não estiver associado a nenhum serviço, ele será privado e disponível apenas para o provedor de serviços. Caso esteja associado a pelo menos um serviço público, o pacote de implantação se tornará público. Se estiver associado apenas a serviços privados, permanecerá privado. Nesse cenário, ao adicionar uma lista de permissões ao serviço, 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 para os seguintes recursos de nuvem 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 nuvem compatíveis:

  • Propriedade do recurso: image_id.

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

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 atenda à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, onde um caractere chinês conta como dois caracteres.

      Description

      A descrição deve ter entre 10 e 500 caracteres. Um caractere chinês equivale a 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 nuvem 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 grupos de recursos.

      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 de tag disponíveis, crie uma tag personalizada. Para mais informações, consulte Criar e vincular uma tag personalizada.

  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

      É obrigató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 executado na região onde a imagem reside.

  3. Visualize o pacote de implantação.

    1. Retorne à página Pacote de implantação de serviço. 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.

Usar um pacote de implantação de imagem ECS

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

  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 serviço e clique em Next: Configure Settings.

  4. Na página Configure Service, preencha as informações básicas do serviço 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 a partir do 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 destina-se apenas a 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.

    • Se você selecionar uma published version, a imagem ECS estará disponível na região de origem 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 serviço, 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 Critérios de revisão.

  8. Depois que o serviço for aprovado, publique-o. Para mais informações, consulte Publicar um serviço.

    Após a criação de uma instância de serviço, o ID da imagem é substituído automaticamente pelo resultado de distribuição 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 serviço no Compute Nest, consulte Criar um serviço.

  • 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 Excluir um pacote de implantação.

  • 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 Criar uma nova versão.

  • Para definir configurações de atualização de um pacote de implantação, consulte Configurar atualizações de serviço.