Fragmentos de código de plantillas generales - AWS CloudFormation

Fragmentos de código de plantillas generales

Los siguientes ejemplos muestran diferentes características de plantilla de AWS CloudFormation que no son específicas de un servicio de AWS.

Propiedad UserData con codificación Base64

Este ejemplo muestra el conjunto de una propiedad UserData que utiliza las funciones Fn::Base64 y Fn::Join. Las referencias MyValue y MyName son parámetros que deben definirse en la sección Parameters de la plantilla. La cadena literal Hello World es simplemente otro valor que este ejemplo introduce como parte de los UserData.

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : [ ",", [ { "Ref" : "MyValue" }, { "Ref" : "MyName" }, "Hello World" ] ] } }

YAML

UserData: Fn::Base64: !Sub | Ref: MyValue Ref: MyName Hello World

Propiedad UserData con codificación Base64 con AccessKey y SecretKey

Este ejemplo muestra el conjunto de una propiedad UserData que utiliza las funciones Fn::Base64 y Fn::Join. Incluye la información AccessKey y SecretKey. Las referencias AccessKey y SecretKey son parámetros que deben definirse en la sección Parameters de la plantilla.

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "ACCESS_KEY=", { "Ref" : "AccessKey" }, "SECRET_KEY=", { "Ref" : "SecretKey" } ] ] } }

YAML

UserData: Fn::Base64: !Sub | ACCESS_KEY=${AccessKey} SECRET_KEY=${SecretKey}

Sección Parameters con un parámetro de cadena literal

El siguiente ejemplo muestra una declaración de la sección Parameters (Parámetros) válida en la que se declara un parámetro de tipo String individual.

JSON

"Parameters" : { "UserName" : { "Type" : "String", "Default" : "nonadmin", "Description" : "Assume a vanilla user if no command-line spec provided" } }

YAML

Parameters: UserName: Type: String Default: nonadmin Description: Assume a vanilla user if no command-line spec provided

Sección Parameters con parámetro de cadena con limitación de expresiones regulares

El siguiente ejemplo muestra una declaración de la sección Parameters (Parámetros) válida en la que se declara un parámetro de tipo String individual. El parámetro AdminUserAccount tiene el valor predeterminado admin. El valor del parámetro debe tener una longitud mínima de 1, una longitud máxima de 16 y contener caracteres alfabéticos y números, pero debe comenzar por un carácter alfabético.

JSON

"Parameters" : { "AdminUserAccount": { "Default": "admin", "NoEcho": "true", "Description" : "The admin account user name", "Type": "String", "MinLength": "1", "MaxLength": "16", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*" } }

YAML

Parameters: AdminUserAccount: Default: admin NoEcho: true Description: The admin account user name Type: String MinLength: 1 MaxLength: 16 AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'

Sección Parameters con parámetro numérico con limitaciones MinValue y MaxValue

El siguiente ejemplo muestra una declaración de la sección Parameters (Parámetros) válida en la que se declara un parámetro de tipo Number individual. El parámetro WebServerPort tiene un valor predeterminado de 80, un valor mínimo de 1 y un valor máximo de 65535.

JSON

"Parameters" : { "WebServerPort": { "Default": "80", "Description" : "TCP/IP port for the web server", "Type": "Number", "MinValue": "1", "MaxValue": "65535" } }

YAML

Parameters: WebServerPort: Default: 80 Description: TCP/IP port for the web server Type: Number MinValue: 1 MaxValue: 65535

Sección Parameters con parámetro numérico con limitación AllowedValues

El siguiente ejemplo muestra una declaración de la sección Parameters (Parámetros) válida en la que se declara un parámetro de tipo Number individual. El parámetro WebServerPort tiene un valor predeterminado de 80 y solo permite valores de 80 y 8888.

JSON

"Parameters" : { "WebServerPortLimited": { "Default": "80", "Description" : "TCP/IP port for the web server", "Type": "Number", "AllowedValues" : ["80", "8888"] } }

YAML

Parameters: WebServerPortLimited: Default: 80 Description: TCP/IP port for the web server Type: Number AllowedValues: - 80 - 8888

Sección Parameters con un parámetro CommaDelimitedList literal

El siguiente ejemplo muestra una declaración de la sección Parameters (Parámetros) válida en la que se declara un parámetro de tipo CommaDelimitedList individual. La propiedad NoEcho se establece en TRUE, lo que enmascara su valor con asteriscos (*****) en la salida aws cloudformation describe-stacks, excepto para la información almacenada en las ubicaciones especificadas a continuación.

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.

JSON

"Parameters" : { "UserRoles" : { "Type" : "CommaDelimitedList", "Default" : "guest,newhire", "NoEcho" : "TRUE" } }

YAML

Parameters: UserRoles: Type: CommaDelimitedList Default: "guest,newhire" NoEcho: true

Sección Parameters con valor de parámetros basado en pseudoparámetro

El siguiente ejemplo muestra comandos en los datos de usuario de EC2 que utilizan los pseudoparámetros AWS::StackName y AWS::Region. Para obtener más información sobre pseudoparámetros, consulte Referencia de pseudoparámetros.

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --region ", { "Ref" : "AWS::Region" }, "\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServerGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}} }

YAML

UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --region ${AWS::Region} /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}

Sección Mapping con tres asignaciones

El siguiente ejemplo muestra una declaración de sección Mapping válida que contiene tres mapeos. La asignación, cuando coincide con una clave de mapeo de Stop, SlowDown o Go, proporciona los valores RGB asignados al atributo RGBColor correspondiente.

JSON

"Mappings" : { "LightColor" : { "Stop" : { "Description" : "red", "RGBColor" : "RED 255 GREEN 0 BLUE 0" }, "SlowDown" : { "Description" : "yellow", "RGBColor" : "RED 255 GREEN 255 BLUE 0" }, "Go" : { "Description" : "green", "RGBColor" : "RED 0 GREEN 128 BLUE 0" } } }

YAML

Mappings: LightColor: Stop: Description: red RGBColor: "RED 255 GREEN 0 BLUE 0" SlowDown: Description: yellow RGBColor: "RED 255 GREEN 255 BLUE 0" Go: Description: green RGBColor: "RED 0 GREEN 128 BLUE 0"

Descripción basada en cadena literal

El siguiente ejemplo muestra una declaración de sección Description válida donde el valor se basa en una cadena literal. Este fragmento de código puede ser para plantillas, parámetros, recursos, propiedades o salidas.

JSON

"Description" : "Replace this value"

YAML

Description: "Replace this value"

Sección Outputs con una salida de cadena literal

Este ejemplo muestra una asignación de salida basada en una cadena literal.

JSON

"Outputs" : { "MyPhone" : { "Value" : "Please call 555-5555", "Description" : "A random message for aws cloudformation describe-stacks" } }

YAML

Outputs: MyPhone: Value: Please call 555-5555 Description: A random message for aws cloudformation describe-stacks

Sección Outputs con una referencia de recursos y una salida de pseudoreferencia

Este ejemplo muestra una sección Outputs con dos asignaciones de salida. Una se basa en un recurso y la otra se basa en una pseudoreferencia.

JSON

"Outputs" : { "SNSTopic" : { "Value" : { "Ref" : "MyNotificationTopic" } }, "StackName" : { "Value" : { "Ref" : "AWS::StackName" } } }

YAML

Outputs: SNSTopic: Value: !Ref MyNotificationTopic StackName: Value: !Ref AWS::StackName

Sección Outputs con una salida basada en una función, una cadena literal, una referencia y un pseudoparámetro

Este ejemplo muestra una sección Outputs con una asignación de salida. La función Join se utiliza para concatenar el valor con un signo de porcentaje como delimitador.

JSON

"Outputs" : { "MyOutput" : { "Value" : { "Fn::Join" : [ "%", [ "A-string", {"Ref" : "AWS::StackName" } ] ] } } }

YAML

Outputs: MyOutput: Value: !Join [ %, [ 'A-string', !Ref 'AWS::StackName' ]]

Versión de formato de plantilla

El siguiente fragmento de código muestra una declaración válida de sección Template Format Version.

JSON

"AWSTemplateFormatVersion" : "2010-09-09"

YAML

AWSTemplateFormatVersion: '2010-09-09'

Propiedad de etiquetas de AWS

Este ejemplo muestra una propiedad de etiquetas de AWS. Esta propiedad se especifica dentro de la sección Properties de un recurso. Cuando se crea el recurso, se etiqueta con las etiquetas que usted declare.

JSON

"Tags" : [ { "Key" : "keyname1", "Value" : "value1" }, { "Key" : "keyname2", "Value" : "value2" } ]

YAML

Tags: - Key: "keyname1" Value: "value1" - Key: "keyname2" Value: "value2"