Todos os produtos
Search
Central de documentação

Resource Orchestration Service:ALIYUN::ALB::Listener

Última atualização: Jul 03, 2026

Crie um listener HTTP, HTTPS ou QUIC para uma instância de Application Load Balancer (ALB).

Sintaxe

{
  "Type": "ALIYUN::ALB::Listener",
  "Properties": {
    "RequestTimeout": Integer,
    "ListenerPort": Integer,
    "Http2Enabled": Boolean,
    "DefaultActions": List,
    "Certificates": List,
    "IdleTimeout": Integer,
    "LoadBalancerId": String,
    "ListenerProtocol": String,
    "QuicConfig": Map,
    "GzipEnabled": Boolean,
    "SecurityPolicyId": String,
    "ListenerDescription": String,
    "XForwardedForConfig": Map,
    "CaEnabled": Boolean,
    "CaCertificates": List,
    "ListenerStatus": String,
    "LogConfig": Map
  }
}

Propriedades

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

DefaultActions

List

Sim

Sim

Lista de ações de regra.

Valor de exemplo:

[
        {
          "ForwardGroupConfig": {
            "ServerGroupTuples": [
              {
                "ServerGroupId": "sgp-46ndzg2wz4v5mp****"
              }
            ]
          },
          "Type": "ForwardGroup"
        }
      ]

Para mais informações, consulte Propriedade DefaultActions.

ListenerPort

Integer

Sim

Não

Porta de escuta.

Valores válidos: 1 a 65535.

ListenerProtocol

String

Sim

Não

Protocolo de escuta.

Valores válidos:

  • HTTP

  • HTTPS

  • QUIC

LoadBalancerId

String

Sim

Não

ID da instância de Application Load Balancer (ALB).

Nenhuma

CaCertificates

List

Não

Sim

Informações do certificado CA.

Para mais informações, consulte Propriedade CaCertificates.

CaEnabled

Boolean

Não

Sim

Defina se a autenticação mútua está ativada.

Valores válidos:

  • true: ative a autenticação mútua.

  • false (padrão): desativa a autenticação mútua.

Certificates

List

Não

Sim

Certificados do servidor.

Para mais informações, consulte Propriedade Certificates.

GzipEnabled

Boolean

Não

Sim

Defina se a compactação Gzip está ativada para tipos específicos de arquivo.

Valores válidos:

  • true (padrão): ative a compactação Gzip.

  • false: desativa a compactação Gzip.

Http2Enabled

Boolean

Não

Sim

Defina se o HTTP/2 está ativado.

Valores válidos:

  • true (padrão): ative o HTTP/2.

  • false: desativa o HTTP/2.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

IdleTimeout

Integer

Não

Sim

Tempo limite de ociosidade da conexão.

Valores válidos: 1 a 60.

Valor padrão: 15.

Unidade: segundos.

Se nenhuma requisição chegar dentro desse período, o balanceador de carga fecha temporariamente a conexão e a restabelece quando a próxima requisição for recebida.

ListenerDescription

String

Não

Sim

Descrição do listener.

Comprimento: 2 a 256 caracteres.

ListenerStatus

String

Não

Sim

Status do listener.

Valores válidos:

  • Running: em execução.

  • Stopped: o listener está parado.

LogConfig

Map

Não

Sim

Configuração de log.

Para mais informações, consulte Propriedade LogConfig.

QuicConfig

Map

Não

Sim

Configuração do listener QUIC associado.

Para mais informações, consulte Propriedade QuicConfig.

RequestTimeout

Integer

Não

Sim

Tempo limite da requisição.

Valores válidos: 1 a 180.

Valor padrão: 60.

Unidade: segundos.

Caso o servidor backend não responda dentro desse período, o balanceador de carga retorna HTTP 504 ao cliente.

SecurityPolicyId

String

Não

Sim

ID da política de segurança.

É possível utilizar políticas de segurança definidas pelo sistema ou personalizadas.

Valor padrão: tls_cipher_policy_1_0, que indica uma política de segurança definida pelo sistema.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForConfig

Map

Não

Sim

Configuração do campo de cabeçalho X-Forwarded-For.

Para mais informações, consulte Propriedade XForwardedForConfig.

Sintaxe de DefaultActions

"DefaultActions": [
  {
    "Type": String,
    "ForwardGroupConfig": Map
  }
]

Propriedade DefaultActions

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

ForwardGroupConfig

Map

Sim

Sim

Configuração da ação de encaminhamento.

Para mais informações, consulte Propriedade ForwardGroupConfig.

Type

String

Sim

Sim

Tipo da ação.

Defina este parâmetro como ForwardGroup para encaminhar requisições a vários grupos de vServer.

Sintaxe de ForwardGroupConfig

"ForwardGroupConfig": {
  "ServerGroupTuples": List
}

Propriedades de ForwardGroupConfig

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

ServerGroupTuples

List

Sim

Sim

Grupo de vServer de destino para encaminhamento.

Para mais informações, consulte Propriedade ServerGroupTuples.

Sintaxe de ServerGroupTuples

"ServerGroupTuples": [
  {
    "ServerGroupId": String
  }
]

Propriedades de ServerGroupTuples

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

ServerGroupId

String

Sim

Sim

ID do grupo de vServer de destino para encaminhamento.

Nenhuma

Sintaxe de Certificates

"Certificates": [
  {
    "CertificateId": String
  }
]

Propriedades de Certificates

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

CertificateId

String

Não

Sim

ID do certificado do servidor.

Apenas certificados de servidor são suportados.

Sintaxe de QuicConfig

"QuicConfig": {
  "QuicListenerId": String,
  "QuicUpgradeEnabled": Boolean
}

Propriedades de QuicConfig

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

QuicListenerId

String

Não

Sim

ID do listener QUIC a ser associado.

Especifique este parâmetro se QuicUpgradeEnabled estiver definido como true.

Nota
  • Este parâmetro é suportado apenas para listeners HTTPS.

  • O listener original e o listener QUIC associado devem pertencer à mesma instância ALB. O listener QUIC não pode ter sido associado a outro listener anteriormente.

QuicUpgradeEnabled

Boolean

Não

Sim

Defina se o upgrade para QUIC está ativado.

Valores válidos:

  • true: ative o upgrade para QUIC.

  • false (padrão): desativa o upgrade para QUIC.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

Sintaxe de LogConfig

"LogConfig": {
  "AccessLogTracingConfig": Map,
  "AccessLogRecordCustomizedHeadersEnabled": Boolean
}

Propriedades de LogConfig

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

AccessLogTracingConfig

Map

Não

Sim

Configuração X-Trace para logs de acesso.

Para mais informações, consulte Propriedade AccessLogTracingConfig.

AccessLogRecordCustomizedHeadersEnabled

Boolean

Não

Sim

Defina se cabeçalhos personalizados são incluídos nos logs de acesso.

Valores válidos:

  • true: ativado.

  • false: desativado.

Sintaxe de AccessLogTracingConfig

"AccessLogTracingConfig": {
  "TracingSample": Integer,
  "TracingType": String,
  "TracingEnabled": Boolean
}

Propriedades de AccessLogTracingConfig

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

TracingEnabled

Boolean

Não

Sim

Defina se o X-Trace está ativado.

Valores válidos:

  • true: ativado.

  • false: desativado.

Nota

Este parâmetro só pode ser definido como true se o recurso de log de acesso (AccessLogEnabled) estiver ativado.

TracingSample

Integer

Não

Sim

Taxa de amostragem para X-Trace.

Valor válido: 1 a 10000.

Nota

Este valor só entra em vigor se TracingEnabled estiver definido como true.

TracingType

String

Não

Sim

Tipo do X-Trace.

Valor válido: Zipkin.

Nota

Este valor só entra em vigor se TracingEnabled estiver definido como true.

Sintaxe de XForwardedForConfig

"XForwardedForConfig": {
  "XForwardedForClientCertFingerprintAlias": String,
  "XForwardedForClientCertFingerprintEnabled": Boolean,
  "XForwardedForClientCertIssuerDNAlias": String,
  "XForwardedForClientCertClientVerifyAlias": String,
  "XForwardedForSLBIdEnabled": Boolean,
  "XForwardedForClientCertSubjectDNEnabled": Boolean,
  "XForwardedForClientCertSubjectDNAlias": String,
  "XForwardedForProtoEnabled": Boolean,
  "XForwardedForClientSrcPortEnabled": Boolean,
  "XForwardedForSLBPortEnabled": Boolean,
  "XForwardedForEnabled": Boolean,
  "XForwardedForClientCertIssuerDNEnabled": Boolean,
  "XForwardedForClientCertClientVerifyEnabled": Boolean,
  "XForwardedForClientSourceIpsEnabled": Boolean,
  "XForwardedForClientSourceIpsTrusted": String,
  "XForwardedForProcessingMode": String,
  "XForwardedForHostEnabled": Boolean
}

Propriedades de XForwardedForConfig

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

XForwardedForClientCertClientVerifyAlias

String

Não

Sim

Nome do cabeçalho personalizado usado para obter o resultado da verificação do certificado do cliente.

Este parâmetro só entra em vigor se XForwardedForClientCertClientVerifyEnabled estiver definido como true.

Comprimento: 1 a 40 caracteres. Caracteres válidos: letras minúsculas, dígitos, hífens (-) e sublinhados (_).

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertClientVerifyEnabled

Boolean

Não

Sim

Defina se o resultado da verificação do certificado do cliente é obtido do campo de cabeçalho X-Forwarded-Clientcert-clientverify.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertFingerprintAlias

String

Não

Sim

Nome do cabeçalho personalizado usado para obter a impressão digital do certificado do cliente.

Este parâmetro só entra em vigor se XForwardedForClientCertFingerprintEnabled estiver definido como true.

Comprimento: 1 a 40 caracteres. Caracteres válidos: letras minúsculas, dígitos, hífens (-) e sublinhados (_).

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertFingerprintEnabled

Boolean

Não

Sim

Defina se a impressão digital do certificado do cliente é obtida do campo de cabeçalho X-Forwarded-Clientcert-fingerprint.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertIssuerDNAlias

String

Não

Sim

Nome do cabeçalho personalizado usado para obter as informações do emissor do certificado do cliente.

Este parâmetro só entra em vigor se XForwardedForClientCertIssuerDNEnabled estiver definido como true.

Comprimento: 1 a 40 caracteres. Caracteres válidos: letras minúsculas, dígitos, hífens (-) e sublinhados (_).

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertIssuerDNEnabled

Boolean

Não

Sim

Defina se as informações do emissor do certificado do cliente são obtidas do campo de cabeçalho X-Forwarded-Clientcert-issuerdn.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertSubjectDNAlias

String

Não

Sim

Nome do cabeçalho personalizado usado para obter as informações do assunto do certificado do cliente.

Este parâmetro só entra em vigor se XForwardedForClientCertSubjectDNEnabled estiver definido como true.

Comprimento: 1 a 40 caracteres. Caracteres válidos: letras minúsculas, dígitos, hífens (-) e sublinhados (_).

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientCertSubjectDNEnabled

Boolean

Não

Sim

Defina se as informações do assunto do certificado do cliente são obtidas do campo de cabeçalho X-Forwarded-Clientcert-subjectdn.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

Nota

Este parâmetro é suportado apenas para listeners HTTPS.

XForwardedForClientSourceIpsEnabled

Boolean

Não

Sim

Defina se a porta de origem do cliente é obtida do campo de cabeçalho X-Forwarded-Client-SourceIps.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

XForwardedForClientSourceIpsTrusted

String

Não

Sim

Endereço IP do proxy confiável.

O Application Load Balancer (ALB) percorre o campo de cabeçalho X-Forwarded-For da direita para a esquerda. O ALB seleciona o primeiro endereço IP que não está na lista de IPs confiáveis como o endereço IP de origem. Este endereço IP é usado para limitação baseada em IP de origem.

XForwardedForClientSrcPortEnabled

Boolean

Não

Sim

Defina se a porta do cliente é obtida do campo de cabeçalho X-Forwarded-Client-Port.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

Nota

Este parâmetro é suportado apenas para listeners HTTP e HTTPS.

XForwardedForEnabled

Boolean

Não

Sim

Defina se o endereço IP de origem é obtido do campo de cabeçalho X-Forwarded-For.

Valores válidos:

  • true (padrão): ativado.

  • false: desativado.

Nota

Este parâmetro é suportado apenas para listeners HTTP e HTTPS.

XForwardedForHostEnabled

Boolean

Não

Sim

Defina se o nome de domínio do cliente é obtido do campo de cabeçalho X-Forwarded-Host.

Valores válidos:

  • true: Sim.

  • false (padrão): Não.

Nota

Este parâmetro é suportado para listeners HTTP, HTTPS e QUIC.

XForwardedForProcessingMode

String

Não

Sim

Modo de processamento do campo de cabeçalho X-Forwarded-For.

Este valor só entra em vigor se XForwardedForEnabled estiver definido como true. Valores válidos:

  • append (valor padrão): Acrescentar.

  • remove: exclua.

Nota
  • Defina como append para adicionar o endereço IP do último salto ao cabeçalho X-Forwarded-For antes de enviar a requisição ao serviço backend.

  • Defina como remove para excluir o cabeçalho X-Forwarded-For antes de enviar a requisição ao serviço backend, independentemente de a requisição incluir ou não o cabeçalho X-Forwarded-For.

  • Este parâmetro aplica-se a listeners HTTP e HTTPS.

XForwardedForProtoEnabled

Boolean

Não

Sim

Defina se o protocolo de escuta é obtido do campo de cabeçalho X-Forwarded-Proto.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

XForwardedForSLBIdEnabled

Boolean

Não

Sim

Defina se o ID da instância ALB é obtido do campo de cabeçalho SLB-ID.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

XForwardedForSLBPortEnabled

Boolean

Não

Sim

Defina se a porta de escuta é obtida do campo de cabeçalho X-Forwarded-Port.

Valores válidos:

  • true: ativado.

  • false (padrão): desativado.

Sintaxe de CaCertificates

"CaCertificates": [
  {
    "CertificateId": String
  }
]

Propriedades de CaCertificates

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

CertificateId

String

Não

Sim

ID do certificado CA.

Nenhuma

Valores de retorno

Fn::GetAtt

  • ListenerId: o ID do listener.

  • LoadBalancerId: o ID da instância de Application Load Balancer (ALB).

Exemplos

Cenário 1: Crie um listener HTTP.

Criação rápida

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  LoadBalancerId:
    Type: String
    Description: The ID of the ALB instance.
    Default: lb-bp1iilcd9ujny84z8****
Resources:
  Listener:
    Type: ALIYUN::ALB::Listener
    Properties:
      ListenerPort: 80
      DefaultActions:
        - ForwardGroupConfig:
            ServerGroupTuples:
              - ServerGroupId: sgp-46ndzg2wz4v5mp****
          Type: ForwardGroup
      LoadBalancerId:
        Ref: LoadBalancerId
      ListenerProtocol: HTTP
Outputs:
  ListenerId:
    Description: The ID of the listener.
    Value:
      Fn::GetAtt:
        - Listener
        - ListenerId                
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "LoadBalancerId": {
      "Type": "String",
      "Description": "The ID of the ALB instance.",
      "Default": "lb-bp1iilcd9ujny84z8****"
    }
  },
  "Resources": {
    "Listener": {
      "Type": "ALIYUN::ALB::Listener",
      "Properties": {
        "ListenerPort": 80,
        "DefaultActions": [
          {
            "ForwardGroupConfig": {
              "ServerGroupTuples": [
                {
                  "ServerGroupId": "sgp-46ndzg2wz4v5mp****"
                }
              ]
            },
            "Type": "ForwardGroup"
          }
        ],
        "LoadBalancerId": {
          "Ref": "LoadBalancerId"
        },
        "ListenerProtocol": "HTTP"
      }
    }
  },
  "Outputs": {
    "ListenerId": {
      "Description": "The ID of the listener.",
      "Value": {
        "Fn::GetAtt": [
          "Listener",
          "ListenerId"
        ]
      }
    }
  }
}

Cenário 2: Crie uma instância ALB com duas zonas e um listener HTTP.

Criação rápida

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: Create a dual-Availability-Zone ALB.
  en: Create a dual-Availability-Zone ALB.
Parameters:
  CommonName:
    Type: String
    Default: elastic-app
  ZoneId1:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
    AssociationPropertyMetadata:
      ExclusiveTo:
        - ZoneId2
    Label:
      en: Availability Zone
      zh-cn: Zone 1
  ZoneId2:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
    AssociationPropertyMetadata:
      ExclusiveTo:
        - ZoneId1
    Label:
      en: Availability Zone
      zh-cn: Zone 2
Resources:
  Vpc:
    Type: 'ALIYUN::ECS::VPC'
    Properties:
      CidrBlock: 192.168.0.0/16
      VpcName:
        Fn::Sub: ${CommonName}-vpc
  VSwitch1:
    Type: 'ALIYUN::ECS::VSwitch'
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.1.0/24
      ZoneId:
        Ref: ZoneId1
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
  VSwitch2:
    Type: 'ALIYUN::ECS::VSwitch'
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.2.0/24
      ZoneId:
        Ref: ZoneId2
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
  Alb:
    Type: 'ALIYUN::ALB::LoadBalancer'
    Properties:
      LoadBalancerName:
        Fn::Sub: ${CommonName}-alb
      LoadBalancerEdition: Basic
      VpcId:
        Ref: Vpc
      LoadBalancerBillingConfig:
        PayType: PostPay
      AddressType: Internet
      ZoneMappings:
        - ZoneId:
            Ref: ZoneId1
          VSwitchId:
            Ref: VSwitch1
        - ZoneId:
            Ref: ZoneId2
          VSwitchId:
            Ref: VSwitch2
  AlbServerGroup:
    Type: 'ALIYUN::ALB::ServerGroup'
    Properties:
      VpcId:
        Ref: Vpc
      ServerGroupType: Instance
      ServerGroupName:
        Fn::Sub: ${CommonName}-server-group
      HealthCheckConfig:
        HealthCheckConnectPort: 80
        HealthCheckCodes:
          - http_2xx
          - http_3xx
        HealthCheckProtocol: HTTP
        HealthCheckEnabled: true
        HealthCheckPath: /
      StickySessionConfig:
        StickySessionEnabled: false
  AlbListener:
    Type: 'ALIYUN::ALB::Listener'
    Properties:
      ListenerPort: 80
      DefaultActions:
        - Type: ForwardGroup
          ForwardGroupConfig:
            ServerGroupTuples:
              - ServerGroupId:
                  Ref: AlbServerGroup
      LoadBalancerId:
        Ref: Alb
      ListenerProtocol: HTTP
Metadata:
  'ALIYUN::ROS::Interface':
    ParameterGroups:
      - Parameters:
          - ZoneId1
          - ZoneId2
    Hidden:
      - CommonName
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "Create a dual-Availability-Zone ALB.",
    "en": "Create a dual-Availability-Zone ALB."
  },
  "Parameters": {
    "CommonName": {
      "Type": "String",
      "Default": "elastic-app"
    },
    "ZoneId1": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "ExclusiveTo": [
          "ZoneId2"
        ]
      },
      "Label": {
        "en": "Availability Zone",
        "zh-cn": "Zone 1"
      }
    },
    "ZoneId2": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "ExclusiveTo": [
          "ZoneId1"
        ]
      },
      "Label": {
        "en": "Availability Zone",
        "zh-cn": "Zone 2"
      }
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": "192.168.0.0/16",
        "VpcName": {
          "Fn::Sub": "${CommonName}-vpc"
        }
      }
    },
    "VSwitch1": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.1.0/24",
        "ZoneId": {
          "Ref": "ZoneId1"
        },
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        }
      }
    },
    "VSwitch2": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.2.0/24",
        "ZoneId": {
          "Ref": "ZoneId2"
        },
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        }
      }
    },
    "Alb": {
      "Type": "ALIYUN::ALB::LoadBalancer",
      "Properties": {
        "LoadBalancerName": {
          "Fn::Sub": "${CommonName}-alb"
        },
        "LoadBalancerEdition": "Basic",
        "VpcId": {
          "Ref": "Vpc"
        },
        "LoadBalancerBillingConfig": {
          "PayType": "PostPay"
        },
        "AddressType": "Internet",
        "ZoneMappings": [
          {
            "ZoneId": {
              "Ref": "ZoneId1"
            },
            "VSwitchId": {
              "Ref": "VSwitch1"
            }
          },
          {
            "ZoneId": {
              "Ref": "ZoneId2"
            },
            "VSwitchId": {
              "Ref": "VSwitch2"
            }
          }
        ]
      }
    },
    "AlbServerGroup": {
      "Type": "ALIYUN::ALB::ServerGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "ServerGroupType": "Instance",
        "ServerGroupName": {
          "Fn::Sub": "${CommonName}-server-group"
        },
        "HealthCheckConfig": {
          "HealthCheckConnectPort": 80,
          "HealthCheckCodes": [
            "http_2xx",
            "http_3xx"
          ],
          "HealthCheckProtocol": "HTTP",
          "HealthCheckEnabled": true,
          "HealthCheckPath": "/"
        },
        "StickySessionConfig": {
          "StickySessionEnabled": false
        }
      }
    },
    "AlbListener": {
      "Type": "ALIYUN::ALB::Listener",
      "Properties": {
        "ListenerPort": 80,
        "DefaultActions": [
          {
            "Type": "ForwardGroup",
            "ForwardGroupConfig": {
              "ServerGroupTuples": [
                {
                  "ServerGroupId": {
                    "Ref": "AlbServerGroup"
                  }
                }
              ]
            }
          }
        ],
        "LoadBalancerId": {
          "Ref": "Alb"
        },
        "ListenerProtocol": "HTTP"
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "ZoneId1",
            "ZoneId2"
          ]
        }
      ],
      "Hidden": [
        "CommonName"
      ]
    }
  }
}

Cenário 3: Implantar um site NGINX de alta disponibilidade.

Criação rápida

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: Create a dual-Availability-Zone high-availability NGINX website, including a VPC, ECS instances, an ALB, security groups, and automated deployment configurations.
  en: Establish a dual-Availability-Zone high-availability NGINX website, encompassing a Virtual Private Cloud (VPC), Elastic Cloud Server (ECS) instances, an Application Load Balancer (ALB), Security Groups, and automated deployment configurations.
Parameters:
  CommonName:
    Type: String
    Default: elastic-app
  ZoneId1:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
    AssociationPropertyMetadata:
      AutoSelectFirst: true
      ExclusiveTo:
        - ZoneId2
    Label:
      en: Availability Zone
      zh-cn: Zone 1
  ZoneId2:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::ZoneId'
    AssociationPropertyMetadata:
      AutoSelectFirst: true
      ExclusiveTo:
        - ZoneId1
    Label:
      en: Availability Zone
      zh-cn: Zone 2
  InstanceType1:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
    AssociationPropertyMetadata:
      SpotStrategy: SpotAsPriceGo
      InstanceChargeType: PostPaid
      SystemDiskCategory: cloud_essd
      ZoneId: ${ZoneId}
    Label:
      en: Instance Type
      zh-cn: Instance type 1
    Description:
      zh-cn: This solution creates a spot instance and automatically deploys an NGINX service.
      en: This solution will create a spot instance and automatically deploy an NGINX service.
    Default: null
  InstanceType2:
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
    AssociationPropertyMetadata:
      SpotStrategy: SpotAsPriceGo
      InstanceChargeType: PostPaid
      SystemDiskCategory: cloud_essd
      ZoneId: ${ZoneId}
    Label:
      en: Instance Type
      zh-cn: Instance type 2
    Description:
      zh-cn: This solution creates a spot instance and automatically deploys an NGINX service.
      en: This solution will create a spot instance and automatically deploy an NGINX service.
    Default: null
  InstancePassword:
    NoEcho: true
    Type: String
    Description:
      en: Server login password. Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
      zh-cn: Server logon password. Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
    Label:
      en: Instance Password
      zh-cn: Instance password
    ConstraintDescription:
      en: Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
      zh-cn: Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
    AssociationProperty: 'ALIYUN::ECS::Instance::Password'
    Default: null
Resources:
  Vpc:
    Type: 'ALIYUN::ECS::VPC'
    Properties:
      CidrBlock: 192.168.0.0/16
      VpcName:
        Fn::Sub: ${CommonName}-vpc
  VSwitch1:
    Type: 'ALIYUN::ECS::VSwitch'
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.1.0/24
      ZoneId:
        Ref: ZoneId1
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
  VSwitch2:
    Type: 'ALIYUN::ECS::VSwitch'
    Properties:
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.2.0/24
      ZoneId:
        Ref: ZoneId2
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
  SecurityGroup:
    Type: 'ALIYUN::ECS::SecurityGroup'
    Properties:
      VpcId:
        Ref: Vpc
      SecurityGroupName:
        Fn::Sub: ${CommonName}-sg
      SecurityGroupIngress:
        - PortRange: 443/443
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 80/80
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
  EcsInstance1:
    Type: 'ALIYUN::ECS::InstanceGroup'
    Properties:
      VpcId:
        Ref: Vpc
      ZoneId:
        Ref: ZoneId1
      VSwitchId:
        Ref: VSwitch1
      SecurityGroupId:
        Ref: SecurityGroup
      ImageId: aliyun_3_9_x64_20G_alibase_
      InstanceName:
        Fn::Sub: ${CommonName}-ecs-1
      InstanceType:
        Ref: InstanceType1
      SystemDiskCategory: cloud_essd
      MaxAmount: 1
      InternetMaxBandwidthOut: 0
      SpotStrategy: SpotAsPriceGo
      Password:
        Ref: InstancePassword
      UserData:
        Fn::Sub: |-
          #!/bin/bash
          yum -y install nginx-1.20.1
          instanceId=`curl http://100.100.100.200/latest/meta-data/instance-id`
          echo "Welcome to NGINX. Current instance is $instanceId" > /usr/share/nginx/html/index.html 
          systemctl start nginx 
          systemctl enable nginx
  EcsInstance2:
    Type: 'ALIYUN::ECS::InstanceGroup'
    Properties:
      VpcId:
        Ref: Vpc
      ZoneId:
        Ref: ZoneId2
      VSwitchId:
        Ref: VSwitch2
      SecurityGroupId:
        Ref: SecurityGroup
      ImageId: aliyun_3_9_x64_20G_alibase_
      InstanceName:
        Fn::Sub: ${CommonName}-ecs-2
      InstanceType:
        Ref: InstanceType2
      SystemDiskCategory: cloud_essd
      MaxAmount: 1
      InternetMaxBandwidthOut: 0
      SpotStrategy: SpotAsPriceGo
      Password:
        Ref: InstancePassword
      UserData:
        Fn::Sub: |-
          #!/bin/bash
          yum -y install nginx-1.20.1
          instanceId=`curl http://100.100.100.200/latest/meta-data/instance-id`
          echo "Welcome to NGINX. Current instance is $instanceId" > /usr/share/nginx/html/index.html 
          systemctl start nginx 
          systemctl enable nginx
  Alb:
    Type: 'ALIYUN::ALB::LoadBalancer'
    Properties:
      LoadBalancerName:
        Fn::Sub: ${CommonName}-alb
      LoadBalancerEdition: Basic
      VpcId:
        Ref: Vpc
      LoadBalancerBillingConfig:
        PayType: PostPay
      AddressType: Internet
      ZoneMappings:
        - ZoneId:
            Ref: ZoneId1
          VSwitchId:
            Ref: VSwitch1
        - ZoneId:
            Ref: ZoneId2
          VSwitchId:
            Ref: VSwitch2
  AlbServerGroup:
    Type: 'ALIYUN::ALB::ServerGroup'
    Properties:
      VpcId:
        Ref: Vpc
      ServerGroupType: Instance
      ServerGroupName:
        Fn::Sub: ${CommonName}-server-group
      HealthCheckConfig:
        HealthCheckConnectPort: 80
        HealthCheckCodes:
          - http_2xx
          - http_3xx
        HealthCheckProtocol: HTTP
        HealthCheckEnabled: true
        HealthCheckPath: /
      StickySessionConfig:
        StickySessionEnabled: false
  AlbBackendServerAttachment:
    Type: 'ALIYUN::ALB::BackendServerAttachment'
    Properties:
      ServerGroupId:
        Ref: AlbServerGroup
      Servers:
        - ServerType: Ecs
          ServerId:
            Ref: EcsInstance1
          Port: 80
        - ServerType: Ecs
          ServerId:
            Ref: EcsInstance2
          Port: 80
  AlbListener:
    Type: 'ALIYUN::ALB::Listener'
    Properties:
      ListenerPort: 80
      DefaultActions:
        - Type: ForwardGroup
          ForwardGroupConfig:
            ServerGroupTuples:
              - ServerGroupId:
                  Ref: AlbServerGroup
      LoadBalancerId:
        Ref: Alb
      ListenerProtocol: HTTP
Outputs:
  WebUrl:
    Description:
      zh-cn: Web access URL.
      en: The web access URL.
    Value:
      'Fn::Sub': 'http://${Alb.DNSName}'
Metadata:
  'ALIYUN::ROS::Interface':
    ParameterGroups:
      - Parameters:
          - ZoneId1
          - InstanceType1
          - ZoneId2
          - InstanceType2
          - InstancePassword
    TemplateTags:
      - acs:example:elastic computing:Deploy a high-availability NGINX website
    Hidden:
      - CommonName
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "Create a dual-Availability-Zone high-availability NGINX website, including a VPC, ECS instances, an ALB, security groups, and automated deployment configurations.",
    "en": "Establish a dual-Availability-Zone high-availability NGINX website, encompassing a Virtual Private Cloud (VPC), Elastic Cloud Server (ECS) instances, an Application Load Balancer (ALB), Security Groups, and automated deployment configurations."
  },
  "Parameters": {
    "CommonName": {
      "Type": "String",
      "Default": "elastic-app"
    },
    "ZoneId1": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "AutoSelectFirst": true,
        "ExclusiveTo": [
          "ZoneId2"
        ]
      },
      "Label": {
        "en": "Availability Zone",
        "zh-cn": "Zone 1"
      }
    },
    "ZoneId2": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "AutoSelectFirst": true,
        "ExclusiveTo": [
          "ZoneId1"
        ]
      },
      "Label": {
        "en": "Availability Zone",
        "zh-cn": "Zone 2"
      }
    },
    "InstanceType1": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "AssociationPropertyMetadata": {
        "SpotStrategy": "SpotAsPriceGo",
        "InstanceChargeType": "PostPaid",
        "SystemDiskCategory": "cloud_essd",
        "ZoneId": "${ZoneId}"
      },
      "Label": {
        "en": "Instance Type",
        "zh-cn": "Instance type 1"
      },
      "Description": {
        "zh-cn": "This solution creates a spot instance and automatically deploys an NGINX service.",
        "en": "This solution will create a spot instance and automatically deploy an NGINX service."
      },
      "Default": null
    },
    "InstanceType2": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "AssociationPropertyMetadata": {
        "SpotStrategy": "SpotAsPriceGo",
        "InstanceChargeType": "PostPaid",
        "SystemDiskCategory": "cloud_essd",
        "ZoneId": "${ZoneId}"
      },
      "Label": {
        "en": "Instance Type",
        "zh-cn": "Instance type 2"
      },
      "Description": {
        "zh-cn": "This solution creates a spot instance and automatically deploys an NGINX service.",
        "en": "This solution will create a spot instance and automatically deploy an NGINX service."
      },
      "Default": null
    },
    "InstancePassword": {
      "NoEcho": true,
      "Type": "String",
      "Description": {
        "en": "Server login password. Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
        "zh-cn": "Server logon password. Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/"
      },
      "Label": {
        "en": "Instance Password",
        "zh-cn": "Instance password"
      },
      "ConstraintDescription": {
        "en": "Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
        "zh-cn": "Length: 8 to 30 characters. Must contain three of the following: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/"
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::Password",
      "Default": null
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": "192.168.0.0/16",
        "VpcName": {
          "Fn::Sub": "${CommonName}-vpc"
        }
      }
    },
    "VSwitch1": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.1.0/24",
        "ZoneId": {
          "Ref": "ZoneId1"
        },
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        }
      }
    },
    "VSwitch2": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.2.0/24",
        "ZoneId": {
          "Ref": "ZoneId2"
        },
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        }
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "SecurityGroupName": {
          "Fn::Sub": "${CommonName}-sg"
        },
        "SecurityGroupIngress": [
          {
            "PortRange": "443/443",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "80/80",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ]
      }
    },
    "EcsInstance1": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Ref": "ZoneId1"
        },
        "VSwitchId": {
          "Ref": "VSwitch1"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "ImageId": "aliyun_3_9_x64_20G_alibase_",
        "InstanceName": {
          "Fn::Sub": "${CommonName}-ecs-1"
        },
        "InstanceType": {
          "Ref": "InstanceType1"
        },
        "SystemDiskCategory": "cloud_essd",
        "MaxAmount": 1,
        "InternetMaxBandwidthOut": 0,
        "SpotStrategy": "SpotAsPriceGo",
        "Password": {
          "Ref": "InstancePassword"
        },
        "UserData": {
          "Fn::Sub": "#!/bin/bash\nyum -y install nginx-1.20.1\ninstanceId=`curl http://100.100.100.200/latest/meta-data/instance-id`\necho \"Welcome to NGINX. Current instance is $instanceId\" > /usr/share/nginx/html/index.html \nsystemctl start nginx \nsystemctl enable nginx"
        }
      }
    },
    "EcsInstance2": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Ref": "ZoneId2"
        },
        "VSwitchId": {
          "Ref": "VSwitch2"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "ImageId": "aliyun_3_9_x64_20G_alibase_",
        "InstanceName": {
          "Fn::Sub": "${CommonName}-ecs-2"
        },
        "InstanceType": {
          "Ref": "InstanceType2"
        },
        "SystemDiskCategory": "cloud_essd",
        "MaxAmount": 1,
        "InternetMaxBandwidthOut": 0,
        "SpotStrategy": "SpotAsPriceGo",
        "Password": {
          "Ref": "InstancePassword"
        },
        "UserData": {
          "Fn::Sub": "#!/bin/bash\nyum -y install nginx-1.20.1\ninstanceId=`curl http://100.100.100.200/latest/meta-data/instance-id`\necho \"Welcome to NGINX. Current instance is $instanceId\" > /usr/share/nginx/html/index.html \nsystemctl start nginx \nsystemctl enable nginx"
        }
      }
    },
    "Alb": {
      "Type": "ALIYUN::ALB::LoadBalancer",
      "Properties": {
        "LoadBalancerName": {
          "Fn::Sub": "${CommonName}-alb"
        },
        "LoadBalancerEdition": "Basic",
        "VpcId": {
          "Ref": "Vpc"
        },
        "LoadBalancerBillingConfig": {
          "PayType": "PostPay"
        },
        "AddressType": "Internet",
        "ZoneMappings": [
          {
            "ZoneId": {
              "Ref": "ZoneId1"
            },
            "VSwitchId": {
              "Ref": "VSwitch1"
            }
          },
          {
            "ZoneId": {
              "Ref": "ZoneId2"
            },
            "VSwitchId": {
              "Ref": "VSwitch2"
            }
          }
        ]
      }
    },
    "AlbServerGroup": {
      "Type": "ALIYUN::ALB::ServerGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "ServerGroupType": "Instance",
        "ServerGroupName": {
          "Fn::Sub": "${CommonName}-server-group"
        },
        "HealthCheckConfig": {
          "HealthCheckConnectPort": 80,
          "HealthCheckCodes": [
            "http_2xx",
            "http_3xx"
          ],
          "HealthCheckProtocol": "HTTP",
          "HealthCheckEnabled": true,
          "HealthCheckPath": "/"
        },
        "StickySessionConfig": {
          "StickySessionEnabled": false
        }
      }
    },
    "AlbBackendServerAttachment": {
      "Type": "ALIYUN::ALB::BackendServerAttachment",
      "Properties": {
        "ServerGroupId": {
          "Ref": "AlbServerGroup"
        },
        "Servers": [
          {
            "ServerType": "Ecs",
            "ServerId": {
              "Ref": "EcsInstance1"
            },
            "Port": 80
          },
          {
            "ServerType": "Ecs",
            "ServerId": {
              "Ref": "EcsInstance2"
            },
            "Port": 80
          }
        ]
      }
    },
    "AlbListener": {
      "Type": "ALIYUN::ALB::Listener",
      "Properties": {
        "ListenerPort": 80,
        "DefaultActions": [
          {
            "Type": "ForwardGroup",
            "ForwardGroupConfig": {
              "ServerGroupTuples": [
                {
                  "ServerGroupId": {
                    "Ref": "AlbServerGroup"
                  }
                }
              ]
            }
          }
        ],
        "LoadBalancerId": {
          "Ref": "Alb"
        },
        "ListenerProtocol": "HTTP"
      }
    }
  },
  "Outputs": {
    "WebUrl": {
      "Description": {
        "zh-cn": "Web access URL.",
        "en": "The web access URL."
      },
      "Value": {
        "Fn::Sub": "http://${Alb.DNSName}"
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "ZoneId1",
            "InstanceType1",
            "ZoneId2",
            "InstanceType2",
            "InstancePassword"
          ]
        }
      ],
      "TemplateTags": [
        "acs:example:elastic computing:Deploy a high-availability NGINX website"
      ],
      "Hidden": [
        "CommonName"
      ]
    }
  }
}

Para mais exemplos, consulte modelos públicos que incluem este recurso.