Todos os produtos
Search
Central de documentação

Resource Orchestration Service:Rules

Última atualização: Jun 27, 2026

Use a seção Rules em um modelo do Resource Orchestration Service (ROS) para validar valores de parâmetro antes que um stack seja criado ou atualizado. As Rules identificam configurações inválidas antecipadamente — por exemplo, quando dois parâmetros precisam ser consistentes entre si, como a exigência de pagamento conforme o uso em um ambiente de staging.

Sintaxe

Declare uma ou mais regras nomeadas na seção Rules de um modelo. Separe várias regras com vírgulas (,).

Rules:
  Rule Name 1:
    RuleCondition: the condition of the rule.
    Assertions:
      - Assert: the assertion of the rule.
        AssertDescription: the description of the assertion.
      - Assert: the assertion of the rule.
        AssertDescription: the description of the assertion.
  Rule Name 2:
    Assertions:
      - Assert: the assertion of the rule.      
  • (Opcional) RuleCondition: A condição que determina quando a regra entra em vigor. Se omitido, as asserções sempre se aplicam.

  • Assertions: Uma ou mais declarações que definem os valores aceitáveis para um parâmetro.

    Nota

    Cada bloco Assertions pode conter até 100 pares de Assert e AssertDescription.

  • Assert: A expressão de asserção. O resultado deve ser true ou false.

  • (Opcional) AssertDescription: A mensagem exibida quando uma asserção falha. Use uma mensagem orientada à ação que indique aos usuários qual valor fornecer — por exemplo, "A instância ECS deve usar pagamento conforme o uso no ambiente de staging."

Você pode definir apenas um RuleCondition para cada regra. Assertions entra em vigor somente quando RuleCondition é omitido ou retorna true. Quando Assert retorna true, os valores de parâmetro passam na validação e o stack pode prosseguir para pré-visualização, criação ou atualização.

Importante

Não é possível referenciar recursos DataSource em condições de regra ou asserções.

Exemplo

Restrições de parâmetro baseadas em ambiente

O exemplo a seguir aplica restrições específicas de ambiente usando duas regras:

  • No ambiente de produção (prod), a instância ECS deve usar acesso somente via intranet (largura de banda da Internet definida como 0).

  • No ambiente de staging (pre), a instância ECS deve usar pagamento conforme o uso.

    ROSTemplateFormatVersion: '2015-09-01'
    Rules:
      PublicNet:
        RuleCondition:
          Fn::Equals:
            - Ref: Environment
            - prod
        Assertions:
          - Assert:
              Fn::Equals:
                - Ref: InternetMaxBandwidthOut
                - 0
            AssertDescription: ECS instance should be intranet when the environment is prod.
      ChargeType:
        RuleCondition:
          Fn::Equals:
            - Ref: Environment
            - pre
        Assertions:
          - Assert:
              Fn::Equals:
                - Ref: InstanceChargeType
                - PayAsYouGo
            AssertDescription: ECS instance should be postpaid when the environment is pre.
    Parameters:
      Environment:
        Type: String
        AllowedValues:
          - prod
          - pre
      InternetMaxBandwidthOut:
        Type: Number
        MaxValue: 10
        MinValue: 0
      InstanceChargeType:
        Type: String
        AllowedValues:
          - PayAsYouGo
          - Subscription
    Resources:
      ECS:
        Type: ALIYUN::ECS::InstanceGroup
        Properties:
          InternetMaxBandwidthOut:
            Ref: InternetMaxBandwidthOut
          InstanceChargeType:
            Ref: InstanceChargeType
          #Other properties (omitted here): null.

Cada regra usa Fn::Equals para verificar o parâmetro Environment e ativa suas asserções somente quando a condição é satisfeita. Se um usuário definir Environment como prod, mas especificar uma largura de banda diferente de zero, a criação do stack falhará com a mensagem AssertDescription.