Pulumi e AWS SAM - Como converter Cloud Formation IAC para Pulumi
Tags: aws, iac, pulumi, cloud
Published: 2023-01-10 18:34:50

O **SAM** (Modelo de Aplicação Serverless da AWS) é um framework para construir aplicações serverless na AWS.

O **IAC** (Infraestrutura como Código) é uma maneira de gerenciar e provisionar infraestrutura usando código.

O **Pulumi** é uma plataforma de desenvolvimento multi-cloud para provisionamento de infraestrutura como código (IAC).

Enquanto o **SAM é específico para a AWS** e seus serviços, o Pulumi suporta múltiplos provedores de nuvem, como AWS, Azure e Google Cloud. Quando usados juntos, essas ferramentas podem oferecer várias **vantagens** para o desenvolvimento, implantação e manutenção de aplicações serverless.

O SAM e o Pulumi podem ser **benéficos para organizações** que querem usar um conjunto de ferramentas comum em diferentes equipes e projetos. Neste post, mostraremos alguns **pontos-chave** dessa combinação.

Uma das principais vantagens de combinar o SAM e o Pulumi é a possibilidade de melhor colaboração entre as equipes de desenvolvimento e operações. O SAM usa uma **sintaxe familiar e simplificada** para definir recursos serverless, tornando fácil para os desenvolvedores gerenciarem e implantarem seu código, enquanto o Pulumi usa uma **linguagem e um framework comuns** para permitir que os desenvolvedores e as equipes de operações colaborem.

Outra vantagem de usar o SAM e o Pulumi juntos é a capacidade de gerenciar facilmente tanto recursos **serverless quanto não-serverless** com um **único conjunto de ferramentas**.

O IAC gerado pelo SAM é projetado especificamente para aplicações serverless e fornece uma **maneira simplificada** de definir e implantar recursos serverless, como funções Lambda, pontos finais do API Gateway e tabelas DynamoDB. **No entanto, ele não abrange todos os recursos e cenários** possíveis que podem ser definidos na AWS.

O Pulumi pode ser usado para gerenciar os recursos **não-serverless** necessários para sua aplicação, como um bucket S3, uma instância RDS ou até mesmo um cluster k8s. Isso pode ser benéfico para aplicações que possuem uma **infraestrutura complexa** e precisam gerenciar recursos em diferentes provedores de nuvem.

Além disso, o uso do Pulumi com o SAM permite uma melhor **reutilização** e composição do código. O Pulumi suporta a reutilização e composição de código através de componentes Pulumi, que são blocos de código reutilizáveis que podem ser **compartilhados entre diferentes equipes e projetos**. Isso pode economizar tempo e esforço ao reduzir a necessidade de escrever e manter códigos similares em múltiplos projetos.

É importante mencionar também que o código de template gerado pelo SAM **pode ser convertido facilmente para o Pulumi** usando bibliotecas de código aberto mantidas pelos autores do Pulumi.

Isso **economiza uma quantidade significativa de tempo** e esforço ao eliminar a necessidade de converter manualmente a sintaxe CloudFormation para a sintaxe de linguagem apropriada. **Você pode converter Cloud Formation IAC** diretamente do site do Pulumi clicando [aqui](https://www.pulumi.com/cf2pulumi/) ou usando essa [biblioteca](https://github.com/pulumi/pulumi-aws-native).

Em resumo, usar o AWS SAM e o Pulumi juntos pode oferecer uma série de vantagens para o desenvolvimento, implantação e manutenção de aplicações serverless na AWS. Isso inclui a capacidade de gerenciar facilmente tanto recursos serverless quanto não-serverless, uma melhor colaboração entre desenvolvedores e equipes de operações e uma melhor reutilização e composição de código. E com as bibliotecas de código aberto disponíveis para converter templates SAM para Pulumi, torna o processo ainda mais simplificado.

Experimente!

Referências:

AWS Serverless Application Model (SAM):
https://aws.amazon.com/serverless/sam/

AWS CloudFormation - https:
https://aws.amazon.com/cloudformation/

Pulumi vs Cloud Formation:
https://www.pulumi.com/docs/intro/vs/cloud-templates/cloudformation/

Migrating From AWS Cloud Formation:
https://www.pulumi.com/docs/guides/adopting/from_aws/#migrate-resources-into-code

Comparison of AWS CloudFormation and AWS SAM:
https://aws.amazon.com/serverless/sam/comparison/

Converting Cloud Formation to Pulumi:
https://www.pulumi.com/cf2pulumi/
https://github.com/pulumi/pulumi-aws-native

㋡ Happy Coding []s