O que é AWS Serverless Application Model (AWS SAM)? - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

O que é AWS Serverless Application Model (AWS SAM)?

O AWS Serverless Application Model (AWS SAM) é um kit de ferramentas que melhora a experiência do desenvolvedor na criação e execução de aplicativos sem servidor. AWS AWS SAM oferece uma variedade de benefícios:

Defina seu código de infraestrutura de aplicativos rapidamente, usando menos código

Crie AWS SAM modelos para definir seu código de infraestrutura de aplicativos sem servidor. Implante seus modelos diretamente AWS CloudFormation para provisionar seus recursos.

Gerencie seus aplicativos sem servidor durante todo o ciclo de vida de desenvolvimento

Use o AWS SAMCLI para gerenciar seu aplicativo sem servidor por meio das fases de criação, compilação, implantação, teste e monitoramento do seu ciclo de vida de desenvolvimento. Para ter mais informações, consulte Usando o AWS SAMCLI.

Provisione rapidamente permissões entre recursos com AWS SAM conectores

Use AWS SAM conectores em seus AWS SAM modelos para definir permissões entre seus AWS recursos. AWS SAM transforma seu código nas permissões do IAM necessárias para facilitar sua intenção. Para ter mais informações, consulte Gerenciando permissões de recursos com conectores AWS SAM.

Sincronize as alterações locais com a nuvem à medida que você se desenvolve

Use o AWS SAMCLI sam sync comando para sincronizar automaticamente as alterações locais na nuvem, acelerando seus fluxos de trabalho de desenvolvimento e teste na nuvem. Para ter mais informações, consulte Usar o sam sync.

Gerencie seus aplicativos Terraform sem servidor

Use o AWS SAMCLI para realizar a depuração e o teste locais de suas camadas e funções do Lambda. Para ter mais informações, consulte Suporte AWS SAM CLI Terraform.

Conceitos básicos

AWS SAM consiste em três partes principais:

  1. AWS SAM especificação de modelo — Uma estrutura de código aberto que você pode usar para definir sua infraestrutura de aplicativos sem servidor. AWS Essa estrutura é acessada por meio AWS SAM de modelos.

  2. AWS SAM modelo — o que você usa para acessar as especificações do AWS SAM modelo, a estrutura de código aberto que você pode usar para definir sua infraestrutura de aplicativos sem servidor. AWS Um AWS SAM modelo é uma extensão de AWS CloudFormation modelos com alguns componentes adicionais que facilitam o trabalho com eles.

  3. AWS SAM interface de linha de comando (AWS SAMCLI) — Uma ferramenta de linha de comando que você pode usar com AWS SAM modelos e integrações de terceiros compatíveis para criar e executar seus aplicativos sem servidor.

Novo na tecnologia sem servidor?

Recomendamos que você analiseConceitos de tecnologia sem servidor.

Qual é a especificação do AWS SAM modelo?

A especificação do AWS SAM modelo é uma estrutura de código aberto que você pode usar para definir e gerenciar seu código de infraestrutura de aplicativos sem servidor. A especificação do AWS SAM modelo é:

  • Construído em AWS CloudFormation — Use a AWS CloudFormation sintaxe diretamente em seu AWS SAM modelo, aproveitando seu amplo suporte para configurações de recursos e propriedades. Se você já está familiarizado AWS CloudFormation, não precisa aprender um novo serviço para gerenciar seu código de infraestrutura de aplicativos.

  • Uma extensão de AWS CloudFormation — AWS SAM oferece sua própria sintaxe exclusiva que se concentra especificamente em acelerar o desenvolvimento sem servidor. Você pode usar a AWS CloudFormation AWS SAM sintaxe e no mesmo modelo.

  • Uma sintaxe abstrata e abreviada – Usando a AWS SAM sintaxe, você pode definir sua infraestrutura rapidamente, em menos linhas de código e com menor chance de erros. Sua sintaxe é especialmente selecionada para abstrair a complexidade na definição de sua infraestrutura de aplicativos sem servidor.

  • Transformacional — AWS SAM faz o trabalho complexo de transformar seu modelo no código necessário para provisionar sua infraestrutura. AWS CloudFormation

O que é o AWS SAM modelo?

Um AWS SAM modelo é o que você usa para acessar as especificações do AWS SAM modelo, a estrutura de código aberto que você pode usar para definir sua infraestrutura de aplicativos sem servidor AWS, com alguns componentes adicionais que facilitam o trabalho com eles. Nesse sentido, os AWS SAM modelos são uma extensão dos AWS CloudFormation modelos.

Veja um exemplo de aplicação com tecnologia sem servidor básica. Esse aplicativo processa solicitações para obter todos os itens de um banco de dados por meio de uma solicitação HTTP. Isso consiste nas seguintes partes:

  1. Uma função que contém a lógica para processar a solicitação.

  2. Uma API HTTP para servir como comunicação entre o cliente (solicitante) e o aplicativo.

  3. Um banco de dados para armazenar itens.

  4. Permissões para que o aplicativo seja executado com segurança.

Arquitetura de aplicativo simples sem servidor.

O código de infraestrutura desse aplicativo pode ser definido no seguinte modelo AWS SAM :

AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Resources: getAllItemsFunction: Type: AWS::Serverless::Function Properties: Handler: src/get-all-items.getAllItemsHandler Runtime: nodejs12.x Events: Api: Type: HttpApi Properties: Path: / Method: GET Connectors: MyConn: Properties: Destination: Id: SampleTable Permissions: - Read SampleTable: Type: AWS::Serverless::SimpleTable

Em 23 linhas de código, a seguinte infraestrutura é definida:

  • Uma função usando o AWS Lambda serviço.

  • Uma API HTTP usando o serviço Amazon API Gateway.

  • Um banco de dados usando o serviço Amazon DynamoDB.

  • As permissões AWS Identity and Access Management (IAM) necessárias para que esses serviços interajam entre si.

Para provisionar essa infraestrutura, o modelo é implantado em AWS CloudFormation. Durante a implantação, AWS SAM transforma as 23 linhas de código na AWS CloudFormation sintaxe necessária para gerar esses recursos. AWS O AWS CloudFormation modelo transformado contém mais de 200 linhas de código!

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "getAllItemsFunction": { "Type": "AWS::Lambda::Function", "Metadata": { "SamResourceId": "getAllItemsFunction" }, "Properties": { "Code": { "S3Bucket": "aws-sam-cli-managed-default-samclisourcebucket-1a4x26zbcdkqr", "S3Key": "what-is-app/a6f856abf1b2c4f7488c09b367540b5b" }, "Handler": "src/get-all-items.getAllItemsHandler", "Role": { "Fn::GetAtt": [ "getAllItemsFunctionRole", "Arn" ] }, "Runtime": "nodejs12.x", "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] } }, "getAllItemsFunctionRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" ], "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] } }, "getAllItemsFunctionApiPermission": { "Type": "AWS::Lambda::Permission", "Properties": { "Action": "lambda:InvokeFunction", "FunctionName": { "Ref": "getAllItemsFunction" }, "Principal": "apigateway.amazonaws.com", "SourceArn": { "Fn::Sub": [ "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/", { "__ApiId__": { "Ref": "ServerlessHttpApi" }, "__Stage__": "*" } ] } } }, "ServerlessHttpApi": { "Type": "AWS::ApiGatewayV2::Api", "Properties": { "Body": { "info": { "version": "1.0", "title": { "Ref": "AWS::StackName" } }, "paths": { "/": { "get": { "x-amazon-apigateway-integration": { "httpMethod": "POST", "type": "aws_proxy", "uri": { "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${getAllItemsFunction.Arn}/invocations" }, "payloadFormatVersion": "2.0" }, "responses": {} } } }, "openapi": "3.0.1", "tags": [ { "name": "httpapi:createdBy", "x-amazon-apigateway-tag-value": "SAM" } ] } } }, "ServerlessHttpApiApiGatewayDefaultStage": { "Type": "AWS::ApiGatewayV2::Stage", "Properties": { "ApiId": { "Ref": "ServerlessHttpApi" }, "StageName": "$default", "Tags": { "httpapi:createdBy": "SAM" }, "AutoDeploy": true } }, "SampleTable": { "Type": "AWS::DynamoDB::Table", "Metadata": { "SamResourceId": "SampleTable" }, "Properties": { "AttributeDefinitions": [ { "AttributeName": "id", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "id", "KeyType": "HASH" } ], "BillingMode": "PAY_PER_REQUEST" } }, "getAllItemsFunctionMyConnPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Metadata": { "aws:sam:connectors": { "getAllItemsFunctionMyConn": { "Source": { "Type": "AWS::Serverless::Function" }, "Destination": { "Type": "AWS::Serverless::SimpleTable" } } } }, "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:ConditionCheckItem", "dynamodb:PartiQLSelect" ], "Resource": [ { "Fn::GetAtt": [ "SampleTable", "Arn" ] }, { "Fn::Sub": [ "${DestinationArn}/index/*", { "DestinationArn": { "Fn::GetAtt": [ "SampleTable", "Arn" ] } } ] } ] } ] }, "Roles": [ { "Ref": "getAllItemsFunctionRole" } ] } } } }

Ao usar AWS SAM, você define 23 linhas de código de infraestrutura. AWS SAM transforma seu código nas mais de 200 linhas de AWS CloudFormation código necessárias para provisionar seu aplicativo.

O que é o AWS SAMCLI?

AWS SAMCLIÉ uma ferramenta de linha de comando que você pode usar com AWS SAM modelos e integrações de terceiros compatíveis para criar e executar seus aplicativos sem servidor. Use o AWS SAMCLI para:

  • Inicialize rapidamente um projeto de aplicação.

  • Crie seu aplicativo para implantação.

  • Execute depuração e testes locais.

  • Implante o aplicativo.

  • Configure pipelines de implantação de CI/CD.

  • Monitore e solucione problemas de seu aplicativo na nuvem.

  • Sincronize as alterações locais com a nuvem à medida que você se desenvolve.

  • E muito mais!

O AWS SAMCLI é melhor utilizado quando usado com AWS SAM AWS CloudFormation modelos. Também funciona com produtos de terceiros, como Terraform.

Inicialize um projeto

Selecione um dos modelos iniciais ou escolha um local de modelo personalizado para começar um novo projeto.

Aqui, usamos o comando sam init para inicializar um projeto de aplicação. Selecionamos o projeto Hello World Example para começar. O AWS SAMCLI baixa um modelo inicial e cria nossa estrutura de diretórios de pastas do projeto.

Usando sam init para iniciar um novo projeto de aplicativo com o AWS SAMCLI.

Crie seu aplicativo para implantação

Empacote suas dependências de função e organize o código do projeto e a estrutura de pastas para se preparar para a implantação.

Aqui, usamos o comando sam build para preparar nosso aplicativo para implantação. O AWS SAMCLI cria um diretório .aws-sam e organiza as dependências e os arquivos do nosso aplicativo para implantação.

Usando sam build para preparar um aplicativo para implantação.

Execute depuração e testes locais

Em sua máquina local, simule eventos, teste APIs, invoque funções e muito mais para depurar e testar seu aplicativo.

Aqui, usamos o comando sam local invoke para invocar nosso HelloWorldFunction localmente. Para fazer isso, o AWS SAMCLI cria um contêiner local, constrói nossa função, a invoca e gera os resultados.

Usando o AWS SAMCLI sam local invoke comando para invocar uma função localmente.

Implantar o aplicativo

Defina as configurações de implantação do seu aplicativo e implante na AWS nuvem para provisionar seus recursos.

Aqui, usamos o comando sam deploy --guided para implantar nosso aplicativo por meio de um fluxo interativo. Ele nos AWS SAMCLI orienta na configuração das configurações de implantação de nosso aplicativo, transforma nosso modelo em AWS CloudFormation e implanta AWS CloudFormation para criar nossos recursos.

Usando o AWS SAMCLI sam deploy comando para implantar um aplicativo na AWS nuvem.

Configure pipelines de implantação de CI/CD

Crie pipelines seguros de integração e entrega contínuas (CI/CD), usando um sistema de CI/CD compatível.

Aqui, usamos o comando sam pipeline init --bootstrap para configurar um pipeline de implantação de CI/CD para nosso aplicativo. Ele nos AWS SAMCLI guia por nossas opções e gera os AWS recursos e o arquivo de configuração para usar com nosso sistema CI/CD.

Usando o AWS SAMCLI sam pipeline init --bootstrap comando para configurar um pipeline de CI/CD com nosso sistema CI/CD preferido.

Monitore e solucione problemas de seu aplicativo na nuvem

Visualize informações importantes sobre seus recursos implantados, colete registros e utilize ferramentas de monitoramento integradas, como AWS X-Ray.

Aqui, usamos o comando sam list para visualizar nossos recursos implantados. Pegamos nosso endpoint de API e o invocamos, o que aciona nossa função. Em seguida, usamos sam logs para visualizar os registros da nossa função.

Usando o AWS SAMCLI sam list comando para obter nosso endpoint de API. Em seguida, usamos sam logs para visualizar os registros da nossa função.

Sincronize as alterações locais com a nuvem à medida que você se desenvolve

Conforme você desenvolve em sua máquina local, sincronize automaticamente as alterações na nuvem. Veja rapidamente suas alterações e realize testes e validação na nuvem.

Aqui, usamos o comando sam sync --watch para AWS SAMCLI observar as mudanças locais. Modificamos nosso código HelloWorldFunction, detectamos AWS SAMCLI automaticamente a alteração e implantamos nossas atualizações na nuvem.

Usando o AWS SAMCLI sam sync comando para sincronizar alterações locais com a AWS nuvem.

Testes os recursos com suporte na nuvem

Invoque e transmita eventos para recursos compatíveis na nuvem.

Aqui, usamos o comando sam remote invoke para testar uma função do Lambda implantada na nuvem. Invocamos nossa função do Lambda e recebemos seus registros e respostas. Com nossa função do Lambda configurada para transmitir respostas, AWS SAMCLI retransmite sua resposta em tempo real.

Usando o AWS SAMCLI sam remote invoke comando para testar nossa função implantada na AWS nuvem.

Saiba mais

Para continuar aprendendo sobre isso AWS SAM, consulte os seguintes recursos:

  • O AWS SAM Workshop Completo — Um workshop projetado para ensinar a você muitos dos principais recursos que AWS SAM oferece.

  • Sessões com SAM — Série de vídeos criada por nossa equipe AWS Serverless Developer Advocate sobre o uso. AWS SAM

  • Serverless Land — Site que reúne as informações mais recentes, blogs, vídeos, código e recursos de aprendizado para AWS a tecnologia sem servidor.

Próximas etapas

Se esta é a primeira vez que você usa AWS SAM, consulteConceitos básicos do AWS SAM.