Funciones de reglas de AWS
Puede utilizar funciones intrínsecas en la condición o en las declaraciones de una regla; por ejemplo, Fn::Equals
, Fn::Not
y Fn::RefAll
. La propiedad de condición determina si AWS CloudFormation aplicará las declaraciones. Si la condición se evalúa como true
, CloudFormation evalúa las declaraciones para comprobar si el valor de un parámetro es válido en el momento de crear o actualizar un producto provisionado. Si un valor de parámetro no es válido, CloudFormation no crea ni actualiza la pila. Si la condición se evalúa como false
, CloudFormation no comprueba el valor del parámetro y procede a llevar a cabo la operación de la pila.
Funciones
Fn::And
Devuelve true
si todas las condiciones especificadas se evalúan como true
; devuelve false
si alguna de las condiciones se evalúa como false
. Fn::And
actúa como operador AND. El número mínimo de condiciones que puede incluir es de dos y el máximo es de diez.
Declaración
"Fn::And" : [{condition
}, {...
}]
Parámetros
- condition
-
Una función intrínseca específica de una regla que se evalúa en
true
o enfalse
.
Ejemplo
En el siguiente ejemplo, la condición se evalúa en true
si el nombre del grupo de seguridad al que se hace referencia es igual a sg-mysggroup
y si el valor del parámetro InstanceType
es m1.large
o m1.small
:
"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "m1.large", "m1.small" ], {"Ref": "InstanceType"} ] } ]
Fn::Contains
Devuelve true
si una cadena especificada coincide con al menos uno de los valores de una lista de cadenas.
Declaración
"Fn::Contains" : [[list_of_strings
], string
]
Parámetros
- list_of_strings
-
Lista de cadenas, como
"A", "B", "C"
. - cadena
-
Una cadena, como
"A"
, que se desea comparar con una lista de cadenas.
Ejemplo
La siguiente función se evalúa en true
si el valor del parámetro InstanceType
figura en la lista (m1.large
o m1.small
):
"Fn::Contains" : [ ["m1.large", "m1.small"], {"Ref" : "InstanceType"} ]
Fn::EachMemberEquals
Devuelve true
si una cadena especificada coincide con todos los valores de una lista.
Declaración
"Fn::EachMemberEquals" : [[list_of_strings
], string
]
Parámetros
- list_of_strings
-
Lista de cadenas, como
"A", "B", "C"
. - cadena
-
Una cadena, como
"A"
, que se desea comparar con una lista de cadenas.
Ejemplo
La siguiente función devuelve true
si la etiqueta Department
para todos los parámetros de tipo AWS::EC2::VPC::Id
tiene un valor de IT
:
"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]
Fn::EachMemberIn
Devuelve true
si cada miembro de una lista de cadenas coincide con al menos un valor de una segunda lista de cadenas.
Declaración
"Fn::EachMemberIn" : [[strings_to_check
], [strings_to_match
]]
Parámetros
- strings_to_check
-
Una lista de cadenas, como
"A", "B", "C"
. CloudFormation comprueba si cada miembro del parámetrostrings_to_check
está presente en el parámetrostrings_to_match
. - strings_to_match
-
Una lista de cadenas, como
"A", "B", "C"
. Cada miembro del parámetrostrings_to_match
se compara con los miembros del parámetrostrings_to_check
.
Ejemplo
La siguiente función comprueba si los usuarios especifican una subred que pertenece a una nube virtual privada (VPC). La VPC debe encontrarse en la cuenta y la región en las que los usuarios trabajan con la pila. La función se aplica a todos los parámetros de tipo AWS::EC2::Subnet::Id
.
"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]
Fn::Equals
Compara dos valores para determinar si son iguales. Devuelve true
si los dos valores son iguales y false
si no lo son.
Declaración
"Fn::Equals" : ["value_1
", "value_2
"]
Parámetros
value
-
Un valor de cualquier tipo que se desea comparar con otro valor.
Ejemplo
El ejemplo siguiente se evalúa en true
si el valor del parámetro EnvironmentType
es igual a prod
:
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]
Fn::Not
Devuelve true
para una condición que se evalúa en false
y devuelve false
para una condición que se evalúa en true
. Fn::Not
actúa como operador NOT.
Declaración
"Fn::Not" : [{condition
}]
Parámetros
condition
-
Una función intrínseca específica de una regla que se evalúa en
true
o enfalse
.
Ejemplo
El ejemplo siguiente se evalúa como true
si el valor del parámetro EnvironmentType
no es igual a prod
:
"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]
Fn::Or
Devuelve true
si cualquiera de las condiciones especificadas se evalúa como true
; devuelve false
si todas las condiciones se evalúan como false
. Fn::Or
actúa como operador OR. El número mínimo de condiciones que puede incluir es de dos y el máximo es de diez.
Declaración
"Fn::Or" : [{condition
}, {...
}]
Parámetros
condition
-
Una función intrínseca específica de una regla que se evalúa en
true
o enfalse
.
Ejemplo
En el siguiente ejemplo, la condición se evalúa en true
si el nombre del grupo de seguridad al que se hace referencia es igual a sg-mysggroup
o si el valor del parámetro InstanceType
es m1.large
o m1.small
:
"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.small"], {"Ref" : "InstanceType"}]} ]
Fn::RefAll
Devuelve todos los valores de un tipo de parámetro determinado.
Declaración
"Fn::RefAll" : "parameter_type
"
Parámetros
- parameter_type
-
Tipo de parámetro específico de AWS, como
AWS::EC2::SecurityGroup::Id
oAWS::EC2::VPC::Id
. Para obtener más información, consulte Parámetros en la Guía del usuario de AWS CloudFormation.
Ejemplo
La siguiente función devuelve una lista de todos los ID de VPC de la región, y la Cuenta de AWS en los que se crea o actualiza la pila:
"Fn::RefAll" : "AWS::EC2::VPC::Id"
Fn::ValueOf
Devuelve un valor de atributo o una lista de valores para un parámetro y un atributo específicos.
Declaración
"Fn::ValueOf" : [ "parameter_logical_id
", "attribute
" ]
Parámetros
- atributo
-
El nombre de un atributo del que desea recuperar un valor. Para obtener más información acerca de los atributos, consulte Atributos admitidos.
- parameter_logical_id
-
Nombre de un parámetro del que desea recuperar valores de atributo. El parámetro debe declararse en la sección
Parameters
de la plantilla.
Ejemplos
El siguiente ejemplo devuelve el valor de la etiqueta Department
de la VPC que se especifica en el parámetro ElbVpc
:
"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]
Si especifica varios valores para un parámetro, la función Fn::ValueOf puede devolver una lista. Por ejemplo, puede especificar varias subredes y obtener una lista de zonas de disponibilidad en la que cada miembro sea la zona de disponibilidad de una subred determinada:
"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]
Fn::ValueOfAll
Devuelve una lista de todos los valores de atributo de un tipo de parámetro y un atributo determinados.
Declaración
"Fn::ValueOfAll" : ["parameter_type
", "attribute
"]
Parámetros
- atributo
-
El nombre de un atributo del que desea recuperar un valor. Para obtener más información acerca de los atributos, consulte Atributos admitidos.
- parameter_type
-
Tipo de parámetro específico de AWS, como
AWS::EC2::SecurityGroup::Id
oAWS::EC2::VPC::Id
. Para obtener más información, consulte Parámetros en la Guía del usuario de AWS CloudFormation.
Ejemplo
En el siguiente ejemplo, la función Fn::ValueOfAll
devuelve una lista de valores en la que cada miembro es el valor de la etiqueta Department
de las VPC que tienen esa etiqueta:
"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]
Funciones compatibles
No puede utilizar otra función en las funciones Fn::ValueOf
y Fn::ValueOfAll
. No obstante, puede utilizar las siguientes funciones dentro de todas las demás funciones intrínsecas específicas de reglas:
-
Ref
-
Otras funciones intrínsecas específicas de reglas
Atributos admitidos
En la siguiente lista se describen los valores de los atributos que puede recuperar para recursos y tipos de parámetros concretos:
- El tipo de parámetro
AWS::EC2::VPC::Id
o los identificadores de la VPC. -
-
DefaultNetworkAcl
-
DefaultSecurityGroup
-
Tags.
tag_key
-
- El tipo de parámetro
AWS::EC2::Subnet::Id
o los ID de subred -
-
AvailabilityZone
-
Tags.
tag_key
-
VpcId
-
- El tipo de parámetro
AWS::EC2::SecurityGroup::Id
o los identificadores de grupo de seguridad. -
-
Tags.
tag_key
-