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. |
|
|
DnsConfig |
Map |
Não |
Sim |
Configuração de DNS. |
|
|
InitContainer |
List |
Não |
Sim |
Lista de contêineres de inicialização. |
|
|
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. |
|
HostAliase |
List |
Não |
Não |
Mapeamentos personalizados de nome de host para um contêiner no pod. |
|
|
RestartPolicy |
String |
Não |
Sim |
Política de reinicialização da instância. |
Valores válidos:
|
|
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. |
|
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. |
|
|
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:
|
|
SecurityContextSysctl |
List |
Não |
Não |
Contexto de segurança no qual a instância executa. |
|
|
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:
|
|
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. |
|
|
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. |
|
Tty |
Boolean |
Não |
Não |
Indica se um TTY deve ser alocado para este contêiner. |
Valores válidos:
|
|
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:
|
|
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. |
|
|
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. |
|
|
VolumeMount |
List |
Não |
Não |
Montagens de volume do contêiner. |
Máximo: 16. |
|
Port |
List |
Não |
Não |
Portas abertas e protocolos. |
Máximo: 100 portas. Protocolos válidos:
|
|
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:
|
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:
|
|
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. |
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:
|
|
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. |
|
|
Type |
String |
Sim |
Não |
Tipo do volume. |
Valores válidos:
|
|
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 é |
|
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, |
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:
|
|
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:
|
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:
|
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:
|
|
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": {
}
}