Trechos de modelos gerais - AWS CloudFormation

Trechos de modelos gerais

Os exemplos a seguir mostram diferentes recursos de modelos do AWS CloudFormation que não são específicos de um produto da AWS.

Propriedade UserData codificada em base64

Este exemplo mostra a montagem de uma propriedade UserData usando as funções Fn::Base64 e Fn::Join. As referências MyValue e MyName são parâmetros que devem ser definidos na seção Parameters do modelo. A sequência literal Hello World é apenas outro valor que este exemplo passa como parte do UserData.

JSON

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

YAML

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

Propriedade UserData codificada em base64 com AccessKey e SecretKey

Este exemplo mostra a montagem de uma propriedade UserData usando as funções Fn::Base64 e Fn::Join. Inclui as informações de AccessKey e SecretKey. As referências AccessKey e SecretKey são parâmetros que devem ser definidos na seção Parameters do modelo.

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}

Seção Parameters com um parâmetro String literal

O exemplo a seguir descreve uma declaração válida da seção Parameters na qual um único parâmetro de tipo String é declarado.

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

Seção Parameters com parâmetro String com restrição de expressão regular

O exemplo a seguir descreve uma declaração válida da seção Parameters na qual um único parâmetro de tipo String é declarado. O parâmetro AdminUserAccount tem um padrão de admin. O valor do parâmetro deve ter um tamanho mínimo de 1, um tamanho máximo de 16 e conter caracteres alfabéticos e numéricos, mas deve começar com um caractere 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]*'

Seção Parameters com parâmetro Number com restrições MinValue e MaxValue

O exemplo a seguir descreve uma declaração válida da seção Parameters na qual um único parâmetro de tipo Number é declarado. O parâmetro WebServerPort tem um padrão de 80, um valor mínimo de 1 e um 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

Seção Parameters com parâmetro Number com restrição AllowedValues

O exemplo a seguir descreve uma declaração válida da seção Parameters na qual um único parâmetro de tipo Number é declarado. O parâmetro WebServerPort tem um padrão de 80 e permite apenas valores de 80 e 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

Seção Parameters com um parâmetro CommaDelimitedList literal

O exemplo a seguir descreve uma declaração válida da seção Parameters na qual um único parâmetro de tipo CommaDelimitedList é declarado. A propriedade NoEcho é definida como TRUE, que vai mascarar seu valor com asteriscos (*****) na saída aws cloudformation describe-stacks, exceto informações armazenadas nos locais especificados abaixo.

Importante

O uso do atributo NoEcho não mascara informações armazenadas no seguinte:

  • A seção de modelo de Metadata. O CloudFormation não transforma, modifica nem edita nenhuma informação incluída na seção Metadata. Para ter mais informações, consulte Metadados.

  • A seção de modelo de Outputs. Para ter mais informações, consulte Outputs.

  • O atributo Metadata de uma definição de recurso. Para ter mais informações, consulte Atributo Metadata.

É altamente recomendável não usar esses mecanismos para incluir informações confidenciais, como senhas ou segredos.

Importante

Em vez de incorporar informações confidenciais diretamente em modelos do CloudFormation, recomendamos usar os parâmetros dinâmicos no modelo da pilha para fazer referência a informações confidenciais que são armazenadas e gerenciadas de forma externa ao CloudFormation, como no AWS Systems Manager Parameter Store ou no AWS Secrets Manager.

Para obter mais informações, consulte as práticas recomendadas do Não incorporar credenciais em seus modelos.

JSON

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

YAML

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

Seção Parameters com valor de parâmetro baseado no pseudoparâmetro

O exemplo a seguir mostra comandos nos dados do usuário do EC2 que usam os pseudoparâmetros AWS::StackName e AWS::Region. Para obter mais informações sobre pseudoparâmetros, consulte Referência 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}

Seção Mapping com três mapeamentos

O exemplo a seguir descreve uma declaração válida de seção Mapping que contém três mapeamentos. O mapa, quando correspondido a uma chave de mapeamento de Stop, SlowDown ou Go fornece os valores RGB atribuídos ao atributo RGBColor correspondente.

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"

Descrição com base em sequência literal

O exemplo a seguir descreve uma declaração válida da seção Description, onde o valor é baseado em uma sequência literal. Este trecho pode ser para modelos, parâmetros, recursos, propriedades ou saídas.

JSON

"Description" : "Replace this value"

YAML

Description: "Replace this value"

Seção Outputs com uma saída de sequência literal

Este exemplo mostra uma atribuição de saída com base em uma sequência 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

Seção Outputs com uma saída de referência de recurso de saída e uma saída de referência de pseudoparâmetro

Este exemplo mostra uma seção Outputs com duas atribuições de saída. Uma é baseada em um recurso, e a outra é baseada em uma pseudoreferência.

JSON

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

YAML

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

Seção Outputs com uma saída com base em uma função, uma sequência literal, uma referência e um pseudoparâmetro

Este exemplo mostra uma seção Outputs com uma atribuição de saída. A função Join é usada para concatenar o valor usando um sinal de porcentagem como delimitador.

JSON

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

YAML

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

Versão de formato do modelo

O trecho a seguir descreve uma declaração válida da seção Template Format Version.

JSON

"AWSTemplateFormatVersion" : "2010-09-09"

YAML

AWSTemplateFormatVersion: '2010-09-09'

Propriedade de tag da AWS

Este exemplo mostra uma propriedade de tag da AWS. Você pode especificar essa propriedade na seção Properties de um recurso. Quando o recurso é criado, ele será marcado com as tags que você declara.

JSON

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

YAML

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