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.
Tópicos
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
oufalse
.
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âmetrostrings_to_check
está no parâmetrostrings_to_match
. - strings_to_match
-
Uma lista de strings, como
"A", "B", "C"
. Cada membro no parâmetrostrings_to_match
é comparado com os membros do parâmetrostrings_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
oufalse
.
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
oufalse
.
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
ouAWS::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
ouAWS::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
-