20 de maio de 2022 • 2 min de leitura
Cloudformation as principais funções intrínsecas
O Cloudformation possui uma variedade de funções intrínsecas para lhe auxiliar durante o seu desenvolvimento, são funções para conversão, referenciação e entre outras, facilitando a atribuição de valores às propriedades que não estão disponíveis até o runtime.,
Você só pode usar funções intrínsecas em partes específicas do seu template Cloudformation. Atualmente, você pode usar em propriedades de recurso, saídas, atributos de metadados e atributos de política de atualização. Você também pode usar funções intrínsecas para criar condicionalmente recursos.
Ref
A função intrínseca Ref acredito ser uma das mais importantes, pois ela retorna o valor do parâmetro ou recurso referenciado, que pode ser utilizado por exemplo quando você especifica o nome lógico de um parâmetro e ele retorna o valor do parâmetro.
E com isso temos varias aplicações, por exemplo, a declaração de recurso para um Elastic Ip precisa do ID de instância EC2 e usa a !Ref para especificar o ID de instância do recurso MyEC2Instance:
MyEIP:
Type: "AWS::EC2::EIP"
Properties:
InstanceId: !Ref MyEC2Instance
Mapping e FindInMap
O Mapping não é bem uma função, ele é uma forma de declararmos valores em formato de map, e é muito bom quando conhecemos antecipadamente todos os valores que podem ser obtidos, deduzido por variáveis, por exemplo Regiao, Availability Zones, Account, Environment:
Mapping:
RegionMap:
us-east-1:
"32" : "ami-pka6aseljeafe68z4"
"64" : "ami-ntndsv4evle1aqt6o"
us-east-2:
"32" : "ami-bxq31fmrtjyterbm8"
"64" : "ami-066ee2fq4a9ef77f1"
...
Tendo essa visão do Mapping, conseguimos utilizando a Fn::FindInMap acessar esse map values:
...
MyInstance:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: us-east-1a
ImageId: !FindInMap[RegionMap, !Ref"AWS::Region", 32]
InstanceType: t2.micro
KeyName: Thiago
SecurityGroups:
- !Ref SSHSecurityGroup
...
Dessa forma, vamos usar uma informação que o Cloudformation já sabe, que é a região em que ele ta sendo chamado e utilizara a chave 32 para pegar a informação da AMI com arquitetura 32 bits.
Conditions
As funções de condições o nome já diz por si só, controlando a criação de recursos baseado em condições, as condições pode ser qualquer coisa, porém geralmente são baseadas em Environment, Region, Parâmetros e cada condição pode referenciar outra condição.
Conditions:
CreateProdResources:!Equals[!Ref EnvType, prod]
As funções condicionais mais comuns são:
Fn::And
Fn::Equals
Fn::If
Fn::Not
Fn::Or
Bom, trouxe aqui apenas algumas das várias funções disponíveis para o Cloudformation, espero que tenha servido de introdução para futuros projetos!