Olá pessoal,
A dica de hoje é para quem deseja reutilizar um template do AWS CloudFormation sem precisar editar o código a cada implantação. Com a seção Parameters, podemos informar valores na criação ou atualização da stack, como a imagem da máquina e o tipo de instância EC2.
Isso facilita e muito o uso do mesmo template em diferentes cenários, mantendo as configurações variáveis separadas da definição dos recursos.
Como definir parâmetros no YAML
No exemplo abaixo, definimos dois parâmetros: AmiID, para selecionar uma Amazon Machine Image (AMI), e TipoInstancia, para escolher o tamanho da instância:
AWSTemplateFormatVersion: '2010-09-09'Description: Exemplo de parametros para uma instancia EC2Parameters: AmiID: Type: AWS::EC2::Image::Id Description: Selecione uma AMI valida na regiao utilizada TipoInstancia: Type: String Description: Informe o tipo da instancia EC2 Default: t3.micro AllowedValues: - t3.micro - t3.small - t3.mediumResources: MinhaInstancia: Type: AWS::EC2::Instance Properties: ImageId: !Ref AmiID InstanceType: !Ref TipoInstancia
Esse exemplo mostra a estrutura básica. Para utilizá-lo no seu ambiente, complemente as configurações de rede e segurança e escolha uma AMI compatível com a família de instâncias.
Entendendo os campos
Cada parâmetro possui um nome e atributos que definem seu comportamento:
Type: informa o tipo de dado esperado. É obrigatório.Description: orienta quem preencherá o campo.Default: estabelece um valor padrão, que pode ser alterado.AllowedValues: limita os valores aceitos.
No parâmetro AmiID, utilizamos um tipo específico da AWS. Como não há Default, será necessário informar uma imagem na criação da stack.
Já TipoInstancia utiliza String, tem t3.micro como padrão e permite apenas as três opções listadas. A expressão !Ref recupera o valor do parâmetro e o aplica à propriedade correspondente do recurso.
Como utilizar na criação da stack
Ao carregar o template no console do CloudFormation, os parâmetros aparecem na etapa de preenchimento dos detalhes da stack. Basta selecionar a AMI e escolher o tipo de instância desejado.
Assim, você pode criar uma stack com t3.micro e outra com t3.small, usando o mesmo arquivo YAML. A lista do exemplo é ilustrativa: ajuste as opções conforme os requisitos da aplicação e a disponibilidade na região.
Antes de aplicar novos valores a uma stack existente, confira o impacto nas propriedades dos recursos. Parametrizar uma configuração não elimina os efeitos de sua alteração.
Para conhecer os demais tipos e atributos disponíveis, consulte a documentação oficial de parâmetros do CloudFormation.
Até a próxima!
