Parámetros - AWS CloudFormation

Parámetros

Utilice la sección Parameters opcional para personalizar sus plantillas. Los parámetros le permiten introducir valores personalizados a su plantilla cada vez que crea o actualiza una pila.

Definición de un parámetro en una plantilla

En el siguiente ejemplo se declara un parámetro denominado InstanceTypeParameter. Este parámetro le permite especificar el tipo de instancia Amazon EC2 para la pila que se usará al crear o actualizar la pila.

Tenga en cuenta que InstanceTypeParameter tiene un valor predeterminado de t2.micro. Este es el valor que AWS CloudFormation usa para aprovisionar la pila a menos que se proporcione otro valor.

JSON

"Parameters" : { "InstanceTypeParameter" : { "Type" : "String", "Default" : "t2.micro", "AllowedValues" : ["t2.micro", "m1.small", "m1.large"], "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro." } }

YAML

Parameters: InstanceTypeParameter: Type: String Default: t2.micro AllowedValues: - t2.micro - m1.small - m1.large Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.

Referencia a un parámetro dentro de una plantilla

Puede usar la función intrínseca Ref para hacer referencia a un parámetro, mientras que AWS CloudFormation utiliza el valor del parámetro para aprovisionar la pila. Puede hacer referencia a los parámetros en las secciones Resources y Outputs de la misma plantilla.

En el siguiente ejemplo, la propiedad InstanceType del recurso de instancia de EC2 hace referencia al valor del parámetro InstanceTypeParameter:

JSON

"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceTypeParameter" }, "ImageId" : "ami-0ff8a91507f77f867" } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: InstanceType: Ref: InstanceTypeParameter ImageId: ami-0ff8a91507f77f867

Requisitos generales para los parámetros

Los siguientes requisitos se aplican al usar los parámetros:

  • Puede tener un máximo de 200 parámetros en una plantilla de AWS CloudFormation.

  • Cada parámetro debe recibir un nombre lógico (también llamado ID lógico), que tiene que ser alfanumérico y único entre todos los nombres lógicos dentro de la plantilla.

  • A cada parámetro se le debe asignar un tipo de parámetro compatible con AWS CloudFormation. Para obtener más información, consulte Tipo.

  • A cada parámetro se le debe asignar un valor en tiempo de ejecución para que AWS CloudFormation aprovisione correctamente la pila. Si lo desea, puede especificar un valor predeterminado para que AWS CloudFormation lo use a menos que se proporcione otro valor.

  • Los parámetros se deben declarar y se debe hacer referencia a ellos desde la misma plantilla. Puede hacer referencia a los parámetros en las secciones Resources y Outputs de la plantilla.

JSON

"Parameters" : { "ParameterLogicalID" : { "Type" : "DataType", "ParameterProperty" : "value" } }

YAML

Parameters: ParameterLogicalID: Type: DataType ParameterProperty: value

Propiedades

AllowedPattern

Una expresión regular que representa los patrones que hay que permitir para tipos String o CommaDelimitedList. Cuando se aplica a un parámetro del tipo String, el patrón debe coincidir con todo el valor del parámetro proporcionado. Cuando se aplica a un parámetro del tipo CommaDelimitedList, el patrón debe coincidir con cada valor de la lista.

Obligatorio: no

AllowedValues

Una matriz que contiene la lista de valores permitidos para el parámetro. Cuando se aplica a un parámetro del tipo String, el valor del parámetro debe ser uno de los valores permitidos. Cuando se aplica a un parámetro del tipo CommaDelimitedList, cada valor de la lista debe ser uno de los valores permitidos especificados.

Obligatorio: no

nota

Si usa YAML y quiere usar cadenas Yes y No para AllowedValues, use comillas simples para evitar que el analizador YAML considere estos valores booleanos.

ConstraintDescription

Una cadena que explica una restricción cuando se infringe la restricción. Por ejemplo, sin una descripción de la restricción, un parámetro con un patrón permitido de [A-Za-z0-9]+ muestra el siguiente mensaje de error cuando el usuario especifica un valor no válido:

Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+

Al añadir una descripción de restricción, como, por ejemplo debe contener únicamente letras (mayúsculas y minúsculas) y números, puede mostrar el siguiente mensaje de error personalizado:

Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers

Obligatorio: no

Default

Un valor del tipo apropiado para la plantilla que se debe utilizar si no se especifica ningún valor al crear una pila. Si define restricciones para el parámetro, debe especificar un valor que cumpla dichas restricciones.

Obligatorio: no

Description

Una cadena de hasta 4000 caracteres que describe el parámetro.

Obligatorio: no

MaxLength

Cualquier valor entero que determina el mayor número de caracteres que desea permitir para tipos de String.

Obligatorio: no

MaxValue

Un valor numérico que determina el mayor valor numérico que desea permitir para tipos de Number.

Obligatorio: no

MinLength

Un valor entero que determina el menor número de caracteres que desea permitir para tipos de String.

Obligatorio: no

MinValue

Un valor numérico que determina el menor valor numérico que desea permitir para tipos de Number.

Obligatorio: no

NoEcho

Si se va a enmascarar el valor del parámetro para impedir que se muestre en la consola, en las herramientas de línea de comandos o en la API. Si establece el atributo NoEcho en true, CloudFormation devuelve el valor del parámetro enmascarado como asteriscos (*****) para cualquier llamada que describa la pila o los eventos de la pila, excepto para la información almacenada en las ubicaciones especificadas a continuación.

Obligatorio: no

importante

El uso del atributo NoEcho no enmascara ninguna información almacenada en lo que se muestra a continuación:

  • La sección de la plantilla Metadata. CloudFormation no transforma, modifica ni redacta ninguna información que incluya en la sección Metadata. Para obtener más información, consulte Metadatos.

  • La sección de la plantilla Outputs. Para obtener más información, consulte Salidas.

  • El atributo Metadata de una definición de recurso. Para obtener más información, consulte Atributo Metadata.

Recomendamos encarecidamente que no utilice estos mecanismos para incluir información confidencial, como contraseñas o secretos.

importante

En lugar de integrar información confidencial directamente en las plantillas de CloudFormation, se recomienda utilizar parámetros dinámicos en la plantilla de la pila para hacer referencia a la información confidencial almacenada y administrada fuera de CloudFormation, como en AWS Systems Manager Parameter Store o AWS Secrets Manager.

Para obtener más información, consulte las Prácticas recomendadas de No integre credenciales en sus plantillas.

importante

Recomendamos encarecidamente no incluir parámetros NoEcho ni ningún dato confidencial en las propiedades de los recursos que formen parte del identificador principal de un recurso.

Cuando se incluye un parámetro de NoEcho en una propiedad que forma un identificador de recursos principal, CloudFormation puede usar el valor de texto sin formato real en el identificador del recurso principal. Este ID de recurso puede aparecer en cualquier destino o salida derivada.

Para determinar qué propiedades de recursos comprenden el identificador principal de un tipo de recurso, consulte la documentación de referencia de recursos para ese recurso. En la sección Return values (Valores de devolución), el valor de devolución de la función Ref representa las propiedades del recurso que comprenden el identificador principal del tipo de recurso.

Type

El tipo de datos para el parámetro (DataType).

Obligatorio: sí

AWS CloudFormation es compatible con los siguientes tipos de parámetros:

String

Una cadena literal.

Por ejemplo, los usuarios podrían especificar "MyUserName".

Number

Un número entero o flotante. AWS CloudFormation valida el valor del parámetro como un número; sin embargo, cuando se utiliza el parámetro en otro sitio en la plantilla (por ejemplo, mediante la utilización de la función intrínseca Ref), el valor del parámetro se convierte en una cadena.

Por ejemplo, los usuarios podrían especificar "8888".

List<Number>

Una matriz de números enteros o flotantes separados por comas. AWS CloudFormation valida el valor del parámetro como números; sin embargo, cuando se utiliza el parámetro en otro sitio en la plantilla (por ejemplo, mediante la utilización de la función intrínseca Ref), el valor del parámetro se convierte en una lista de cadenas.

Por ejemplo, los usuarios podrían especificar "80,20" y una Ref daría lugar a ["80","20"].

CommaDelimitedList

Una matriz de cadenas literales que están separadas por comas. El número total de cadenas debería ser uno más que el número total de comas. Además, en cada cadena de miembro se elimina el espacio.

Por ejemplo, los usuarios podrían especificar "test,dev,prod" y una Ref daría lugar a ["test","dev","prod"].

Tipos de parámetros específicos de AWS

Valores de AWS, como nombres de pares de claves e ID de VPC de Amazon EC2. Para obtener más información, consulte Tipos de parámetros específicos de AWS.

Tipos de parámetros SSM

Parámetros correspondientes a los parámetros existentes en Administrador de sistemas Parameter Store. Puede especificar una clave de Systems Manager como el valor del parámetro SSM y AWS CloudFormation recupera el valor más reciente de Parameter Store que se usará para la pila. Para obtener más información, consulte Tipos de parámetros de SSM.

Tipos de parámetros específicos de AWS

Los tipos de parámetros específicos de AWS son útiles para la captura de valores no válidos al comienzo de la creación o actualización de una pila. Para especificar parámetros con tipos específicos de AWS, un usuario de plantilla debe escribir valores existentes de AWS que estén en la cuenta de AWS. AWS CloudFormation valida dichos valores de entrada y los compara con los valores existentes en la cuenta. Por ejemplo, con el tipo de parámetro AWS::EC2::VPC::Id, un usuario debe escribir un ID de VPC existente que está en la cuenta y en la región en la que está creando la pila.

Si desea permitir que los usuarios de la plantilla introduzcan valores de entrada de diferentes cuentas de AWS, no defina parámetros con tipos específicos de AWS; en su lugar, defina los parámetros de tipo String (o CommaDelimitedList).

Tipos de parámetros específicos de AWS compatibles

AWS CloudFormation es compatible con los siguientes tipos específicos de AWS:

AWS::EC2::AvailabilityZone::Name

Una zona de disponibilidad, como por ejemplo us-west-2a.

AWS::EC2::Image::Id

Un ID de imagen de Amazon EC2, como por ejemplo ami-0ff8a91507f77f867. Tenga en cuenta que la consola de AWS CloudFormation no muestra una lista desplegable de valores para este tipo de parámetro.

AWS::EC2::Instance::Id

Un ID de instancia Amazon EC2, como por ejemplo i-1e731a32.

AWS::EC2::KeyPair::KeyName

Un nombre del par de claves de Amazon EC2.

AWS::EC2::SecurityGroup::GroupName

Un nombre del grupo de seguridad de VPC predeterminado o EC2-Classic, como por ejemplo my-sg-abc.

AWS::EC2::SecurityGroup::Id

Un ID de grupo de seguridad, como por ejemplo sg-a123fd85.

AWS::EC2::Subnet::Id

Un ID de subred, como por ejemplo subnet-123a351e.

AWS::EC2::Volume::Id

Un ID de volumen de Amazon EBS, como por ejemplo vol-3cdd3f56.

AWS::EC2::VPC::Id

Un ID de VPC, como por ejemplo vpc-a123baa3.

AWS::Route53::HostedZone::Id

Un ID de zona alojada de Amazon Route 53, como por ejemplo Z23YXV4OVPL04A.

List<AWS::EC2::AvailabilityZone::Name>

Una matriz de las zonas de disponibilidad de una región, como por ejemplo us-west-2a, us-west-2b.

List<AWS::EC2::Image::Id>

Una matriz de ID de imagen de Amazon EC2, como por ejemplo ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c. Tenga en cuenta que la consola de AWS CloudFormation no muestra una lista desplegable de valores para este tipo de parámetro.

List<AWS::EC2::Instance::Id>

Una matriz de ID de instancia Amazon EC2, como por ejemplo i-1e731a32, i-1e731a34.

List<AWS::EC2::SecurityGroup::GroupName>

Una matriz de los nombres de los grupos de seguridad de VPC predeterminados o EC2-Classic, como por ejemplo my-sg-abc, my-sg-def.

List<AWS::EC2::SecurityGroup::Id>

Una matriz de los ID de grupos de seguridad, como por ejemplo sg-a123fd85, sg-b456fd85.

List<AWS::EC2::Subnet::Id>

Una matriz de los IDs de subred, como por ejemplo subnet-123a351e, subnet-456b351e.

List<AWS::EC2::Volume::Id>

Una matriz de ID de volumen de Amazon EBS, como por ejemplo vol-3cdd3f56, vol-4cdd3f56.

List<AWS::EC2::VPC::Id>

Una matriz de los ID de VPC, como por ejemplo vpc-a123baa3, vpc-b456baa3.

List<AWS::Route53::HostedZone::Id>

Una matriz de ID de zonas alojadas de Amazon Route 53, como por ejemplo Z23YXV4OVPL04A, Z23YXV4OVPL04B.

Tipos de parámetros de SSM

Los tipos de parámetros SSM corresponden a parámetros existentes en el Systems Manager Parameter Store. Puede especificar una clave de Systems Manager como el valor del parámetro SSM y AWS CloudFormation recupera el valor más reciente de Parameter Store que se usará para la pila. Para los parámetros SSM almacenados en el mismo Cuenta de AWS, introduzca el nombre del parámetro. Para los parámetros SSM compartidos por otra Cuenta de AWS, introduzca el ARN completo del parámetro. Para obtener más información acerca de los parámetros de Systems Manager, consulte Systems Manager Parameter Store y Trabajar con parámetros compartidos en la Guía del usuario de AWS Systems Manager.

También puede usar el patrón de parámetro dinámico ssm o ssm-secure para especificar valores de parámetros en su plantilla. Para obtener más información, consulte Uso de referencias dinámicas para especificar valores de plantillas.

Al crear o actualizar pilas y crear conjuntos de cambios, AWS CloudFormation usa los valores que existan en Parameter Store en el momento de la ejecución de la operación. Si un parámetro especificado no existe en Parameter Store con la cuenta de AWS del intermediario, AWS CloudFormation devuelve un error de validación.

Al ejecutar un conjunto de cambios, AWS CloudFormation usa los valores que es especifican en el conjunto de cambios. Debe revisar estos valores antes de ejecutar el conjunto de cambios porque pueden cambiar en el almacén de parámetros entre el momento de la creación del conjunto de cambios y su ejecución.

sugerencia

Puede ver los valores resueltos de los parámetros SSM en la pestaña Parameters (Parámetros) de la pila de la consola o mediante la ejecución de describe-stacks o describe-change-set. Estos son los valores que se usan actualmente en la definición de pilas para las claves de parámetro Administrador de sistemas correspondientes. Tenga en cuenta que estos valores se establecen al crearse o actualizarse la pila, por lo que pueden diferir de los valores más recientes de Parameter Store.

Si especifica SecureStrings como valores de parámetros con el patrón ssm-secure, AWS CloudFormation no almacena el valor de la cadena segura ni lo muestra en la consola o en los resultados de las llamadas a la API.

Como el valor de un parámetro SSM es una clave de parámetro de Administrador de sistemas, debe tener en cuenta el siguiente comportamiento:

  • Para las actualizaciones de pilas, la opción Use existing value (Usar valor existente) de la consola y el atributo UsePreviousValue para update-stack indican a AWS CloudFormation que use la clave de parámetro de Systems Manager, no su valor. AWS CloudFormation siempre recupera los valores más recientes de Parameter Store al actualizar las pilas.

    Sin embargo, si utiliza el patrón de parámetro dinámico ssm o ssm-secure para especificar los valores de los parámetros, debe especificar una versión del parámetro de Systems Manager para que AWS CloudFormation lo use.

  • AWS CloudFormation puede llevar a cabo una validación en claves de parámetros de Systems Manager, pero no a sus valores correspondientes. Con fines de validación, puede tratar las claves de parámetro como cadenas. Debería llevar a cabo cualquier validación de los valores de parámetros de Administrador de sistemas en Parameter Store.

Consulte Tipos de parámetros de SSM para ver ejemplos de uso de los tipos de parámetros SSM.

Tipos de parámetros SSM admitidos

AWS CloudFormation admite los siguientes tipos de parámetros SSM:

AWS::SSM::Parameter::Name

El nombre de una clave de parámetro de Systems Manager.

Use este parámetro si desea transferir la clave de parámetro. Por ejemplo, puede usar este tipo para validar que el parámetro existe.

AWS::SSM::Parameter::Value<String>

Un parámetro de Systems Manager cuyo valor es una cadena. Esto corresponde al tipo de parámetro String en Parameter Store.

AWS::SSM::Parameter::Value<List<String>> o AWS::SSM::Parameter::Value<CommaDelimitedList>

Un parámetro de Administrador de sistemas cuyo valor es una lista de cadenas. Esto corresponde al tipo de parámetro StringList en Parameter Store.

AWS::SSM::Parameter::Value<AWS-specific parameter type>

Un parámetro de Systems Manager cuyo valor es un tipo de parámetro específico de AWS. Por ejemplo, lo siguiente especifica el tipo AWS::EC2::KeyPair::KeyName:

AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>

AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>

Un parámetro de Systems Manager cuyo valor es una lista de tipos de parámetros específicos de AWS. Por ejemplo, lo siguiente especifica una lista de tipos AWS::EC2::KeyPair::KeyName:

AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>

Tipos de parámetros SSM no admitidos

AWS CloudFormation no admite los siguientes tipos de parámetros SSM:

  • Listas de tipos de parámetros de SSM; por ejemplo: List<AWS::SSM::Parameter::Value<String>>

Además, AWS CloudFormation no es compatible con la definición de parámetros de plantillas como tipos de parámetros de Systems Manager SecureString. Sin embargo, también puede especificar SecureString como valores de parámetros para algunos recursos, usando patrones de parámetros dinámicos. Para obtener más información, consulte Uso de referencias dinámicas para especificar valores de plantillas.

Agrupación y orden de parámetros en la consola de AWS CloudFormation

Cuando utiliza la consola de AWS CloudFormation para crear o actualizar una pila, la consola muestra alfabéticamente parámetros de entrada por su ID lógico. Para anular el orden predeterminado, puede utilizar la clave de metadatos AWS::CloudFormation::Interface. Al agrupar y ordenar parámetros, facilita a los usuarios la especificación de los valores de los parámetros. Por ejemplo, puede agrupar todos los parámetros relacionados con la VPC de forma que no estén diseminados en una lista alfabética.

En la clave de metadatos, puede especificar los grupos que desea crear, los parámetros que desea incluir en cada grupo y el orden en el que la consola muestra cada parámetro dentro de su grupo. También puede definir nombres de parámetros fáciles de recordar, de forma que la consola muestre nombres descriptivos en lugar de los ID lógicos. Todos los parámetros a los que se hace referencia en la clave de metadatos deben declararse en la sección Parameters de la plantilla.

Para obtener más información y un ejemplo de la clave de metadatos AWS::CloudFormation::Interface, consulte AWS::CloudFormation::Interface.

Ejemplos

Parámetros de entrada básica

La siguiente sección Parameters de ejemplo declara dos parámetros. El parámetro DBPort es de tipo Number con un valor predeterminado de 3306. El valor mínimo que se puede especificar es 1150 y el valor máximo que se puede especificar es 65535. El parámetro DBPwd es de tipo String sin valor predeterminado. La propiedad NoEcho se establece en true para impedir que las llamadas describe stack, como el comando aws cloudformation describe-stacks de la AWS CLI, devuelvan el valor del parámetro. La longitud mínima que se puede especificar es 1 y la longitud máxima que se puede especificar es 41. El patrón permite caracteres alfabéticos en mayúsculas y minúsculas, y números.

JSON

"Parameters" : { "DBPort" : { "Default" : "3306", "Description" : "TCP/IP port for the database", "Type" : "Number", "MinValue" : "1150", "MaxValue" : "65535" }, "DBPwd" : { "NoEcho" : "true", "Description" : "The database admin account password", "Type" : "String", "MinLength" : "1", "MaxLength" : "41", "AllowedPattern" : "^[a-zA-Z0-9]*$" } }

YAML

Parameters: DBPort: Default: 3306 Description: TCP/IP port for the database Type: Number MinValue: 1150 MaxValue: 65535 DBPwd: NoEcho: true Description: The database admin account password Type: String MinLength: 1 MaxLength: 41 AllowedPattern: ^[a-zA-Z0-9]*$

Tipos de parámetros específicos de AWS

Cuando se utilizan tipos de parámetros específicos de AWS, un usuario que utilice la plantilla para crear o actualizar una pila debe especificar valores de AWS existentes que estén en la cuenta del usuario y en la región de la pila actual. Los tipos de parámetros específicos de AWS ayudan a garantizar que los valores de entrada para estos tipos de parámetros existan y sean correctos antes de que AWS CloudFormation cree o actualice cualquier recurso. Por ejemplo, si utiliza el tipo de parámetro AWS::EC2::KeyPair::KeyName, AWS CloudFormation valida el valor de entrada frente a los nombres de pares de clave existentes de los usuarios antes de crear cualquier recurso, como instancias de Amazon EC2.

Si un usuario utiliza la AWS Management Console, AWS CloudFormation rellena previamente los tipos de parámetros específicos de AWS con valores válidos. De esta forma el usuario no tiene que recordar y escribir correctamente un nombre específico o ID. Simplemente seleccionarían uno o más valores de una lista desplegable. Además, en función del tipo de parámetro, los usuarios pueden buscar valores por ID, nombre o el valor de la etiqueta del nombre. Para obtener más información, consulte Especificación del nombre de pila y los parámetros.

El siguiente ejemplo declara dos parámetros con los tipos AWS::EC2::KeyPair::KeyName y AWS::EC2::Subnet::Id. Estos tipos limitan los valores válidos a nombres de pares de claves existentes y los ID de subred. Dado que el parámetro mySubnetIDs se especifica como una lista, un usuario puede especificar uno o varios ID de subred.

JSON

"Parameters" : { "myKeyPair" : { "Description" : "Amazon EC2 Key Pair", "Type" : "AWS::EC2::KeyPair::KeyName" }, "mySubnetIDs" : { "Description" : "Subnet IDs", "Type" : "List<AWS::EC2::Subnet::Id>" } }

YAML

Parameters: myKeyPair: Description: Amazon EC2 Key Pair Type: "AWS::EC2::KeyPair::KeyName" mySubnetIDs: Description: Subnet IDs Type: "List<AWS::EC2::Subnet::Id>"

Compatibilidad con la AWS CLI y la API

En la actualidad, los usuarios no pueden utilizar la AWS CLI o la API de AWS CloudFormation a fin de ver una lista de los valores válidos para los parámetros específicos de AWS. Sin embargo, pueden ver información sobre cada uno de los parámetros, como el tipo de parámetros, ejecutando el comando aws cloudformation get-template-summary o la API GetTemplateSummary.

Tipo de parámetros de lista delimitados por comas

Puede utilizar el tipo de parámetro CommaDelimitedList para especificar múltiples valores de cadena en un único parámetro. De esta forma, puede utilizar un único parámetro en lugar de diferentes parámetros para especificar múltiples valores. Por ejemplo, si crea tres subredes diferentes con sus propios bloques de CIDR, podría utilizar tres parámetros diferentes para especificar tres bloques de CIDR diferentes. Sin embargo, es más sencillo utilizar un único parámetro que toma una lista de tres bloques de CIDR, tal y como se muestra en el siguiente fragmento de código:

JSON

"Parameters" : { "DbSubnetIpBlocks": { "Description": "Comma-delimited list of three CIDR blocks", "Type": "CommaDelimitedList", "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24" } }

YAML

Parameters: DbSubnetIpBlocks: Description: "Comma-delimited list of three CIDR blocks" Type: CommaDelimitedList Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"

Devuelva un valor de un parámetro de lista delimitada por comas

Para consultar un valor específico en una lista, utilice la función intrínseca Fn::Select en la sección Resources de la plantilla. Puede transferir el valor de índice del objeto que desea y una lista de objetos, tal y como se muestra en el siguiente fragmento de código:

JSON
"DbSubnet1" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "0", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "0", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet2" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "1", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "1", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet3" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "2", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "2", {"Ref" : "DbSubnetIpBlocks"} ] } } }
YAML
DbSubnet1: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [0, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [0, !Ref DbSubnetIpBlocks] DbSubnet2: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [1, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [1, !Ref DbSubnetIpBlocks] DbSubnet3: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [2, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [2, !Ref DbSubnetIpBlocks]

Tipos de parámetros de SSM

Tipo AWS::SSM::Parameter::Value<String>

En la siguiente plantilla se declara un tipo de parámetro AWS::SSM::Parameter::Value<String>.

JSON
{ "Parameters": { "InstanceType": { "Type": "AWS::SSM::Parameter::Value<String>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": { "Ref": "InstanceType" } } } } }
YAML
Parameters: InstanceType: Type: 'AWS::SSM::Parameter::Value<String>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: InstanceType: !Ref InstanceType

El siguiente comando crea una pila basada en la plantilla de ejemplo. Proporciona la clave de parámetro de Systems Manager (myInstanceType) como valor del parámetro de la plantilla InstanceType. Se presupone que el parámetro myInstanceType existe en Parameter Store en la cuenta de AWS del intermediario.

aws cloudformation create-stack --stack-name S1 --template-body example template --parameters ParameterKey=InstanceType,ParameterValue=myInstanceType

 

Tipo AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>

En la siguiente plantilla se declara un tipo de parámetro AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>.

JSON
{ "Parameters": { "ImageId": { "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } } } }
YAML
Parameters: ImageId: Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref ImageId

El siguiente comando crea una pila basada en la plantilla de ejemplo. Proporciona la clave de parámetro de Systems Manager (myLatestAMI) como valor del parámetro de la plantilla ImageId. Se presupone que el parámetro myLatestAMI existe en Parameter Store en la cuenta de AWS del intermediario.

aws cloudformation create-stack --stack-name S2 --template-body example template --parameters ParameterKey=ImageId,ParameterValue=myLatestAMI