Tous les produits
Search
Centre de documentation

Resource Orchestration Service:ALIYUN::ECI::ContainerGroup

Dernière mise à jour :Aug 10, 2026

Créez un groupe de conteneurs Elastic Container Instance (ECI).

Syntaxe

{
  "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
  }
}

Propriétés

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

EipInstanceId

String

Non

Non

L'ID de l'instance EIP.

Aucune

Container

List

Oui

Oui

Les conteneurs du groupe de conteneurs.

Propriétés de Container

DnsConfig

Map

Non

Oui

La configuration DNS.

Propriétés de DnsConfig

InitContainer

List

Non

Oui

La liste des conteneurs d'initialisation.

Propriétés de InitContainer

SecurityGroupId

String

Non

Non

L'ID du groupe de sécurité.

Les instances appartenant au même groupe de sécurité peuvent communiquer entre elles.

ContainerGroupName

String

Oui

Non

Le nom du groupe de conteneurs.

Aucune

ZoneId

String

Non

Non

L'ID de la zone où se trouve l'instance.

Par défaut : aucune. Le système sélectionne automatiquement une zone.

Volume

List

Non

Oui

La liste des volumes.

Maximum : 20.

Propriétés de Volume

HostAliase

List

Non

Non

Les mappages de noms d'hôte personnalisés pour un conteneur dans le pod.

Propriétés de HostAliase

RestartPolicy

String

Non

Oui

La politique de redémarrage de l'instance.

Valeurs valides :

  • Always (par défaut)

  • OnFailure

  • Never

ResourceGroupId

String

Non

Oui

L'ID du groupe de ressources.

Aucune

Tag

List

Non

Oui

Les tags du groupe de conteneurs sous forme de paires clé-valeur.

Maximum : 20. La clé et la valeur sont des chaînes de caractères.

Propriétés de Tag

VSwitchId

String

Non

Non

L'ID du vSwitch. Toutes les instances ECI sont des instances VPC.

Le nombre d'adresses IP disponibles dans le bloc CIDR du vSwitch détermine le nombre maximal d'instances ECI. Planifiez le bloc CIDR à l'avance.

ImageRegistryCredential

List

Non

Oui

Les identifiants pour le registre d'images de conteneur, incluant l'adresse du serveur, le nom d'utilisateur et le mot de passe.

Propriétés de ImageRegistryCredential

Memory

Number

Non

Oui

La taille de la mémoire.

Aucune

SlsEnable

Boolean

Non

Non

Indique si la collecte des journaux utilisateur est activée.

Valeurs valides :

  • true : active la collecte des journaux.

  • false (par défaut) : désactive la collecte des journaux.

SecurityContextSysctl

List

Non

Non

Le contexte de sécurité dans lequel l'instance s'exécute.

Propriétés de SecurityContext

Cpu

Number

Non

Oui

Le nombre de vCPU.

Aucune

ImageSnapshotId

String

Non

Non

L'ID du cache d'image ou du snapshot.

Aucune

SpotPriceLimit

Number

Non

Non

Le prix horaire maximal pour l'instance.

Trois décimales maximum sont prises en charge.

Ce paramètre n'est effectif que lorsque SpotStrategy est défini sur SpotWithPriceLimit.

AutoMatchImageCache

Boolean

Non

Non

Indique s'il faut faire correspondre automatiquement un cache d'image.

Aucune

SpotStrategy

String

Non

Non

La politique de préemption pour l'instance.

Valeurs valides :

  • NoSpot (par défaut) : instance classique à la demande.

  • SpotWithPriceLimit : instance spot avec un prix maximal défini par l'utilisateur.

  • SpotAsPriceGo : instance spot pour laquelle le système enchérit automatiquement en fonction du prix actuel du marché.

TerminationGracePeriodSeconds

Integer

Non

Non

La période de grâce avant l'arrêt du conteneur.

Unité : secondes.

ActiveDeadlineSeconds

Integer

Non

Non

Le délai d'expiration actif pour le groupe de conteneurs.

Unité : secondes.

Ipv6AddressCount

Integer

Non

Non

Le nombre d'adresses IPv6.

Aucune

RamRoleName

String

Non

Non

Le nom du rôle RAM de l'instance.

Les instances ECI et ECS partagent le même rôle RAM d'instance.

AcrRegistryInfo

List

Non

Non

Les identifiants d'accès pour une instance Container Registry Enterprise Edition.

Propriétés de AcrRegistryInfo

InstanceType

String

Non

Non

Le type d'instance.

Aucune

Syntaxe 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
  }
]

Propriétés du conteneur

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

EnvironmentVar

List

Non

Non

Les variables d'environnement du conteneur.

Chaque variable est une paire clé-valeur de chaînes de caractères.

Maximum : 100.

Propriétés EnvironmentVar

Tty

Boolean

Non

Non

Indique s'il faut allouer un TTY pour ce conteneur.

Valeurs valides :

  • true : Alloue un TTY pour ce conteneur.

    Si cette option est définie sur true, stdin est également défini sur true.

  • false : N'alloue pas de TTY pour ce conteneur.

SecurityContext

Map

Non

Non

Le contexte de sécurité du groupe de conteneurs.

Aucune

Name

String

Oui

Non

Le nom du conteneur.

Aucune

ImagePullPolicy

String

Non

Non

La politique de récupération d'images.

Aucune

Image

String

Oui

Non

L'image.

Aucune

Stdin

Boolean

Non

Non

Indique s'il faut allouer un tampon pour l'entrée standard.

Valeurs valides :

  • true : Alloue un tampon pour l'entrée standard.

  • false : N'alloue pas de tampon pour l'entrée standard.

WorkingDir

String

Non

Non

Le répertoire de travail du conteneur.

Aucune

LivenessProbe

Map

Non

Non

La sonde de vivacité (liveness) du conteneur.

Propriétés LivenessProbe

Cpu

Number

Non

Non

Le nombre de CPU alloués au conteneur.

Aucune

Command

List

Non

Non

Les commandes à exécuter dans le conteneur.

Maximum : 1 commande. Longueur maximale de la chaîne : 256 caractères.

Memory

Number

Non

Non

La mémoire allouée au conteneur.

Unité : GiB.

ReadinessProbe

Map

Non

Non

La sonde de préparation (readiness) du conteneur.

Propriétés ReadinessProbe

VolumeMount

List

Non

Non

Les points de montage des volumes pour le conteneur.

Maximum : 16.

Propriétés VolumeMount

Port

List

Non

Non

Les ports et protocoles ouverts.

Maximum : 100 ports. Protocoles valides :

  • TCP

  • UDP

Propriétés Port

Arg

List

Non

Non

Les arguments transmis à la commande.

Type String. Maximum : 10.

StdinOnce

Boolean

Non

Non

Indique s'il faut fermer l'entrée standard après la déconnexion du client.

Valeurs valides :

  • true : Ferme le canal.

  • false : Maintient le canal ouvert.

Syntaxe 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
}

Propriétés LivenessProbe

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

TcpSocket.Port

Integer

Non

Non

Le port pour la vérification du socket TCP.

Aucune

HttpGet.Scheme

String

Non

Non

Le protocole utilisé pour se connecter à l'hôte.

Valeurs valides :

  • HTTP

  • HTTPS

HttpGet.Port

Integer

Non

Non

Le port pour la vérification HTTP GET.

Aucune

FailureThreshold

Integer

Non

Non

Le nombre minimal d'échecs consécutifs pour que la sonde soit considérée comme ayant échoué.

Les échecs doivent être consécutifs.

Valeur par défaut : 3.

InitialDelaySeconds

Integer

Non

Non

Le délai en secondes après le démarrage du conteneur avant que la sonde ne soit initiée.

Unité : secondes.

TimeoutSeconds

Integer

Non

Non

Le nombre de secondes après lequel la sonde expire.

Valeur minimale : 1.

Valeur par défaut : 1.

SuccessThreshold

Integer

Non

Non

Le nombre de vérifications réussies consécutives requises pour que la sonde soit considérée comme réussie après un échec.

Valeur : 1.

Valeur par défaut : 1.

Exec.Command

List

Non

Non

La commande de la sonde.

Aucune

PeriodSeconds

Integer

Non

Non

La période de la sonde.

Unité : secondes.

Valeur minimale : 1.

Valeur par défaut : 10.

HttpGet.Path

String

Non

Non

Le chemin pour la vérification HTTP GET.

Aucune

Syntaxe DnsConfig

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

Propriétés DnsConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

NameServer

List

Non

Non

Les adresses IP des serveurs DNS.

Aucune

Search

List

Non

Non

La liste des domaines de recherche DNS.

Aucune

Option

List

Non

Non

Les options du résolveur DNS.

Chaque option possède un nom et une valeur facultative.

Propriétés Option

Syntaxe 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
  }
]

Propriétés InitContainer

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

EnvironmentVar

List

Non

Non

Variables d'environnement du conteneur.

Chaque variable est une paire clé-valeur de type string.

Maximum : 100.

Valeur valide : status.podIP.

SecurityContext

Map

Non

Non

Contexte de sécurité du groupe de conteneurs.

Aucune

Name

String

Non

Non

Nom du conteneur.

Aucune

Image

String

Non

Non

Image du conteneur.

Aucune

Arg

List

Non

Non

Paramètres transmis à la commande.

Type String. Maximum : 10.

WorkingDir

String

Non

Non

Répertoire de travail du conteneur.

Aucune

Port

List

Non

Non

Ports et protocoles ouverts.

Maximum : 100 ports. Protocoles valides :

  • TCP

  • UDP

Command

List

Non

Non

Commandes à exécuter dans le conteneur.

Maximum : 1 commande. Longueur maximale de la chaîne : 256 caractères.

Memory

Number

Non

Non

Mémoire allouée au conteneur.

Unité : Go.

ImagePullPolicy

String

Non

Non

Politique de récupération de l'image.

Aucune

VolumeMount

List

Non

Non

Points de montage des volumes pour le conteneur.

Maximum : 16 volumes pris en charge.

Cpu

Number

Non

Non

Nombre de CPU alloués au conteneur.

Aucune

Syntaxe 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
  }
]

Propriétés Volume

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

NFSVolume.Path

String

Non

Non

Chemin d'accès du volume NFS.

Aucune

Name

String

Oui

Non

Nom du volume.

Aucune

EmptyDirVolume.Medium

String

Non

Non

Support de stockage.

Par défaut, le système de fichiers du nœud est utilisé.

Valeur valide : Memory.

Si vous définissez la valeur sur Memory, EmptyDirVolume est stocké en mémoire.

NFSVolume.Server

String

Non

Non

Adresse IP du serveur NFS.

Aucune

NFSVolume.ReadOnly

Boolean

Non

Non

Propriété en lecture seule du volume NFS.

Valeur par défaut : false.

ConfigFileVolume.ConfigFileToPath

List

Non

Non

Chemin d'accès du fichier de configuration.

Propriétés ConfigFileVolume.ConfigFileToPath

Type

String

Oui

Non

Type de volume.

Valeurs valides :

  • EmptyDirVolume

  • NFSVolume

  • ConfigFileVolume

FlexVolume.Options

Map

Non

Non

Liste des options pour l'objet FlexVolume.

Les options sont des paires clé-valeur transmises au format JSON.

Par exemple, lors du montage d'un disque cloud à l'aide de FlexVolume, le format des options est {"volumeId":"d-2zehdahrwoa7srg****","performanceLevel": "PL2"}.

FlexVolume.Driver

String

Non

Non

Nom du pilote utilisé pour FlexVolume.

Aucune

FlexVolume.FsType

String

Non

Non

Type de système de fichiers à monter.

Aucune

Syntaxe HostAliase

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

Propriétés HostAliase

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Ip

String

Non

Non

Adresse IP.

Aucune

Hostname

List

Non

Non

Nom d'hôte.

Aucune

Syntaxe ImageRegistryCredential

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

Propriétés ImageRegistryCredential

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

UserName

String

Oui

Non

Nom d'utilisateur du registre d'images.

Aucune

Password

String

Oui

Non

Mot de passe du registre d'images.

Aucune

Server

String

Oui

Non

Adresse du registre d'images.

Spécifié sans préfixe de protocole.

Par exemple, http:// ou https://.

Syntaxe EnvironmentVar

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

Propriétés EnvironmentVar

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Key

String

Non

Non

Nom de la variable.

1 à 128 caractères. Ne peut pas commencer par un chiffre. Peut contenir des chiffres, des lettres et des traits de soulignement (_).

Value

String

Non

Non

Valeur de la variable.

0 à 256 caractères.

FieldRef.FieldPath

String

Non

Non

Référence à une autre variable.

Actuellement, seul status.podIP est pris en charge.

Syntaxe SecurityContext

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

Propriétés SecurityContext

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Capability.Add

List

Non

Non

Fonctionnalités pouvant être ajoutées au conteneur.

Valeur valide : ["NET_ADMIN"].

RunAsUser

Integer

Non

Non

ID utilisateur.

Aucune

ReadOnlyRootFilesystem

Boolean

Non

Non

Indique si le système de fichiers racine est en lecture seule.

Valeur par défaut : true.

Syntaxe VolumeMount

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

Propriétés VolumeMount

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Name

String

Non

Non

Nom du volume.

Le nom doit correspondre à la valeur spécifiée pour le paramètre name dans la section Volume.

ReadOnly

Boolean

Non

Non

Indique si le volume est en lecture seule.

Valeur par défaut : false.

MountPath

String

Non

Non

Chemin de montage.

Les données présentes dans le répertoire de destination sont écrasées par le volume monté.

MountPropagation

String

Non

Non

Paramètre de propagation du montage pour le volume.

La propagation du montage permet à un volume monté par un conteneur d'être partagé avec d'autres conteneurs du même pod, voire avec d'autres pods sur le même nœud. Valeurs valides :

  • None : le volume ne tient pas compte des opérations de montage ultérieures effectuées sur ce volume ou ses sous-répertoires.

  • HostToCotainer : le volume tient compte des opérations de montage ultérieures effectuées sur ce volume ou ses sous-répertoires.

  • Bidirectional : similaire à HostToCotainer, cette option prend en compte les opérations de montage. De plus, le volume est propagé vers l'hôte et vers tous les conteneurs de tous les pods utilisant le même volume.

SubPath

String

Non

Non

Sous-répertoire au sein du volume.

Cette option permet à un pod de monter différents répertoires d'un même volume vers des répertoires distincts dans un conteneur.

Syntaxe Port

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

Propriétés Port

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Port

Integer

Non

Non

Numéro de port.

La valeur doit être comprise entre 1 et 65 535.

Protocol

String

Non

Non

Protocole utilisé par le port.

Valeurs valides :

  • TCP

  • UDP

Syntaxe ConfigFileVolume.ConfigFileToPath

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

Propriétés ConfigFileVolume.ConfigFileToPath

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Content

String

Non

Non

Contenu du fichier de configuration.

Taille maximale : 32 Ko.

Path

String

Oui

Non

Chemin relatif dans le fichier de configuration.

Spécifiez un chemin de répertoire relatif à un autre répertoire.

Syntaxe SecurityContextSysctl

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

Propriétés SecurityContextSysctl

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Value

String

Non

Non

Valeur de la variable pour le contexte de sécurité dans lequel l'instance s'exécute.

Aucune

Name

String

Non

Non

Nom système du contexte de sécurité dans lequel l'instance s'exécute.

Valeurs valides :

  • kernel.msgmax

  • kernel.shm_rmid_forced

Syntaxe 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
} 

Propriétés ReadinessProbe

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

FailureThreshold

Integer

Non

Non

Nombre d'échecs consécutifs requis pour considérer la sonde comme ayant échoué après son dernier succès.

Les échecs doivent être consécutifs.

Valeur par défaut : 3.

HttpGet.Scheme

String

Non

Non

Protocole utilisé pour la requête GET.

Valeurs valides :

  • HTTP

  • HTTPS

HttpGet.Path

String

Non

Non

Chemin pour la vérification HttpGet.

Aucune

Exec.Command

List

Non

Non

Commande exécutée lors de la vérification à l'intérieur du conteneur.

Aucune

TcpSocket.Port

Integer

Non

Non

Port pour la vérification TcpSocket.

Aucune

PeriodSeconds

Integer

Non

Non

Périodicité des vérifications.

Valeur par défaut : 10.

Valeur minimale : 1.

Unité : secondes.

TimeoutSeconds

Integer

Non

Non

Délai d'expiration de la vérification.

Valeur par défaut : 10.

Valeur minimale : 1.

Unité : secondes.

InitialDelaySeconds

Integer

Non

Non

Temps d'attente après le démarrage du conteneur avant d'effectuer la première vérification.

Aucune

SuccessThreshold

Integer

Non

Non

Nombre de succès consécutifs requis pour considérer la sonde comme réussie après un échec.

Les succès doivent être consécutifs.

Valeur par défaut : 1.

HttpGet.Port

Integer

Non

Non

Numéro de port pour la vérification HttpGet.

Aucune

Syntaxe Option

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

Propriétés Option

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Name

String

Non

Non

Nom de l'objet.

Aucune

Value

String

Non

Non

Valeur de l'objet.

Aucune

Syntaxe Tag

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

Propriétés Tag

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Key

String

Oui

Non

Clé du tag.

Aucune

Value

String

Non

Non

Valeur du tag.

Aucune

Syntaxe AcrRegistryInfo

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

Propriétés AcrRegistryInfo

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

RegionId

String

Non

Non

ID de la région.

La valeur par défaut correspond à la région locale.

InstanceName

String

Non

Non

Nom de l'instance.

Aucune

Domain

List

Non

Non

Nom de domaine.

La valeur par défaut inclut tous les noms de domaine de l'instance.

InstanceId

String

Oui

Non

ID de l'instance.

Aucune

Valeur de retour

Fn::GetAtt

  • ContainerGroupId : ID du groupe de conteneurs.

  • ContainerGroupName : Nom du groupe de conteneurs.

  • SecurityGroupId : ID du groupe de sécurité.

  • Ipv6Address : Adresse IPv6.

  • InternetIp : Adresse IP publique.

  • RegionId : Région où se trouve l'instance.

  • IntranetIp : Adresse IP interne.

  • ZoneId : ID de la zone.

  • VSwitchId : ID du vSwitch.

  • EniInstanceId : ID de l'ENI.

Exemples

Format 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: {}

Format 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": {
  }
}