Todos os produtos
Search
Central de documentação

Resource Orchestration Service:ALIYUN::ECI::ContainerGroup

Última atualização: Jun 30, 2026

Cria um grupo de contêineres Elastic Container Instance (ECI).

Sintaxe

{
  "Type": "ALIYUN::ECI::ContainerGroup",
  "Properties": {
    "SecurityContextSysctl": List,
    "Memory": Number,
    "InitContainer": List,
    "Cpu": Number,
    "EipInstanceId": String,
    "ContainerGroupName": String,
    "Container": List,
    "ImageSnapshotId": String,
    "DnsConfig": Map,
    "AutoMatchImageCache": Boolean,
    "Ipv6AddressCount": Integer,
    "ImageRegistryCredential": List,
    "SpotPriceLimit": Number,
    "InstanceType": String,
    "SpotStrategy": String,
    "ActiveDeadlineSeconds": Integer,
    "HostAliase": List,
    "ZoneId": String,
    "TerminationGracePeriodSeconds": Integer,
    "VSwitchId": String,
    "SecurityGroupId": String,
    "SlsEnable": Boolean,
    "RestartPolicy": String,
    "RamRoleName": String,
    "Volume": List,
    "AcrRegistryInfo": List,
    "Tag": List,
    "ResourceGroupId": String
  }
}

Propriedades

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

EipInstanceId

String

Não

Não

ID da instância EIP.

Nenhuma

Container

List

Sim

Sim

Contêineres no grupo de contêineres.

Propriedades de Container

DnsConfig

Map

Não

Sim

Configuração de DNS.

Propriedades de DnsConfig

InitContainer

List

Não

Sim

Lista de contêineres de inicialização.

Propriedades de InitContainer

SecurityGroupId

String

Não

Não

ID do grupo de segurança.

Instâncias no mesmo grupo de segurança podem se comunicar entre si.

ContainerGroupName

String

Sim

Não

Nome do grupo de contêineres.

Nenhuma

ZoneId

String

Não

Não

ID da zona onde a instância está localizada.

Padrão: nenhuma. O sistema seleciona uma zona automaticamente.

Volume

List

Não

Sim

Lista de volumes.

Máximo: 20.

Propriedades de Volume

HostAliase

List

Não

Não

Mapeamentos personalizados de nome de host para um contêiner no pod.

Propriedades de HostAliase

RestartPolicy

String

Não

Sim

Política de reinicialização da instância.

Valores válidos:

  • Always (padrão)

  • OnFailure

  • Never

ResourceGroupId

String

Não

Sim

ID do grupo de recursos.

Nenhuma

Tag

List

Não

Sim

Tags do grupo de contêineres como pares chave-valor.

Máximo: 20. Tanto a chave quanto o valor são strings.

Propriedades de Tag

VSwitchId

String

Não

Não

ID do vSwitch. Todas as instâncias ECI são instâncias VPC.

O número de endereços ip disponíveis no bloco CIDR do vSwitch determina o número máximo de instâncias ECI. Planeje o bloco CIDR com antecedência.

ImageRegistryCredential

List

Não

Sim

Credenciais para o registro de imagens de contêiner, incluindo endereço do servidor, nome de usuário e senha.

Propriedades de ImageRegistryCredential

Memory

Number

Não

Sim

Tamanho da memória.

Nenhuma

SlsEnable

Boolean

Não

Não

Indica se a coleta de logs do usuário está ativada.

Valores válidos:

  • true: Ativa a coleta de logs.

  • false (padrão): Desativa a coleta de logs.

SecurityContextSysctl

List

Não

Não

Contexto de segurança no qual a instância executa.

Propriedades de SecurityContext

Cpu

Number

Não

Sim

Número de vCPUs.

Nenhuma

ImageSnapshotId

String

Não

Não

ID do cache de imagem ou snapshot.

Nenhuma

SpotPriceLimit

Number

Não

Não

Preço horário máximo para a instância.

Suporta no máximo três casas decimais.

Este parâmetro só entra em vigor quando SpotStrategy está definido como SpotWithPriceLimit.

AutoMatchImageCache

Boolean

Não

Não

Indica se deve corresponder automaticamente a um cache de imagem.

Nenhuma

SpotStrategy

String

Não

Não

Política de preempção da instância.

Valores válidos:

  • NoSpot (padrão): Instância regular com pagamento conforme o uso.

  • SpotWithPriceLimit: Instância spot com preço máximo definido pelo usuário.

  • SpotAsPriceGo: Instância spot na qual o sistema oferece lances automaticamente com base no preço de mercado atual.

TerminationGracePeriodSeconds

Integer

Não

Não

Período de carência antes que o contêiner seja interrompido.

Unidade: segundos.

ActiveDeadlineSeconds

Integer

Não

Não

Prazo ativo para o grupo de contêineres.

Unidade: segundos.

Ipv6AddressCount

Integer

Não

Não

Número de endereços IPv6.

Nenhuma

RamRoleName

String

Não

Não

Nome da função ram da instância.

Instâncias ECI e ECS compartilham a mesma função ram de instância.

AcrRegistryInfo

List

Não

Não

Credenciais de acesso para uma instância do Container Registry Enterprise Edition.

Propriedades de AcrRegistryInfo

InstanceType

String

Não

Não

Tipo da instância.

Nenhuma

Sintaxe de Container

"Container": [
  {
    "EnvironmentVar": List,
    "Tty": Boolean,
    "SecurityContext": Map,
    "Name": String,
    "ImagePullPolicy": String,
    "Image": String,
    "Stdin": boolean,
    "WorkingDir": String,
    "LivenessProbe": Map,
    "Cpu": Number,
    "Command": List,
    "Memory": Number,
    "ReadinessProbe": Map,
    "VolumeMount": List,
    "Port": List,
    "Arg": List,
    "StdinOnce": Boolean
  }
]

Propriedades de Container

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

EnvironmentVar

List

Não

Não

Variáveis de ambiente no contêiner.

Cada variável é um par chave-valor de strings.

Máximo: 100.

Propriedades de EnvironmentVar

Tty

Boolean

Não

Não

Indica se um TTY deve ser alocado para este contêiner.

Valores válidos:

  • true: Aloca um TTY para este contêiner.

    Se definido como true, stdin também é definido como true.

  • false: Não aloca um TTY para este contêiner.

SecurityContext

Map

Não

Não

Contexto de segurança do grupo de contêineres.

Nenhuma

Name

String

Sim

Não

Nome do contêiner.

Nenhuma

ImagePullPolicy

String

Não

Não

Política de pull de imagem.

Nenhuma

Image

String

Sim

Não

Imagem.

Nenhuma

Stdin

Boolean

Não

Não

Indica se um buffer para entrada padrão deve ser alocado.

Valores válidos:

  • true: Aloca um buffer para entrada padrão.

  • false: Não aloca um buffer para entrada padrão.

WorkingDir

String

Não

Não

Diretório de trabalho do contêiner.

Nenhuma

LivenessProbe

Map

Não

Não

Sonda de atividade (liveness probe) do contêiner.

Propriedades de LivenessProbe

Cpu

Number

Não

Não

Número de CPUs alocadas ao contêiner.

Nenhuma

Command

List

Não

Não

Comandos a serem executados no contêiner.

Máximo: 1 comando. Comprimento máximo da string: 256 caracteres.

Memory

Number

Não

Não

Memória alocada ao contêiner.

Unidade: GiB.

ReadinessProbe

Map

Não

Não

Sonda de prontidão (readiness probe) do contêiner.

Propriedades de ReadinessProbe

VolumeMount

List

Não

Não

Montagens de volume do contêiner.

Máximo: 16.

Propriedades de VolumeMount

Port

List

Não

Não

Portas abertas e protocolos.

Máximo: 100 portas. Protocolos válidos:

  • tcp

  • UDP

Propriedades de Port

Arg

List

Não

Não

Argumentos passados para o comando.

Tipo String. Máximo: 10.

StdinOnce

Boolean

Não

Não

Indica se a entrada padrão deve ser fechada após a desconexão do cliente.

Valores válidos:

  • true: Fecha o canal.

  • false: Mantém o canal aberto.

Sintaxe de LivenessProbe

"LivenessProbe": {
  "TcpSocket.Port": Integer,
  "HttpGet.Scheme": String,
  "HttpGet.Port": Integer,
  "FailureThreshold": Integer,
  "InitialDelaySeconds": Integer,
  "TimeoutSeconds": Integer,
  "SuccessThreshold": Integer,
  "Exec.Command": List,
  "PeriodSeconds": Integer,
  "HttpGet.Path": String
}

Propriedades de LivenessProbe

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

TcpSocket.Port

Integer

Não

Não

Porta para a verificação via socket tcp.

Nenhuma

HttpGet.Scheme

String

Não

Não

Protocolo usado para conectar ao host.

Valores válidos:

  • HTTP

  • HTTPS

HttpGet.Port

Integer

Não

Não

Porta para a verificação HTTP GET.

Nenhuma

FailureThreshold

Integer

Não

Não

Número mínimo de falhas consecutivas para que a sonda seja considerada como falha.

As falhas devem ser consecutivas.

Valor padrão: 3.

InitialDelaySeconds

Integer

Não

Não

Tempo em segundos após o início do contêiner antes que a sonda seja iniciada.

Unidade: segundos.

TimeoutSeconds

Integer

Não

Não

Número de segundos após os quais a sonda atinge o tempo limite.

Valor mínimo: 1.

Valor padrão: 1.

SuccessThreshold

Integer

Não

Não

Número de verificações bem-sucedidas consecutivas necessárias para que a sonda seja considerada bem-sucedida após ter falhado.

Valor: 1.

Valor padrão: 1.

Exec.Command

List

Não

Não

Comando da sonda.

Nenhuma

PeriodSeconds

Integer

Não

Não

Período da sonda.

Unidade: segundos.

Valor mínimo: 1.

Valor padrão: 10.

HttpGet.Path

String

Não

Não

Caminho para a verificação HTTP GET.

Nenhuma

Sintaxe de DnsConfig

"DnsConfig": {
  "NameServer": List,
  "Search": List,
  "Option": List
}

Propriedades de DnsConfig

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

NameServer

List

Não

Não

Endereços ip dos servidores DNS.

Nenhuma

Search

List

Não

Não

Lista de domínios de pesquisa DNS.

Nenhuma

Option

List

Não

Não

Opções do resolvedor DNS.

Cada opção tem um nome e um valor opcional.

Propriedades de Option

Sintaxe de InitContainer

"InitContainer": [
  {
    "EnvironmentVar": List,
    "SecurityContext": Map,
    "Name": String,
    "Image": String,
    "Arg": List,
    "WorkingDir": String,
    "Port": List,
    "Command": List,
    "Memory": Number,
    "ImagePullPolicy": String,
    "VolumeMount": List,
    "Cpu": Number
  }
]

Propriedades de InitContainer

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

EnvironmentVar

List

Não

Não

Variáveis de ambiente no contêiner.

Cada variável é um par chave-valor de strings.

Máximo: 100.

Valor válido: status.podIP.

SecurityContext

Map

Não

Não

Contexto de segurança do grupo de contêineres.

Nenhuma

Name

String

Não

Não

Nome do contêiner.

Nenhuma

Image

String

Não

Não

Imagem do contêiner.

Nenhuma

Arg

List

Não

Não

Parâmetros passados para o comando.

Tipo String. Máximo: 10.

WorkingDir

String

Não

Não

Diretório de trabalho do contêiner.

Nenhuma

Port

List

Não

Não

Portas abertas e protocolos.

Máximo: 100 portas. Protocolos válidos:

  • tcp

  • UDP

Command

List

Não

Não

Comandos a serem executados no contêiner.

Máximo: 1 comando. Comprimento máximo da string: 256 caracteres.

Memory

Number

Não

Não

Memória alocada ao contêiner.

Unidade: GB.

ImagePullPolicy

String

Não

Não

Política de pull de imagem.

Nenhuma

VolumeMount

List

Não

Não

Montagens de volume do contêiner.

Suporta no máximo 16 volumes.

Cpu

Number

Não

Não

Número de CPUs alocadas ao contêiner.

Nenhuma

Sintaxe de Volume

"Volume": [
  {
    "NFSVolume.Path": String,
    "Name": String,
    "EmptyDirVolume.Medium": String,
    "NFSVolume.Server": String,
    "NFSVolume.ReadOnly": Boolean,
    "ConfigFileVolume.ConfigFileToPath": List,
    "Type": String,
    "FlexVolume.Options": Map,
    "FlexVolume.Driver": String,
    "FlexVolume.FsType": String
  }
]

Propriedades de Volume

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

NFSVolume.Path

String

Não

Não

Caminho do volume NFS.

Nenhuma

Name

String

Sim

Não

Nome do volume.

Nenhuma

EmptyDirVolume.Medium

String

Não

Não

Meio de armazenamento.

Por padrão, o sistema de arquivos no nó é utilizado.

Valor válido: Memory.

Se você definir o valor como Memory, o EmptyDirVolume será armazenado na memória.

NFSVolume.Server

String

Não

Não

Endereço ip do servidor NFS.

Nenhuma

NFSVolume.ReadOnly

Boolean

Não

Não

Propriedade somente leitura do volume NFS.

Valor padrão: false.

ConfigFileVolume.ConfigFileToPath

List

Não

Não

Caminho do arquivo de configuração.

Propriedades de ConfigFileVolume.ConfigFileToPath

Type

String

Sim

Não

Tipo do volume.

Valores válidos:

  • EmptyDirVolume

  • NFSVolume

  • ConfigFileVolume

FlexVolume.Options

Map

Não

Não

Lista de opções para o objeto FlexVolume.

As opções são pares chave-valor passados no formato JSON.

Por exemplo, ao montar um disco em nuvem usando FlexVolume, o formato de Options é {"volumeId":"d-2zehdahrwoa7srg****","performanceLevel": "PL2"}.

FlexVolume.Driver

String

Não

Não

Nome do driver usado para FlexVolume.

Nenhuma

FlexVolume.FsType

String

Não

Não

Tipo do sistema de arquivos a ser montado.

Nenhuma

Sintaxe de HostAliase

"HostAliase": [
  {
    "Ip": String,
    "Hostname": List
  }
]

Propriedades de HostAliase

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Ip

String

Não

Não

Endereço ip.

Nenhuma

Hostname

List

Não

Não

Nome do host.

Nenhuma

Sintaxe de ImageRegistryCredential

"ImageRegistryCredential": [
  {
    "UserName": String,
    "Password": String,
    "Server": String
  }
]

Propriedades de ImageRegistryCredential

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

UserName

String

Sim

Não

Nome de usuário para o registro de imagens.

Nenhuma

Password

String

Sim

Não

Senha para o registro de imagens.

Nenhuma

Server

String

Sim

Não

Endereço do registro de imagens.

Especifique sem prefixo de protocolo.

Por exemplo, http:// ou https://.

Sintaxe de EnvironmentVar

"EnvironmentVar": {
  "Key": String,
  "Value": String,
  "FieldRef.FieldPath": String
}

Propriedades de EnvironmentVar

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Key

String

Não

Não

Nome da variável.

1 a 128 caracteres. Não pode começar com um dígito. Pode conter dígitos, letras e sublinhados (_).

Value

String

Não

Não

Valor da variável.

0 a 256 caracteres.

FieldRef.FieldPath

String

Não

Não

Referência a outra variável.

Atualmente, apenas status.podIP é suportado.

Sintaxe de SecurityContext

"SecurityContext": {
  "Capability.Add": List,
  "RunAsUser": Integer,
  "ReadOnlyRootFilesystem": Boolen
}

Propriedades de SecurityContext

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Capability.Add

List

Não

Não

Capacidades que podem ser adicionadas ao contêiner.

Valor válido: ["NET_ADMIN"].

RunAsUser

Integer

Não

Não

ID do usuário.

Nenhuma

ReadOnlyRootFilesystem

Boolean

Não

Não

Indica se o sistema de arquivos raiz é somente leitura.

Valor padrão: true.

Sintaxe de VolumeMount

"VolumeMount": [
  {
    "Name": String,
    "ReadOnly": Boolean,
    "MountPath": String,
    "MountPropagation": String,
    "SubPath": String
  }
]

Propriedades de VolumeMount

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Name

String

Não

Não

Nome do volume.

O nome é igual ao valor especificado para o parâmetro name na seção Volume.

ReadOnly

Boolean

Não

Não

Propriedade somente leitura.

Valor padrão: false.

MountPath

String

Não

Não

Caminho de montagem.

Os dados no diretório de destino são sobrescritos pelo volume montado.

MountPropagation

String

Não

Não

Configuração de propagação de montagem para o volume.

A propagação de montagem permite que um volume montado por um contêiner seja compartilhado com outros contêineres no mesmo pod, ou até mesmo com outros pods no mesmo nó. Valores válidos:

  • None: O volume não detecta quaisquer operações de montagem subsequentes realizadas neste volume ou em seus subdiretórios.

  • HostToCotainer: O volume detecta operações de montagem subsequentes neste volume ou em seus subdiretórios.

  • Bidirectional: Semelhante a HostToCotainer, detecta operações de montagem. Além disso, o volume é propagado de volta para o host e para todos os contêineres de todos os pods que usam o mesmo volume.

SubPath

String

Não

Não

Subdiretório dentro do volume.

Isso permite que um pod monte diretórios diferentes sob o mesmo volume em diretórios distintos dentro de um contêiner.

Sintaxe de Port

"Port": [
  {
    "Port": Interger,
    "Protocol": String
  }
]

Propriedades de Port

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Port

Integer

Não

Não

Número da porta.

O valor deve estar no intervalo de 1 a 65.535.

Protocol

String

Não

Não

Protocolo usado pela porta.

Valores válidos:

  • tcp

  • UDP

Sintaxe de ConfigFileVolume.ConfigFileToPath

"ConfigFileVolume.ConfigFileToPath": [
  {
    "Content": String,
    "Path": String
  }
]

Propriedades de ConfigFileVolume.ConfigFileToPath

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Content

String

Não

Não

Conteúdo do arquivo de configuração.

O tamanho máximo é 32 KB.

Path

String

Sim

Não

Caminho relativo no arquivo de configuração.

Especifique um caminho de diretório relativo a outro diretório.

Sintaxe de SecurityContextSysctl

"SecurityContextSysctl": [
  {
    "Value": String,
    "Name": String
  }
] 

Propriedades de SecurityContextSysctl

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Value

String

Não

Não

Valor da variável para o contexto de segurança no qual a instância executa.

Nenhuma

Name

String

Não

Não

Nome do sistema para o contexto de segurança no qual a instância executa.

Valores válidos:

  • kernel.msgmax

  • kernel.shm_rmid_forced

Sintaxe de ReadinessProbe

"ReadinessProbe": {
  "TimeoutSeconds": Integer,
  "InitialDelaySeconds": Integer,
  "Exec.Command": List,
  "PeriodSeconds": Integer,
  "HttpGet.Port": Integer,
  "TcpSocket.Port": Integer,
  "FailureThreshold": Integer,
  "HttpGet.Scheme": String,
  "HttpGet.Path": String,
  "SuccessThreshold": Integer
} 

Propriedades de ReadinessProbe

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

FailureThreshold

Integer

Não

Não

Número de verificações com falha consecutivas necessárias para que a sonda seja considerada como falha após o último sucesso.

As falhas devem ser consecutivas.

Valor padrão: 3.

HttpGet.Scheme

String

Não

Não

Protocolo para a solicitação GET.

Valores válidos:

  • HTTP

  • HTTPS

HttpGet.Path

String

Não

Não

Caminho para a verificação HttpGet.

Nenhuma

Exec.Command

List

Não

Não

Comando para a verificação dentro do contêiner.

Nenhuma

TcpSocket.Port

Integer

Não

Não

Porta para a verificação TcpSocket.

Nenhuma

PeriodSeconds

Integer

Não

Não

Intervalo no qual a verificação é realizada.

Valor padrão: 10.

Valor mínimo: 1.

Unidade: segundos.

TimeoutSeconds

Integer

Não

Não

Tempo limite para a verificação.

Valor padrão: 10.

Valor mínimo: 1.

Unidade: segundos.

InitialDelaySeconds

Integer

Não

Não

Tempo de espera após o início do contêiner antes que a verificação seja realizada.

Nenhuma

SuccessThreshold

Integer

Não

Não

Número de verificações bem-sucedidas consecutivas necessárias para que a sonda seja considerada bem-sucedida após ter falhado.

Os sucessos devem ser consecutivos.

Valor padrão: 1.

HttpGet.Port

Integer

Não

Não

Número da porta para a verificação HttpGet.

Nenhuma

Sintaxe de Option

"Option": [
  {
    "Name": String,
    "Value": String
  }
] 

Propriedades de Option

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Name

String

Não

Não

Nome do objeto.

Nenhuma

Value

String

Não

Não

Valor do objeto.

Nenhuma

Sintaxe de Tag

"Tag": [
  {
    "Key": String,
    "Value": String
  }
]

Propriedades de Tag

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

Key

String

Sim

Não

Chave da tag.

Nenhuma

Value

String

Não

Não

Valor da tag.

Nenhuma

Sintaxe de AcrRegistryInfo

"AcrRegistryInfo": [
  {
    "RegionId": String,
    "InstanceName": String,
    "Domain": List,
    "InstanceId": String
  }
]

Propriedades de AcrRegistryInfo

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrições

RegionId

String

Não

Não

ID da região.

O valor padrão é a região local.

InstanceName

String

Não

Não

Nome da instância.

Nenhuma

Domain

List

Não

Não

Nome de domínio.

O valor padrão inclui todos os nomes de domínio da instância.

InstanceId

String

Sim

Não

ID da instância.

Nenhuma

Valor de retorno

Fn::GetAtt

  • ContainerGroupId: ID do grupo de contêineres.

  • ContainerGroupName: Nome do grupo de contêineres.

  • SecurityGroupId: ID do grupo de segurança.

  • Ipv6Address: Endereço IPv6.

  • InternetIp: Endereço ip público.

  • RegionId: Região onde a instância está localizada.

  • IntranetIp: Endereço ip interno.

  • ZoneId: ID da zona.

  • VSwitchId: ID do vSwitch.

  • EniInstanceId: ID da ENI.

Exemplos

Formato YAML

ROSTemplateFormatVersion: '2015-09-01'
Description: Test ECI ContainerGroup
Parameters:
  VSwitch:
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    Type: String
    Label:
      zh-cn: VSwitch ID
      en: VSwitch ID
  SecurityGroup:
    Type: String
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    Label:
      zh-cn: Security Group ID
      en: Security Group ID
Resources:
  ContainerGroup:
    Type: ALIYUN::ECI::ContainerGroup
    Properties:
      Container:
        - Name: mytest
          Image: busybox
          Cpu: 2
          Memory: 4
          Port:
            - Port: 8080
              Protocol: TCP
            - Port: 8888
              Protocol: TCP
      SecurityGroupId:
        Ref: SecurityGroup
      ContainerGroupName: mytest
      VSwitchId:
        Ref: VSwitch
      RestartPolicy: Always
      SlsEnable: false
      Cpu: 2
      Memory: 4
Outputs: {}

Formato JSON

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Test ECI ContainerGroup",
  "Parameters": {
    "VSwitch": {
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "Type": "String",
      "Label": {
        "zh-cn": "VSwitch ID",
        "en": "VSwitch ID"
      }
    },
    "SecurityGroup": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
      "Label": {
        "zh-cn": "Security Group ID",
        "en": "Security Group ID"
      }
    }
  },
  "Resources": {
    "ContainerGroup": {
      "Type": "ALIYUN::ECI::ContainerGroup",
      "Properties": {
        "Container": [
          {
            "Name": "mytest",
            "Image": "busybox",
            "Cpu": 2,
            "Memory": 4,
            "Port": [
              {
                "Port": 8080,
                "Protocol": "TCP"
              },
              {
                "Port": 8888,
                "Protocol": "TCP"
              }
            ]
          }
        ],
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "ContainerGroupName": "mytest",
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "RestartPolicy": "Always",
        "SlsEnable": false,
        "Cpu": 2,
        "Memory": 4
      }
    }
  },
  "Outputs": {
  }
}