Parâmetros
Use seção opcional Parameters
para personalizar os modelos. Os parâmetros permitem que você insira valores personalizados em seu modelo toda vez que criar ou atualizar uma pilha.
Definir um parâmetro em um modelo
O exemplo a seguir declara um parâmetro chamado InstanceTypeParameter
. Esse parâmetro permite que você especifique o tipo de instância do Amazon EC2 para a pilha a ser usada ao criar ou atualizar a pilha.
Observe que InstanceTypeParameter
tem um valor padrão de t2.micro
. Esse é o valor que o AWS CloudFormation usará para provisionar a pilha, a menos que outro valor seja fornecido.
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.
Fazer referência a um parâmetro em um modelo
Você usa a função intrínseca Ref
para fazer referência a um parâmetro, e o AWS CloudFormation usa o valor do parâmetro para provisionar a pilha. Você pode fazer referência a parâmetros nas seções Resources
e Outputs
do mesmo modelo.
No exemplo a seguir, a propriedade InstanceType
do recurso da instância do EC2 faz referência ao valor do 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 gerais de parâmetros
Os seguintes requisitos se aplicam ao usar parâmetros:
-
Você pode ter no máximo 200 parâmetros em um modelo do AWS CloudFormation.
-
Cada parâmetro deve receber um nome lógico (também chamado de ID lógico), que deve ser alfanumérico e exclusivo entre todos os nomes lógicos no modelo.
-
A cada parâmetro deve ser atribuído um tipo de parâmetro que seja compatível com o AWS CloudFormation. Para obter mais informações, consulte Tipo.
-
Cada parâmetro deve receber um valor no runtime para que o AWS CloudFormation provisione a pilha com êxito. Opcionalmente, você pode especificar um valor padrão para o AWS CloudFormation usar, a menos que outro valor seja fornecido.
-
Os parâmetros devem ser declarados e referenciados no mesmo modelo. Você pode fazer referência a parâmetros nas seções
Resources
eOutputs
do modelo.
JSON
"Parameters" : { "
ParameterLogicalID
" : { "Type" : "DataType
", "ParameterProperty
" : "value
" } }
YAML
Parameters:
ParameterLogicalID
: Type:DataType
ParameterProperty
:value
Propriedades
AllowedPattern
-
Uma expressão regular que representa os padrões a serem permitidos para tipos
String
ouCommaDelimitedList
. Quando aplicado a um parâmetro do tipoString
, o padrão deve corresponder ao valor de parâmetro inteiro fornecido. Quando aplicado a um parâmetro do tipoCommaDelimitedList
, o padrão deve corresponder a cada valor da lista.Obrigatório: não
AllowedValues
-
Uma matriz que contém a lista de valores permitidos para o parâmetro. Quando aplicado a um parâmetro do tipo
String
, o valor do parâmetro deve ser um dos valores permitidos. Quando aplicado a um parâmetro do tipoCommaDelimitedList
, cada valor da lista deve ser um dos valores permitidos especificados.Obrigatório: não
nota
Se você estiver usando YAML e quiser usar as strings
Yes
eNo
paraAllowedValues
, use aspas simples para evitar que o analisador YAML considere esses valores como booleanos. ConstraintDescription
-
Uma sequência que explica uma restrição quando a restrição é violada. Por exemplo, sem uma descrição da restrição, um parâmetro que tem um padrão permitido de
[A-Za-z0-9]+
exibe a seguinte mensagem de erro quando o usuário especifica um valor inválido:Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+
Ao adicionar uma descrição de restrição, como deve conter apenas letras (maiúsculas e minúsculas) e números, você pode exibir a seguinte mensagem de erro personalizada:
Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers
Obrigatório: não
Default
-
Um valor do tipo apropriado para o modelo a ser usado se nenhum valor for especificado quando uma pilha é criada. Se definir restrições para o parâmetro, você deverá especificar um valor que esteja de acordo com essas restrições.
Obrigatório: não
Description
-
Uma sequência de até 4000 caracteres que descreve o parâmetro.
Obrigatório: não
MaxLength
-
Um valor inteiro que determina o maior número de caracteres que você deseja permitir para tipos
String
.Obrigatório: não
MaxValue
-
Um valor numérico que determina o maior valor numérico que você deseja permitir para tipos
Number
.Obrigatório: não
MinLength
-
Um valor inteiro que determina o menor número de caracteres que você deseja permitir para tipos
String
.Obrigatório: não
MinValue
-
Um valor numérico que determina o menor valor numérico que você deseja permitir para tipos
Number
.Obrigatório: não
NoEcho
-
Se o valor do parâmetro deve ser mascarado para impedir que ele seja exibido no console, nas ferramentas de linha de comando ou na API. Se você definir o atributo
NoEcho
comotrue
, o CloudFormation retornará o valor do parâmetro mascarado como asteriscos (*****) para qualquer chamada que descreva a pilha ou os eventos de pilha, exceto informações armazenadas nos locais especificados abaixo.Obrigatório: não
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 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.
Importante
É altamente recomendável evitar parâmetros
NoEcho
, ou dados confidenciais, nas propriedades do recurso que fazem parte do identificador primário de um recurso.Quando um parâmetro
NoEcho
está incluído em uma propriedade que forma um identificador de recurso primário, o CloudFormation pode utilizar o valor de texto sem formatação real no identificador do recurso primário. Esse ID de recurso pode aparecer em quaisquer saídas ou destinos derivados.Para determinar quais propriedades de recursos compreendem o identificador primário de um tipo de recurso, consulte a documentação de referência de recursos desse recurso. Na seção Return values (Valores de retorno), o valor de retorno da função
Ref
representa as propriedades do recurso que compõem o identificador primário do tipo de recurso. -
Type
-
O tipo de dados para o parâmetro (
DataType
).Obrigatório: Sim
O AWS CloudFormation oferece suporte aos seguintes tipos de parâmetros:
String
-
Uma sequência literal.
Por exemplo, os usuários podem especificar
"MyUserName"
. Number
-
Um número inteiro ou flutuante. O AWS CloudFormation valida o valor do parâmetro como um número. No entanto, quando você usar o parâmetro em outro lugar no modelo (por exemplo, usando a função intrínseca
Ref
), o valor do parâmetro se tornará uma sequência.Por exemplo, os usuários podem especificar
"8888"
. List<Number>
-
Uma matriz de números inteiros ou flutuantes separados por vírgulas. O AWS CloudFormation valida o valor do parâmetro como números. No entanto, quando você usar o parâmetro em outro lugar no modelo (por exemplo, usando a função intrínseca
Ref
), o valor do parâmetro se tornará uma lista de sequência.Por exemplo, os usuários poderiam especificar
"80,20"
, e umaRef
resultaria em["80","20"]
. CommaDelimitedList
-
Uma matriz de sequências literais que são separadas por vírgulas. O total de sequências deve ser um número a mais que o número total de vírgulas. Além disso, cada sequência membro é truncado por espaço.
Por exemplo, os usuários poderiam especificar
"test,dev,prod"
, e umaRef
resultaria em["test","dev","prod"]
. - Tipos de parâmetros específicos da AWS
-
Os valores da AWS, como nomes de pares de chaves do Amazon EC2 e IDs de VPC. Para ter mais informações, consulte Tipos de parâmetros específicos da AWS.
- Tipos de parâmetros
SSM
-
Parâmetros que correspondem a parâmetros existentes no Armazenamento de parâmetros do Systems Manager. Você especifica uma chave de parâmetro do Systems Manager com o valor do parâmetro
SSM
, e o AWS CloudFormation busca o valor mais recente no Armazenamento de parâmetros a ser usado para a pilha. Para ter mais informações, consulte Tipos de parâmetros SSM.
Tipos de parâmetros específicos da AWS
Os tipos de parâmetros específicos da AWS são úteis para detectar valores inválidos no início da criação ou da atualização de uma pilha. Para especificar parâmetros com tipos específicos da AWS, um usuário do modelo deve especificar valores da AWS existentes em sua conta da AWS. O AWS CloudFormation valida esses valores de entrada em relação aos valores já existentes na conta. Por exemplo, com o tipo de parâmetro AWS::EC2::VPC::Id
, um usuário deve inserir um ID de VPC existente que esteja em sua conta e na região em que ele está criando a pilha.
Se você deseja permitir que os usuários do modelo insiram valores de entrada de diferentes contas da AWS, não defina parâmetros com tipos específicos da AWS. Em vez disso, defina parâmetros do tipo String
ou CommaDelimitedList
.
Tipos de parâmetros específicos da AWS compatíveis
O AWS CloudFormation oferece suporte aos seguintes tipos específicos da AWS:
AWS::EC2::AvailabilityZone::Name
-
Uma Zona de disponibilidade, como
us-west-2a
. AWS::EC2::Image::Id
-
Um ID de imagem do Amazon EC2, como
ami-0ff8a91507f77f867
. Observe que o console do AWS CloudFormation não mostra uma lista suspensa de valores para esse tipo de parâmetro. AWS::EC2::Instance::Id
-
Um ID de instância do Amazon EC2, como
i-1e731a32
. AWS::EC2::KeyPair::KeyName
-
Um nome do par de chaves do Amazon EC2.
AWS::EC2::SecurityGroup::GroupName
-
Um nome de security group do EC2-Classic ou da VPC padrão, como o nome do security group
my-sg-abc
. AWS::EC2::SecurityGroup::Id
-
Um ID de security group, como
sg-a123fd85
. AWS::EC2::Subnet::Id
-
Um ID de sub-rede, como
subnet-123a351e
. AWS::EC2::Volume::Id
-
Um ID de volume do Amazon EBS, como
vol-3cdd3f56
. AWS::EC2::VPC::Id
-
Um ID de VPC, como
vpc-a123baa3
. AWS::Route53::HostedZone::Id
-
Um ID de zona hospedada do Amazon Route 53, como
Z23YXV4OVPL04A
. List<AWS::EC2::AvailabilityZone::Name>
-
Uma matriz de Zonas de disponibilidade de uma região, como
us-west-2a, us-west-2b
. List<AWS::EC2::Image::Id>
-
Uma matriz de IDs de imagens do Amazon EC2, como
ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c
. Observe que o console do AWS CloudFormation não mostra uma lista suspensa de valores para esse tipo de parâmetro. List<AWS::EC2::Instance::Id>
-
Uma matriz de IDs de instâncias do Amazon EC2, como
i-1e731a32, i-1e731a34
. List<AWS::EC2::SecurityGroup::GroupName>
-
Uma matriz de nomes de security groups do EC2-Classic ou de VPC padrão, como
my-sg-abc, my-sg-def
. List<AWS::EC2::SecurityGroup::Id>
-
Uma matriz de IDs de security groups, como
sg-a123fd85, sg-b456fd85
. List<AWS::EC2::Subnet::Id>
-
Uma matriz de IDs de sub-rede, como
subnet-123a351e, subnet-456b351e
. List<AWS::EC2::Volume::Id>
-
Uma matriz de IDs de volumes do Amazon EBS, como
vol-3cdd3f56, vol-4cdd3f56
. List<AWS::EC2::VPC::Id>
-
Uma matriz de IDs de VPC, como
vpc-a123baa3, vpc-b456baa3
. List<AWS::Route53::HostedZone::Id>
-
Uma matriz de IDs de zonas hospedadas do Amazon Route 53, como
Z23YXV4OVPL04A, Z23YXV4OVPL04B
.
Tipos de parâmetros SSM
Os tipos de parâmetros SSM correspondem a parâmetros existentes no repositório de parâmetros do Systems Manager. Você especifica uma chave de parâmetro do Systems Manager com o valor do parâmetro SSM
, e o AWS CloudFormation busca o valor mais recente no Armazenamento de parâmetros a ser usado para a pilha. Para parâmetros SSM armazenados na mesma Conta da AWS, insira o nome do parâmetro. Para parâmetros SSM compartilhados por outra Conta da AWS, insira o ARN completo do parâmetro. Para obter mais informações sobre os parâmetros do Systems Manager, consulte Repositório de parâmetros do Systems Manager e Como trabalhar com parâmetros compartilhados no Guia do usuário do AWS Systems Manager.
Você também pode usar o padrão de parâmetro dinâmico ssm-secure
ou ssm
para especificar valores de parâmetros no seu modelo. Para ter mais informações, consulte Usar referências dinâmicas para especificar valores de modelos.
Ao criar ou atualizar pilhas e criar conjuntos de alterações, o AWS CloudFormation usa quaisquer valores existentes no Armazenamento de parâmetros no momento em que a operação é executada. Se não houver um parâmetro especificado no armazenamento de parâmetros, sob a conta da AWS do chamador, o AWS CloudFormation retornará um erro de validação.
Quando você executa um conjunto de alterações, o AWS CloudFormation usa os valores especificados no conjunto de alterações. Você deve analisar esses valores antes de executar o conjunto de alterações, pois eles podem ser alterados no Armazenamento de parâmetros entre o momento em que você cria o conjunto de alterações e momento em que o executa.
dica
Você pode ver os valores resolvidos para parâmetros SSM
na guia Parameters da pilha no console ou executando describe-stacks
ou describe-change-set
. Esses são os valores que são usados atualmente na definição da pilha para as chaves dos parâmetros do Systems Manager correspondentes. Observe que esses valores são definidos quando a pilha é criada ou atualizada e, portanto, podem ser diferentes dos últimos valores no Armazenamento de parâmetros.
Se você especificar sequências seguras como valores de parâmetro usando o padrão ssm-secure
, o AWS CloudFormation não armazenará o valor de sequência segura ou não o exibirá no console ou nos resultados das chamadas de API.
Como o valor de um parâmetro SSM
é uma chave de parâmetro do Systems Manager, você deve estar ciente do seguinte comportamento:
-
Para atualizações de pilha, a opção Use existing value (Usar valor existente) no console e o atributo
UsePreviousValue
paraupdate-stack
instruem o AWS CloudFormation a usar a chave de parâmetro existente do Systems Manager, e não o seu valor. O AWS CloudFormation sempre busca os valores mais recentes no armazenamento de parâmetros ao atualizar pilhas.No entanto, se você usar o padrão de parâmetro dinâmico
ssm-secure
oussm
para especificar valores de parâmetros, deverá especificar uma versão do parâmetro do Systems Manager para o AWS CloudFormation usar. -
O AWS CloudFormation pode realizar a validação de chaves de parâmetros do Systems Manager, mas não de seus valores correspondentes. Para fins de validação, você pode tratar as chaves de parâmetros como sequências. Você deve fazer qualquer validação de valores de parâmetros do Systems Manager no armazenamento de parâmetros.
Consulte SSM Tipos de parâmetros para obter exemplos que usam tipos de parâmetros do SSM
.
Tipos de parâmetros SSM compatíveis
O AWS CloudFormation oferece suporte aos seguintes tipos de parâmetros do SSM
:
AWS::SSM::Parameter::Name
-
O nome de uma chave de parâmetro do Systems Manager.
Use esse parâmetro quando desejar passar a chave do parâmetro. Por exemplo, você pode usar esse tipo para validar se o parâmetro existe.
AWS::SSM::Parameter::Value<String>
-
Um parâmetro do Systems Manager cujo valor é uma sequência. Corresponde ao tipo de parâmetro
String
no Armazenamento de parâmetros. AWS::SSM::Parameter::Value<List<String>>
ouAWS::SSM::Parameter::Value<CommaDelimitedList>
-
Um parâmetro do Systems Manager cujo valor é uma lista de sequências. Corresponde ao tipo de parâmetro
StringList
no Armazenamento de parâmetros. AWS::SSM::Parameter::Value<
AWS-specific parameter type
>-
Um parâmetro do Systems Manager cujo valor é um tipo de parâmetro específico da AWS. Por exemplo, o seguinte especifica o tipo
AWS::EC2::KeyPair::KeyName
:AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>
AWS::SSM::Parameter::Value<List<
AWS-specific parameter type
>>-
Um parâmetro do Systems Manager cujo valor é uma lista de tipos de parâmetros específicos da AWS. Por exemplo, o seguinte especifica uma lista de tipos
AWS::EC2::KeyPair::KeyName
:AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>
Tipos de parâmetros SSM incompatíveis
O AWS CloudFormation não é compatível com os seguintes tipos de parâmetros do SSM
:
-
Listas de tipos de parâmetros do
SSM
. Por exemplo:List<AWS::SSM::Parameter::Value<String>>
Além disso, o AWS CloudFormation não é compatível com a definição de parâmetros de modelo como tipos de parâmetros SecureString
do Systems Manager. No entanto, você pode especificar sequências seguras como valores de parâmetros para determinados recursos usando padrões de parâmetro dinâmicos. Para ter mais informações, consulte Usar referências dinâmicas para especificar valores de modelos.
Agrupar e classificar parâmetros no console do AWS CloudFormation
Quando você usa o console do AWS CloudFormation para criar ou atualizar uma pilha, o console lista alfabeticamente os parâmetros de entrada por ID lógico. Para substituir a classificação padrão, você pode usar a chave de metadados AWS::CloudFormation::Interface
: O agrupamento e a classificação de parâmetros facilita a especificação dos valores dos parâmetros pelos usuários. Por exemplo, você pode agrupar todos os parâmetros relacionados à VPC para que eles não fiquem espalhados em uma lista alfabética.
Na chave de metadados, você pode especificar os grupos a serem criados, os parâmetros a serem incluídos em cada grupo e a ordem na qual o console mostra cada parâmetro em seu grupo. Você também pode definir nomes de parâmetros amigáveis para que o console mostre nomes descritivos em vez de IDs lógicos. Todos os parâmetros aos quais você faz referência na chave de metadados devem ser declarados na seção Parameters
do modelo.
Para obter mais informações e um exemplo da chave de metadados AWS::CloudFormation::Interface
, consulte AWS::CloudFormation::Interface.
Exemplos
Parâmetros de entrada básicos
O exemplo de seção Parameters
a seguir declara dois parâmetros. O parâmetro DBPort
é do tipo Number
com um padrão de 3306
. O valor mínimo que pode ser especificado é 1150
, e o valor máximo que pode ser especificado é 65535
. O parâmetro DBPwd
é do tipo String
sem valor padrão. A propriedade NoEcho
é definida como true
para impedir que as chamadas de pilha de descrição, como o comando da aws cloudformation describe-stacks
AWS CLI, retornem o valor do parâmetro. O comprimento mínimo que pode ser especificado é 1
, e o valor máximo é 41
. O padrão permite caracteres alfabéticos maiúsculos e minúsculos e numerais.
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 da AWS
Quando você usa tipos de parâmetros específicos da AWS, um usuário que usa seu modelo para criar ou atualizar uma pilha deve especificar valores existentes da AWS que estão na conta do usuário e na região da pilha atual. Os tipos de parâmetros específicos da AWS ajudam a garantir que os valores de entrada para esses tipos existam e estejam corretos antes de o AWS CloudFormation criar ou atualizar quaisquer recursos. Por exemplo, se você usar o tipo de parâmetro AWS::EC2::KeyPair::KeyName
, o AWS CloudFormation validará o valor de entrada em relação aos nomes dos pares de chaves existentes dos usuários antes de criar qualquer recurso, como instâncias do Amazon EC2.
Se um usuário usar o AWS Management Console, o AWS CloudFormation preencherá os tipos de parâmetros específicos da AWS antecipadamente com os valores válidos. Dessa forma, a usuária não precisa se lembrar e inserir corretamente um nome ou ID específico. Ela apenas seleciona um ou mais valores em uma lista suspensa. Além disso, dependendo do tipo do parâmetro, os usuários podem pesquisar valores por ID, nome ou valor da tag Name. Para ter mais informações, consulte Especificar o nome e os parâmetros da pilha.
O exemplo a seguir declara dois parâmetros com os tipos AWS::EC2::KeyPair::KeyName
e AWS::EC2::Subnet::Id
. Esses tipos limitam os valores válidos aos nomes de pares de chaves e IDs de sub-rede existentes. Como o parâmetro mySubnetIDs
é especificado como uma lista, um usuário pode especificar um ou mais IDs de sub-rede.
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>"
Suporte à AWS CLI e à API
No momento, os usuários não podem usar a AWS CLI ou a API do AWS CloudFormation para visualizar uma lista de valores válidos para parâmetros específicos da AWS. No entanto, eles podem visualizar informações sobre cada parâmetro, como o tipo de parâmetro, usando o comando aws cloudformation get-template-summary
ou a API GetTemplateSummary
.
Tipo de parâmetros da lista delimitada por vírgula
Você pode usar o tipo de parâmetro CommaDelimitedList
para especificar vários valores de sequência em um único parâmetro. Dessa forma, você pode usar um único parâmetro, em vez de muitos parâmetros diferentes para especificar vários valores. Por exemplo, para criar três diferentes sub-redes com seus próprios blocos CIDR, você pode usar três parâmetros diferentes para especificar três blocos CIDR diferentes. Mas é mais simples usar apenas um único parâmetro que usa uma lista de três blocos CIDR, conforme mostrado no trecho a seguir:
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"
Retornar um valor de um parâmetro da lista delimitada por vírgula
Para fazer referência a um valor específico em uma lista, use a função intrínseca Fn::Select
na seção Resources
de seu modelo. Você passa o valor do índice do objeto que você deseja e uma lista de objetos, conforme mostrado no seguinte trecho:
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 SSM
AWS::SSM::Parameter::Value
Tipo <String>
O modelo a seguir declara um 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
O comando a seguir cria uma pilha com base no modelo de exemplo. Ele fornece ao Systems Manager a chave do parâmetro (myInstanceType
) como o valor do parâmetro do modelo InstanceType
. Isso pressupõe que o parâmetro myInstanceType
existe no armazenamento de parâmetros sob a conta da AWS do chamador.
aws cloudformation create-stack --stack-name S1 --template-body
example template
--parameters ParameterKey=InstanceType,ParameterValue=myInstanceType
AWS::SSM::Parameter::Value
Tipo <AWS::EC2::Image::Id
>
O modelo a seguir declara um 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
O comando a seguir cria uma pilha com base no modelo de exemplo. Ele fornece ao Systems Manager a chave do parâmetro (myLatestAMI
) como o valor do parâmetro do modelo ImageId
. Isso pressupõe que o parâmetro myLatestAMI
existe no armazenamento de parâmetros sob a conta da AWS do chamador.
aws cloudformation create-stack --stack-name S2 --template-body
example template
--parameters ParameterKey=ImageId,ParameterValue=myLatestAMI