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.
Funções
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 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 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 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
ouAWS::EC2::VPC::Id
. Para obter mais informações, consulte Parâmetros 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ê 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
ouAWS::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
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
-