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
Tópicos
- Propriedade UserData codificada em Base64
- Propriedade UserData codificada em Base64 com AccessKey e SecretKey
- Seção Parameters com um parâmetro de string literal
- Seção Parameters com parâmetro string com restrição de expressão regular
- Seção Parameters com parâmetros numéricos com restrições MinValue e MaxValue
- Seção Parameters com parâmetro numérico com a restrição AllowedValues
- Seção Parameters com um parâmetro CommaDelimitedList literal
- Seção Parameters com valor de parâmetro baseado em pseudoparâmetro
- Seção Mapping com três mapeamentos
- Description com base em string literal
- Seção Outputs com uma saída de string literal
- Seção Outputs com uma saída de referência de recurso e uma saída de referência de pseudoparâmetro
- Seção Outputs com uma saída com base em uma função, uma string literal, uma referência e um pseudoparâmetro
- Versão de formato do modelo
- a propriedade AWSTags
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çãoMetadata
. Para ter mais informações, consulte Sintaxe de Metadata de modelo do CloudFormation. -
A seção de modelo de
Outputs
. Para ter mais informações, consulte Sintaxe de Outputs de modelo do CloudFormation. -
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"