Funções de regras da AWS - AWS CloudFormation

Funções de regras da AWS

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 AWS 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 um produto provisionado for criado ou atualizado. 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.

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 m1.large ou m1.small:

"Fn::And" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.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 (m1.large ou m1.small):

"Fn::Contains" : [ ["m1.large", "m1.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 tag 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 m1.large ou m1.small:

"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.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 Parâmetros no Guia do usuário do AWS CloudFormation.

Exemplo

A função a seguir retorna uma lista de todos os IDs da VPC para a região e 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ê quer recuperar um valor. Para obter mais informações sobre atributos, consulte Atributos compatíveis.

parameter_logical_id

O nome de um parâmetro para o qual você quer 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 Parâmetros 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 de AWS::EC2::VPC::Id ou IDs da VPC
  • DefaultNetworkAcl

  • DefaultSecurityGroup

  • Tags.tag_key

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

  • Tags.tag_key

  • VpcId

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