Trechos de modelos gerais - AWS CloudFormation

Trechos de modelos gerais

Os exemplos a seguir mostram diferentes recursos de modelos do CloudFormation que não são específicos de um serviço 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 de 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 valor 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âmetros numéricos 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 numérico com a 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 do tipo CommaDelimitedList é declarado. A propriedade NoEcho é definida como TRUE, o que mascara seu valor com asteriscos (*****) na saída describe-stacks, exceto pelas 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 Metadata.

  • 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 em 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"

Description com base em string literal

O exemplo a seguir descreve uma declaração válida da seção Description, onde o valor é baseado em uma string 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 string 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 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 string 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 AWSTemplateFormatVersion.

JSON

"AWSTemplateFormatVersion" : "2010-09-09"

YAML

AWSTemplateFormatVersion: '2010-09-09'

a propriedade AWSTags

Este exemplo mostra uma propriedade Tags 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"