

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)?
<a name="what-is-sam"></a>

AWS Serverless Application Model (AWS SAM) é uma estrutura de código aberto para criar aplicativos sem servidor usando infraestrutura como código (IaC). Com AWS SAM a sintaxe abreviada, os desenvolvedores declaram [CloudFormation](https://aws.amazon.com/cloudformation)recursos e recursos especializados sem servidor que são transformados em infraestrutura durante a implantação. Ao trabalhar com AWS SAM, você interagirá com:

1. AWS SAM CLI- Uma ferramenta de linha de comando que ajuda você a desenvolver, testar e implantar localmente seus aplicativos sem servidor.

1. AWS SAM Modelo - Uma extensão CloudFormation que fornece uma sintaxe simplificada para definir recursos sem servidor.

Quando você usa o **sam init** comando, ele cria um diretório de projeto, que chamaremos de AWS SAM projeto, que normalmente inclui seu AWS SAM modelo, código do aplicativo e outros arquivos de configuração.

## Quando usar AWS SAM
<a name="when-to-use-sam"></a>

AWS SAM é uma solução IaC ideal para cenários em que você deseja um desenvolvimento simplificado sem servidor com todo o poder do. CloudFormation Por exemplo, é possível usar o SAM para:
+ **Aplicativos sem servidor:** você pode usar o SAM para definir rapidamente funções, AWS Lambda funções duráveis do Lambda, Amazon API Gateway, tabelas do Amazon APIs DynamoDB e outros recursos sem servidor com o mínimo de código.
+ **CloudFormation aprimoramento:** você pode combinar o SAM com CloudFormation modelos existentes para adicionar componentes sem servidor à infraestrutura tradicional. Os recursos do SAM funcionam junto com CloudFormation os recursos padrão no mesmo modelo.
+ **Desenvolvimento e testes locais:** você pode usar a CLI do SAM para testar as funções do Lambda localmente, simular endpoints do API Gateway e depurar aplicações com tecnologia sem servidor em sua máquina de desenvolvimento antes da implantação da AWS.
+ **CI/CD para ambientes sem servidor:** você pode criar pipelines de implantação usando modelos de SAM que geram automaticamente a CloudFormation infraestrutura necessária para ambientes de preparação e produção.
+ **Migração de recursos criados pelo console:** você pode converter funções do Lambda e recursos do API Gateway criados no Console de Gerenciamento da AWS na infraestrutura como código usando modelos do SAM.

**Comparando AWS SAM com outras ferramentas de IaC**
+ Use o SAM em vez de CloudFormation simplificar as definições de recursos sem servidor e, ao mesmo tempo, manter a compatibilidade do modelo.
+ Use o SAM em vez de AWS CDK se você preferir uma abordagem declarativa para descrever sua infraestrutura em vez de uma abordagem programática.
+ Combine o SAM AWS CDK usando os recursos de teste locais do SAM CLI para aprimorar seus aplicativos de CDK.

## Recursos principais do
<a name="what-is-sam-feature"></a>

AWS SAM oferece uma variedade de benefícios que melhoram a experiência do desenvolvedor, permitindo que você: 

**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 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 obter mais informações, consulte [AWS SAM CLI](using-sam-cli.md).

**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 obter mais informações, consulte [Gerenciando permissões de recursos com AWS SAM conectores](managing-permissions-connectors.md).

**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 obter mais informações, consulte [Introdução ao uso sam sync para sincronizar com Nuvem AWS](using-sam-cli-sync.md).

**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 obter mais informações, consulte [Suporte AWS SAM CLI Terraform](terraform-support.md).

## Informações relacionadas
<a name="w2aab5c15"></a>
+ Para obter informações sobre como AWS SAM funciona, consulte[Como AWS SAM funciona](what-is-sam-overview.md).
+ Para começar a usar AWS SAM, consulte[Começando com AWS SAM](serverless-getting-started.md). 
+ Para obter uma visão geral sobre como você pode usar AWS SAM para criar um aplicativo sem servidor, consulte. [Como usar AWS SAM](chapter-using-sam.md#chapter-using-sam.title)

# Como AWS SAM funciona
<a name="what-is-sam-overview"></a>

Ao trabalhar com AWS SAM a criação de seu aplicativo sem servidor, você interagirá com os seguintes componentes:

1. **[AWS SAM modelo](sam-specification.md)**— Um arquivo importante que define seus AWS recursos. Esse modelo inclui a **especificação do AWS SAM modelo** — a estrutura de código aberto que vem com uma sintaxe abreviada simplificada que você usa para definir as funções, eventos APIs, configurações e permissões do seu aplicativo sem servidor. Esse arquivo está localizado no AWS SAM projeto, que é a pasta do aplicativo criada quando você executa o **sam init** comando.

1. **[AWS SAM CLI](using-sam-cli.md)**— Uma ferramenta de linha de comando que você pode usar com seu AWS SAM projeto e com integrações de terceiros compatíveis para criar e executar seus aplicativos sem servidor. AWS SAMCLIÉ a ferramenta que você usa para executar comandos em seu AWS SAM projeto e, eventualmente, transformá-lo em seu aplicativo sem servidor.

Para expressar recursos, mapeamentos de origem de eventos e outras propriedades que definem seu aplicativo sem servidor, você define recursos e desenvolve seu aplicativo no AWS SAM modelo e em outros arquivos do seu projeto. AWS SAM Você usa o AWS SAMCLI para executar comandos em seu AWS SAM projeto, que é como você inicializa, cria, testa e implanta seu aplicativo sem servidor.

**Está começando na tecnologia sem servidor?**  
Recomendamos que você analise [Conceitos sem servidor para AWS Serverless Application Model](what-is-concepts.md).

## Qual é a especificação do AWS SAM modelo?
<a name="what-is-sam-template-spec"></a>

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 é:
+ **Baseado em AWS CloudFormation** — Você usa a CloudFormation sintaxe diretamente em seu AWS SAM modelo, aproveitando seu amplo suporte para configurações de recursos e propriedades. Se você já está familiarizado CloudFormation, não precisa aprender um novo serviço para gerenciar seu código de infraestrutura de aplicativos.
+ **Uma extensão de CloudFormation** — AWS SAM oferece sua própria sintaxe exclusiva que se concentra especificamente em acelerar o desenvolvimento sem servidor. Você pode usar a 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. CloudFormation

## O que são o AWS SAM projeto e o AWS SAM modelo?
<a name="what-is-sam-template"></a>

O AWS SAM projeto inclui o AWS SAM modelo que contém a especificação do AWS SAM modelo. Essa especificação é a estrutura de código aberto que você usa 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 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.

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

1. Um banco de dados para armazenar itens.

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

![\[Arquitetura de aplicativo simples sem servidor.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-06.png)


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: nodejs20.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 CloudFormation. Durante a implantação, AWS SAM transforma as 23 linhas de código na CloudFormation sintaxe necessária para gerar esses recursos. AWS O CloudFormation modelo transformado contém mais de 200 linhas de código\$1

### CloudFormation Modelo transformado
<a name="what-is-sam-template-example-cfn"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "getAllItemsFunction": {
      "Type": "AWS::Lambda::Function",
      "Metadata": {
        "SamResourceId": "getAllItemsFunction"
      },
      "Properties": {
        "Code": {
          "S3Bucket": "amzn-s3-demo-source-bucket-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 CloudFormation código necessárias para provisionar seu aplicativo.

## O que é o AWS SAMCLI?
<a name="what-is-sam-cli"></a>

 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 os pipelines de CI/CD implantação.
+ 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\$1

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

### Inicialize um projeto
<a name="what-is-sam-cli-init"></a>

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.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-01.gif)


Consulte mais detalhes em [Crie seu aplicativo em AWS SAM](using-sam-cli-init.md).

### Crie seu aplicativo para implantação
<a name="what-is-sam-cli-build"></a>

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.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-02.gif)


Consulte mais detalhes em [Criar aplicações](serverless-building.md).

### Execute depuração e testes locais
<a name="what-is-sam-cli-local"></a>

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. Você pode usar uma aplicação, como o Docker, para executar contêineres no seu computador.

![\[Usando o AWS SAMCLI sam local invoke comando para invocar uma função localmente.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-04.gif)


Para obter mais detalhes, consulte [Testar a aplicação](serverless-test-and-debug.md) e [Depurar a aplicação](debug-application.md).

### Implantar o aplicativo
<a name="what-is-sam-cli-deploy"></a>

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 CloudFormation e implanta CloudFormation para criar nossos recursos.

![\[Usando o AWS SAMCLI sam deploy comando para implantar um aplicativo na AWS nuvem.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-03.gif)


Consulte mais detalhes em [Implantar a aplicação e os recursos](serverless-deploying.md).

### Configurar pipelines CI/CD de implantação
<a name="what-is-sam-cli-cicd"></a>

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

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 CI/CD pipeline com nosso CI/CD sistema preferido.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-07.gif)


Consulte mais detalhes em [Implemente com CI/CD sistemas e pipelines](deploying-options.md#serverless-deploying-ci-cd).

### Monitore e solucione problemas de seu aplicativo na nuvem
<a name="what-is-sam-cli-monitor"></a>

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.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-08.gif)


Consulte mais detalhes em [Monitorar a aplicação](serverless-monitoring.md).

### Sincronize as alterações locais com a nuvem à medida que você se desenvolve
<a name="what-is-sam-cli-sync"></a>

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.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-05.gif)


### Testes os recursos com suporte na nuvem
<a name="what-is-sam-cli-remote-invoke"></a>

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.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/what-is-sam-09.gif)


## Saiba mais
<a name="what-is-sam-learn"></a>

Para continuar aprendendo sobre isso AWS SAM, consulte os seguintes recursos:
+ **[O AWS SAM Workshop Completo](https://s12d.com/sam-ws-en-intro)** — Um workshop projetado para ensinar a você muitos dos principais recursos que AWS SAM oferece.
+ **[Sessões com SAM](https://www.youtube.com/playlist?list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd)** — Série de vídeos criada por nossa equipe AWS Serverless Developer Advocate sobre o uso. AWS SAM
+ **[Serverless Land](https://serverlessland.com/)** — 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
<a name="what-is-sam-next"></a>

Se esta é a primeira vez que você usa AWS SAM, consulte[Começando com AWS SAM](serverless-getting-started.md).

# Conceitos sem servidor para AWS Serverless Application Model
<a name="what-is-concepts"></a>

Saiba mais sobre os conceitos básicos sem servidor antes de usar o AWS Serverless Application Model ()AWS SAM.

## Conceitos de tecnologia sem servidor
<a name="what-is-concepts-terms"></a>

**Arquitetura orientada por eventos**  <a name="what-is-concepts-terms-eda"></a>
Um aplicativo sem servidor consiste em AWS serviços individuais, como computação e Amazon DynamoDB AWS Lambda para gerenciamento de banco de dados, cada um desempenhando uma função especializada. Esses serviços são então vagamente integrados entre si por meio de uma arquitetura orientada por eventos. Para saber mais sobre a arquitetura orientada por eventos, consulte [O que é uma arquitetura orientada por eventos?](https://aws.amazon.com/event-driven-architecture/). 

**infraestrutura como código (IaC)**  <a name="what-is-concepts-terms-iac"></a>
A infraestrutura como código (IaC) é uma forma de tratar a infraestrutura da mesma forma que os desenvolvedores tratam o código, aplicando o mesmo rigor do desenvolvimento do código do aplicativo ao provisionamento da infraestrutura. Você define sua infraestrutura em um arquivo de modelo AWS, a implanta e AWS cria os recursos para você. Com o IaC, você define no código o que deseja AWS provisionar. Para uma comparação das ferramentas de IaC disponíveis para AWS, consulte[infraestrutura como código (IaC)](what-is-iac.md).

**Tecnologias sem servidor**  <a name="what-is-concepts-terms-serverless"></a>
Com tecnologias AWS sem servidor, você pode criar e executar aplicativos sem precisar gerenciar seus próprios servidores. Todo o gerenciamento do servidor é feito por meio de vários benefícios AWS, como escalabilidade automática e alta disponibilidade incorporada, permitindo que você leve sua ideia à produção rapidamente. Usando tecnologias sem servidor, você pode se concentrar no núcleo do seu produto sem precisar se preocupar com o gerenciamento e a operação de servidores. Para saber mais sobre tecnologia sem servidor, consulte o seguinte:  
+ [Sem servidor ativado AWS](https://aws.amazon.com/serverless/)
+ [Guia do desenvolvedor de tecnologia sem servidor](https://docs.aws.amazon.com/serverless/latest/devguide/serverless-preface.html): fornece uma visão geral conceitual do desenvolvimento de tecnologia sem servidor na Nuvem AWS .
*Para uma introdução básica aos principais serviços sem servidor, consulte AWS Serverless [101: Understanding the serverless services at Serverless](https://serverlessland.com/learn/serverless-101) Land.*

**Aplicação sem servidor**  <a name="what-is-concepts-terms-serverless"></a>
Ao usar AWS SAM, você gerencia recursos relacionados em um aplicativo, que consiste em seu AWS SAM projeto e modelo. Todos os recursos em seu aplicativo são definidos ou mencionados em seu AWS SAM modelo. Quando AWS SAM processa seu modelo, ele cria CloudFormation recursos. Em CloudFormation, os recursos são gerenciados em uma única unidade chamada pilha, e todos os recursos em uma pilha são definidos pelo modelo da pilha. CloudFormation 

# infraestrutura como código (IaC)
<a name="what-is-iac"></a>

Com a Infraestrutura como Código (IaC), você pode automatizar a implantação e o gerenciamento de seus AWS recursos, incluindo aplicativos sem servidor. A IaC permite que você defina sua infraestrutura usando código, facilitando a criação de versões, o compartilhamento e a replicação de suas implantações. Essa abordagem ajuda você a:
+ Acelerar seu ciclo de desenvolvimento
+ Simplificar o gerenciamento de configuração
+ Melhorar a confiabilidade e a consistência de suas implantações

## Ferramentas de IaC para aplicativos sem AWS servidor
<a name="iac-tools-aws"></a>

AWS oferece várias ferramentas de IaC para ajudá-lo a criar, implantar e gerenciar seus recursos de nuvem. Esta seção explica como AWS SAM se encaixa nesse ecossistema e funciona com outras ferramentas de AWS IaC.

**AWS CloudFormation**  
Usando [CloudFormation](https://aws.amazon.com/cloudformation/), você pode modelar e provisionar toda a sua AWS infraestrutura com modelos YAML ou JSON. CloudFormation processa automaticamente a criação, as atualizações e a exclusão de recursos. Quando você implanta AWS SAM aplicativos, CloudFormation processa os modelos transformados para criar e gerenciar seus recursos.

**AWS Serverless Application Model (AWS SAM)**  
AWS SAM ajuda você a criar aplicativos sem servidor com sintaxe simplificada para definir recursos sem servidor. Você pode usar AWS SAM modelos para provisionar funções, APIs bancos de dados e fontes de eventos do Lambda usando a sintaxe YAML concisa. AWS SAM transforma esses modelos em CloudFormation modelos durante a implantação.  
Embora seja AWS SAM especializado em aplicativos sem servidor, você pode usar qualquer tipo de CloudFormation recurso em seus modelos. AWS SAM Isso permite a flexibilidade de incluir recursos com tecnologia sem servidor quando necessário.

**AWS Kit de desenvolvimento em nuvem (AWS CDK)**  
Com [AWS CDK](https://aws.amazon.com/cdk/), você pode definir sua infraestrutura sem servidor usando linguagens de programação conhecidas, como TypeScript Python, Java, C\$1/.Net ou Go. Você pode usar construções de programação, como loops e condições, para definir sua infraestrutura e AWS CDK gerar CloudFormation modelos para implantação. Você pode usar o AWS SAMCLI para testar e depurar localmente aplicativos criados com AWS CDK. Para saber mais, consulte [Testing CDK applications locally](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html).

## Comparar ferramentas de IaC com aplicações com tecnologia sem servidor
<a name="comparing-iac-tools"></a>

Ao escolher uma ferramenta de IaC para suas aplicativos com tecnologia sem servidor, considere as preferências da sua equipe, os requisitos do projeto e os fluxos de trabalho existentes. A tabela a seguir compara as principais características das ferramentas de AWS IaC para desenvolvimento sem servidor:


| **Ferramenta** | **Uso primário** | **Melhor para** | **Funciona com AWS SAM** | **Quando escolher** | 
| --- | --- | --- | --- | --- | 
| **CloudFormation** | Gerenciando uma AWS infraestrutura complexa | Aplicativos que exigem controle detalhado dos AWS recursos | AWS SAM modelos se transformam em CloudFormation modelos durante a implantação | Para controle preciso sobre recursos que não são com tecnologia sem servidor | 
| **AWS SAM** | Desenvolvimento de aplicações com tecnologia sem servidor | Equipes criando aplicações com tecnologia sem servidor que usam o Lambda | Funcionalidade nativa | Ao focar principalmente em arquiteturas sem servidor com funções Lambda, API Gateway e outros recursos sem servidor APIs | 
| **AWS CDK** | Definição de infraestrutura usando linguagens de programação | Equipes que preferem linguagens digitadas e abordagem que prioriza o código | Gere AWS SAM modelos e use AWS SAMCLI para testes | Quando você precisa de uma definição de infraestrutura programática ou de uma lógica complexa de configuração de recursos | 

**nota**  
Embora este guia se concentre em ferramentas AWS de IaC nativas, o Terraform é outra solução popular de IaC que pode ser usada para definir aplicativos sem servidor. A CLI do AWS SAM oferece suporte para testes locais de funções do Lambda definidas no Terraform. Para obter mais informações, consulte [Suporte AWS SAM CLI Terraform](terraform-support.md).

## Saiba mais
<a name="iac-learn-more"></a>
+ Para saber mais sobre DevOps as práticas em AWS, consulte [Introdução DevOps à AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html)
+ Para obter informações sobre como usar o Lambda com diferentes ferramentas de IaC, consulte [Usar o Lambda com a infraestrutura como código (IaC)](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html)