Skip to content

Latest commit

 

History

History
136 lines (99 loc) · 3.68 KB

File metadata and controls

136 lines (99 loc) · 3.68 KB

aws-SAM-icon

SAM


📌 Índice


Introdução

Amazon SAM é uma acrônimo para Serverless Application Model é um framework focado para desenvolvimento e implantação de aplicações serverless. Sua configuração é feita por via de um arquivo YAML.


Receita

O Transform Header indica que é um template SAM: Transform: ‘AWS::Serverless-2016-10-31’

Assim o Cloudformation saberá transformar esse modelo.

Código:

  • AWS::Serverless::Function: Uma função lambda
  • AWS::Serverless::Api: Define um API Gateway
  • AWS::Serverless::SimpleTable: Uma tabela no DynamoDB

Comandos

sam build # Compilação da aplicação localmente, transforma um SAM template em um Cloudformation template (YAML)
aws cloudformation package or sam package # Pacote da aplicação, compacta em zip e pode enviar para um bucket no S3
aws cloudformation deploy or sam deploy # Implatanção da aplicação no CloudFormation

Executando funções lambda localmente

Você pode complilar, testar e debugar as suas aplicações serverless que são definidas usando AWS SAM templates utilizando a SAM CLI.


Template

# SAM FILE
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31' # Essa linha define que é um SAM template
Description: A starter AWS Lambda function.
Resources:
  helloworldpython3:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.6
      CodeUri: src/
      Description: A starter AWS Lambda function.
      MemorySize: 128
      Timeout: 3
      Environment:
        Variables:
          TABLE_NAME: !Ref Table
          REGION_NAME: !Ref AWS::Region
      Events:
        HelloWorldSAMAPI:
          Type: Api
          Properties:
            Path: /hello
            Method: GET
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref Table  

  Table:
    Type: AWS::Serverless::SimpleTable
    Properties:
      PrimaryKey:
        Name: greeting
        Type: String
      ProvisionedThroughput:
        ReadCapacityUnits: 2
        WriteCapacityUnits: 2

Passo a passo para implantar

# Criar um bucket s3
aws s3 s3://nome-do-bucket

# Pacote do Cloudformation
aws cloudformation package --s3-bucket nome-do-bucket --template-file template.yaml --output template-file gen/template-genereated.yaml
# ou
aws sam package --s3-bucket nome-do-bucket --template-file template.yaml --output template-file gen/template-genereated.yaml

# Implantação
aws cloudformation deploy --template-file <path-do-arquivo-template>.yaml --stack-name <nome-da-stack> --capabilities CAPABILITY_IAM

SAR

SAR é um acrônimo para Serverless Application Repository é utilizado para montar, publicar e compartilhar repositórios de suas aplicações SAM.


📚 Referências

Para uma compreensão mais profunda sobre SAM recomendo a leitura da documentação oficial, os links estão abaixo.



Feito com ♥ by 👨‍🚀 Guilherme Bezerra 👋 Entrar em contato!