Funções de regras - AWS CloudFormation

Este é o novo Guia de referência de modelos do AWS CloudFormation. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o Guia do usuário do AWS CloudFormation.

Funções de regras

As funções de regra são funções especiais que funcionam somente na seção Rules de um modelo do CloudFormation. Essas funções ajudam você a validar valores de parâmetros usando lógica personalizada. Todas as validações ocorrem antes que o CloudFormation crie ou atualize quaisquer recursos.

As regras são úteis quando as restrições de parâmetros padrão são insuficientes. Por exemplo, quando o SSL estiver habilitado, um certificado e um nome de domínio deverão ser fornecidos. Uma regra pode garantir que essas dependências sejam atendidas.

Na condição ou asserções de uma regra, você pode usar as funções intrínsecas, como Fn::Equals, Fn::Not e Fn::RefAll. A propriedade da condição determina se o CloudFormation se aplica a asserções. Se a condição for avaliada como true, o CloudFormation avaliará as asserções para verificar se um valor de parâmetro é válido quando uma pilha for criada ou atualizada. Se um valor de parâmetro não for válido, o CloudFormation não criará ou atualizará a pilha. Se a condição for avaliada como false, o CloudFormation não verificará o valor do parâmetro e prosseguirá com a operação de pilha.

Se você é novo no uso de regras em seus modelos, recomendamos analisar primeiro o tópico de Sintaxe de Rules do modelo do CloudFormation no Guia do usuário do AWS CloudFormation.

Fn::And

Retorna true se todas as condições especificadas forem avaliadas como true; retorna false se alguma das condições for avaliada como false. Fn::And funciona como um operador AND. O número mínimo de condições que você pode incluir é duas, e o máximo é dez.

Declaração

"Fn::And" : [{condition}, {...}]

Parâmetros

condição

Uma função intrínseca específica da regra que pode ser avaliada como true ou false.

Exemplo

O exemplo a seguir será avaliado como true se o nome do grupo de segurança referenciado for igual a sg-mysggroup e se o valor do parâmetro InstanceType for t3.large ou t3.small:

"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "t3.large", "t3.small" ], {"Ref": "InstanceType"} ] } ]

Fn::Contains

Retorna true se uma string especificada corresponder a pelo menos um valor em uma lista de strings.

Declaração

"Fn::Contains" : [[list_of_strings], string]

Parâmetros

list_of_strings

Uma lista de strings, como "A", "B", "C".

string

Uma string, como "A", que você compara com uma lista de strings.

Exemplo

A função a seguir será avaliada como true se o valor do parâmetro InstanceType estiver contido na lista (t3.large ou t3.small):

"Fn::Contains" : [ ["t3.large", "t3.small"], {"Ref" : "InstanceType"} ]

Fn::EachMemberEquals

Retorna true se uma string especificada corresponder a todos os valores em uma lista.

Declaração

"Fn::EachMemberEquals" : [[list_of_strings], string]

Parâmetros

list_of_strings

Uma lista de strings, como "A", "B", "C".

string

Uma string, como "A", que você compara com uma lista de strings.

Exemplo

A função a seguir retornará true se a etiqueta Department de todos os parâmetros do tipo AWS::EC2::VPC::Id tiver o valor de IT.

"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]

Fn::EachMemberIn

Retorna true se cada membro em uma lista de strings corresponder a pelo menos um valor em uma segunda lista de strings.

Declaração

"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]

Parâmetros

strings_to_check

Uma lista de strings, como "A", "B", "C". O CloudFormation verifica se cada membro no parâmetro strings_to_check está no parâmetro strings_to_match.

strings_to_match

Uma lista de strings, como "A", "B", "C". Cada membro no parâmetro strings_to_match é comparado com os membros do parâmetro strings_to_check.

Exemplo

A função a seguir verifica se os usuários especificam uma sub-rede que esteja em uma Virtual Private Cloud (VPC). A VPC deve estar na conta e na região em que os usuários estão trabalhando com a pilha. A função aplica-se a todos os parâmetros do tipo AWS::EC2::Subnet::Id.

"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]

Fn::Equals

Compara dois valores para determinar se eles são iguais. Retorna true se os dois valores forem iguais e false se eles não forem.

Declaração

"Fn::Equals" : ["value_1", "value_2"]

Parâmetros

value

Um valor de qualquer tipo para você comparar com outro valor.

Exemplo

O exemplo a seguir será avaliado como true se o valor do parâmetro EnvironmentType for igual a prod:

"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]

Fn::Not

Retorna true para uma condição que avalia como false e retorna false para uma condição que avalia como true. Fn::Not funciona como o operador NOT.

Declaração

"Fn::Not" : [{condition}]

Parâmetros

condition

Uma função intrínseca específica da regra que pode ser avaliada como true ou false.

Exemplo

O exemplo a seguir será avaliado como true se o valor do parâmetro EnvironmentType não for igual a prod:

"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]

Fn::Or

Retorna true se uma das condições especificadas for avaliada como true; retorna false se todas as condições forem avaliadas como false. Fn::Or funciona como um operador OR. O número mínimo de condições que você pode incluir é duas, e o máximo é dez.

Declaração

"Fn::Or" : [{condition}, {...}]

Parâmetros

condition

Uma função intrínseca específica da regra que pode ser avaliada como true ou false.

Exemplo

O exemplo a seguir será avaliado como true se o nome do grupo de segurança referenciado for igual a sg-mysggroup ou se o valor do parâmetro InstanceType for t3.large ou t3.small:

"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["t3.large", "t3.small"], {"Ref" : "InstanceType"}]} ]

Fn::RefAll

Retorna todos os valores de determinado tipo de parâmetro.

Declaração

"Fn::RefAll" : "parameter_type"

Parâmetros

parameter_type

Um tipo de parâmetro específico da AWS, como AWS::EC2::SecurityGroup::Id ou AWS::EC2::VPC::Id. Para obter mais informações, consulte Tipos de parâmetros específicos da AWS compatíveis no Guia do usuário do AWS CloudFormation.

Exemplo

A seguinte função retorna uma lista de todos os IDs da VPC para a região e para a Conta da AWS em que a pilha está sendo criada ou atualizada:

"Fn::RefAll" : "AWS::EC2::VPC::Id"

Fn::ValueOf

Retorna um valor de atributo ou lista de valores de um parâmetro e atributo específicos.

Declaração

"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]

Parâmetros

atributo

O nome de um atributo do qual você deseja recuperar um valor. Para obter mais informações sobre atributos, consulte Atributos compatíveis.

parameter_logical_id

O nome de um parâmetro do qual você deseja recuperar valores de atributos. O parâmetro já deve estar declarado na seção Parameters do modelo.

Exemplos

O exemplo a seguir retorna o valor da tag Department para a VPC que é especificada pelo parâmetro ElbVpc:

"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]

Se você especificar vários valores para um parâmetro, a função Fn::ValueOf poderá retornar uma lista. Por exemplo, você pode especificar várias sub-redes e obter uma lista de zonas de disponibilidade, em que cada membro é a Zona de disponibilidade de determinada sub-rede:

"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]

Fn::ValueOfAll

Retorna uma lista de valores de atributos de um tipo de parâmetro e atributo.

Declaração

"Fn::ValueOfAll" : ["parameter_type", "attribute"]

Parâmetros

atributo

O nome de um atributo do qual você quer recuperar um valor. Para obter mais informações sobre atributos, consulte Atributos compatíveis.

parameter_type

Um tipo de parâmetro específico da AWS, como AWS::EC2::SecurityGroup::Id ou AWS::EC2::VPC::Id. Para obter mais informações, consulte Tipos de parâmetros específicos da AWS compatíveis no Guia do usuário do AWS CloudFormation.

Exemplo

No exemplo a seguir, a função Fn::ValueOfAll retorna uma lista de valores, em que cada membro é o valor da tag Department das VPCs com essa tag:

"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]

Funções compatíveis

Você não pode usar outra função nas funções Fn::ValueOf e Fn::ValueOfAll. No entanto, você pode usar as seguintes funções dentro de todas as outras funções intrínsecas específicas de regras:

  • Ref

  • Outras funções intrínsecas específicas de regras

Atributos compatíveis

A lista a seguir descreve os valores de atributos que você pode recuperar para tipos específicos de recursos e parâmetros:

O tipo de parâmetro AWS::EC2::VPC::Id ou IDs da VPC.
  • DefaultNetworkAcl

  • DefaultSecurityGroup

  • Tags.tag_key

O tipo de parâmetro AWS::EC2::Subnet::Id ou IDs da sub-rede.
  • AvailabilityZone

  • Tags.tag_key

  • VpcId

O tipo de parâmetro AWS::EC2::SecurityGroup::Id ou IDs do grupo de segurança.
  • Tags.tag_key