Funciones de reglas de AWS - AWS CloudFormation

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.

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}, {...}]

Parameters

condition

Una función intrínseca específica de una regla que se evalúa en true o en false.

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]

Parameters

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]

Parameters

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]]

Parameters

strings_to_check

Una lista de cadenas, como "A", "B", "C". CloudFormation comprueba si cada miembro del parámetro strings_to_check está presente en el parámetro strings_to_match.

strings_to_match

Una lista de cadenas, como "A", "B", "C". Cada miembro del parámetro strings_to_match se compara con los miembros del parámetro strings_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"]

Parameters

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}]

Parameters

condition

Una función intrínseca específica de una regla que se evalúa en true o en false.

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}, {...}]

Parameters

condition

Una función intrínseca específica de una regla que se evalúa en true o en false.

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"

Parameters

parameter_type

Tipo de parámetro específico de AWS, como AWS::EC2::SecurityGroup::Id o AWS::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" ]

Parameters

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"]

Parameters

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 o AWS::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