

# Implantar funções do Lambda em Node.js com arquivos .zip
<a name="nodejs-package"></a>

 O código da função do AWS Lambda compreende um arquivo .js ou .mjs contendo o código do manipulador da função, juntamente com quaisquer pacotes e módulos adicionais dos quais o código dependa. Para implantar o código dessa função no Lambda, você usa um *pacote de implantação*. Esse pacote pode ser um arquivo .zip ou uma imagem de contêiner. Para obter mais informações sobre como usar imagens de contêiner com Node.js, consulte [Implantar funções do Lambda em Node.js com imagens de contêiner](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-image.html). 

 Para criar um pacote de implantação como arquivo .zip, você pode usar um utilitário de arquivo .zip integrado da ferramenta da linha de comando ou qualquer outro utilitário de arquivo .zip, como o [7zip](https://www.7-zip.org/download.html). Os exemplos mostrados nas seções a seguir pressupõem que você esteja usando uma ferramenta `zip` da linha de comando em um ambiente Linux ou MacOS. Para usar os mesmos comandos no Windows, você pode [instalar o Subsistema Windows para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obter uma versão do Ubuntu e do Bash integrada ao Windows. 

 Observe que o Lambda usa permissões de arquivo POSIX, então pode ser necessário [definir permissões para a pasta do pacote de implantação](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-deployment-package-errors/) antes da criação do arquivo .zip. 

**Topics**
+ [

## Dependências de runtime em Node.js
](#nodejs-package-dependencies)
+ [

## Criar um pacote de implantação .zip sem dependências
](#nodejs-package-create-no-dependencies)
+ [

## Criar um pacote de implantação .zip com dependências
](#nodejs-package-create-dependencies)
+ [

## Criar uma camada Node.js para suas dependências
](#nodejs-package-dependencies-layers)
+ [

## Caminho de pesquisa de dependências e bibliotecas incluídas no runtime
](#nodejs-package-searchpath)
+ [

## Criação e atualização de funções do Lambda em Node.js usando arquivos .zip
](#nodejs-package-create-update)

## Dependências de runtime em Node.js
<a name="nodejs-package-dependencies"></a>

 Para funções do Lambda que usam o runtime do Node.js, uma dependência pode ser qualquer módulo Node.js. O runtime do Node.js inclui várias bibliotecas conhecidas, bem como uma versão do AWS SDK para JavaScript. Todos os [runtime Node.js compatíveis](lambda-nodejs.md#nodejs-supported-runtimes) incluem a versão 3 do SDK. Para usar a versão 2 do SDK, você deve adicionar o SDK ao seu pacote de implantação de arquivo .zip. Para encontrar a versão específica do SDK incluída no tempo de execução que você está usando, consulte [Versões do SDK incluídas no runtime](lambda-nodejs.md#nodejs-sdk-included). 

 O Lambda atualiza periodicamente as bibliotecas do SDK no runtime do Node.js para incluir os recursos e upgrades de segurança mais recentes. O Lambda também aplica patches de segurança e atualizações às outras bibliotecas inclusas no runtime. Para ter controle total das dependências em seu pacote, é possível adicionar a versão preferencial de qualquer dependência inclusa no runtime ao pacote de implantação. Por exemplo, se você deseja usar uma versão específica do SDK para JavaScript, pode incluí-la no arquivo .zip como uma dependência. Para obter mais informações sobre como adicionar dependências inclusas no runtime ao arquivo .zip, consulte [Caminho de pesquisa de dependências e bibliotecas incluídas no runtime](#nodejs-package-searchpath). 

 No [modelo de responsabilidade compartilhada da AWS](lambda-runtimes.md#runtimes-shared-responsibility), você é responsável pelo gerenciamento de todas as dependências dos pacotes de implantação das suas funções. Isso inclui a aplicação de atualizações e patches de segurança. Para atualizar as dependências no pacote de implantação da função, primeiro crie um novo arquivo .zip e depois carregue esse arquivo no Lambda. Consulte [Criar um pacote de implantação .zip com dependências](#nodejs-package-create-dependencies) e [Criação e atualização de funções do Lambda em Node.js usando arquivos .zip](#nodejs-package-create-update) para obter mais informações. 

## Criar um pacote de implantação .zip sem dependências
<a name="nodejs-package-create-no-dependencies"></a>

 Se o código de função não tiver dependências, exceto para as bibliotecas inclusas no runtime do Lambda, o arquivo .zip conterá somente o arquivo `index.js` ou `index.mjs` com o código do manipulador da função. Use seu utilitário zip preferencial para criar um arquivo .zip com o arquivo `index.js` ou `index.mjs` na raiz. Se o arquivo que contém o código do manipulador não estiver na raiz do arquivo .zip, o Lambda não poderá executar o código. 

 Para saber como implantar o arquivo .zip para criar uma função do Lambda ou atualizar uma já existente, consulte  [Criação e atualização de funções do Lambda em Node.js usando arquivos .zip](#nodejs-package-create-update). 

## Criar um pacote de implantação .zip com dependências
<a name="nodejs-package-create-dependencies"></a>

Se o código de função depender de pacotes ou módulos que não estejam inclusos no runtime do Node.js do Lambda, é possível adicionar essas dependências ao arquivo .zip com o código de função ou usar uma [camada do Lambda](chapter-layers.md). As instruções desta seção mostram como incluir as dependências no pacote de implantação .zip. Para obter instruções sobre como incluir suas dependências em uma camada, consulte [Criar uma camada Node.js para suas dependências](#nodejs-package-dependencies-layers).

Os comandos de exemplo da CLI a seguir criam um arquivo .zip denominado `my_deployment_package.zip` contendo o arquivo `index.js` ou `index.mjs` com o código do manipulador da função e as dependências. No exemplo, você instala as dependências usando o gerenciador de pacotes npm.

**Para criar o pacote de implantação**

1. Navegue até o diretório do projeto que contém seu arquivo de código-fonte `index.js` ou `index.mjs`. Neste exemplo, o diretório se chama `my_function`.

   ```
   cd my_function
   ```

1. Instale as bibliotecas necessárias para a função no diretório `node_modules` usando o comando `npm install`. Neste exemplo, você instala o AWS X-Ray SDK for Node.js.

   ```
   npm install aws-xray-sdk
   ```

   Isso cria uma estrutura de pastas semelhante à seguinte:

   ```
   ~/my_function
   ├── index.mjs
   └── node_modules
       ├── async
       ├── async-listener
       ├── atomic-batcher
       ├── aws-sdk
       ├── aws-xray-sdk
       ├── aws-xray-sdk-core
   ```

   Também é possível adicionar módulos personalizados criados por você ao pacote de implantação. Crie um diretório em `node_modules` com o nome do seu módulo e salve seus pacotes personalizados gravados nesse diretório.

1. Crie um arquivo .zip que contenha o conteúdo da pasta do seu projeto na raiz. Use a opção `r` (recursiva) para garantir que zip compacte as subpastas.

   ```
   zip -r my_deployment_package.zip .
   ```

## Criar uma camada Node.js para suas dependências
<a name="nodejs-package-dependencies-layers"></a>

As instruções nesta seção mostram como incluir suas dependências em uma camada. Para obter instruções sobre como incluir suas dependências em seu pacote de implantação, consulte [Criar um pacote de implantação .zip com dependências](#nodejs-package-create-dependencies).

Quando você adiciona uma camada a uma função, o Lambda carrega o conteúdo da camada no diretório `/opt` desse ambiente de execução. Para cada runtime do Lambda, a variável `PATH` já inclui caminhos de pasta específica no diretório `/opt`. Para garantir que o Lambda colete o conteúdo da camada, o arquivo .zip da camada deve ter suas dependências em um dos seguintes caminhos de pasta:
+ `nodejs/node_modules`
+ `nodejs/node18/node_modules (NODE_PATH)`
+ `nodejs/node20/node_modules (NODE_PATH)`
+ `nodejs/node22/node_modules (NODE_PATH)`

Por exemplo, sua estrutura de arquivo .zip da sua camada pode ser assim:

```
xray-sdk.zip
└ nodejs/node_modules/aws-xray-sdk
```

Além disso, o Lambda detecta automaticamente todas as bibliotecas no diretório `/opt/lib` e quaisquer binários no diretório `/opt/bin`. Para garantir que o Lambda encontre corretamente o conteúdo da sua camada, você também pode criar uma camada com a seguinte estrutura:

```
custom-layer.zip
└ lib
    | lib_1
    | lib_2
└ bin
    | bin_1
    | bin_2
```

Depois de empacotar sua camada, consulte [Criar e excluir camadas no Lambda](creating-deleting-layers.md) e [Adicionar camadas às funções](adding-layers.md) para concluir sua configuração de camada.

## Caminho de pesquisa de dependências e bibliotecas incluídas no runtime
<a name="nodejs-package-searchpath"></a>

O runtime do Node.js inclui várias bibliotecas conhecidas, bem como uma versão do AWS SDK para JavaScript. Se você desejar usar uma versão diferente de uma biblioteca inclusa no runtime, poderá fazer isso ao empacotá-la com a função ou adicioná-la como uma dependência no pacote de implantação. Por exemplo, você pode usar uma versão diferente do SDK ao adicioná-la ao pacote de implantação .zip. Também é possível incluí-la em uma [camada do Lambda](chapter-layers.md) para a função.

Quando você usa uma instrução `import` ou `require` em seu código, o runtime do Node.js pesquisa os diretórios no caminho `NODE_PATH` até localizar o módulo. Por padrão, o primeiro local que o runtime pesquisa é o diretório no qual o pacote de implantação .zip é descompactado e montado (`/var/task`). Se você incluir uma versão de uma biblioteca incluída no runtime do pacote de implantação, essa versão terá precedência sobre a versão incluída no runtime. As dependências do pacote de implantação também têm precedência sobre as dependências das camadas.

Quando você adiciona uma dependência a uma camada, o Lambda a extrai para `/opt/nodejs/nodexx/node_modules`, em que `nodexx` representa a versão do runtime que você está usando. No caminho de pesquisa, esse diretório tem precedência sobre o diretório que contém as bibliotecas incluídas no runtime (`/var/lang/lib/node_modules`). As bibliotecas em camadas da função, portanto, têm precedência sobre as versões incluídas no runtime.

É possível visualizar o caminho de pesquisa completo para a função do Lambda ao adicionar a linha de código a seguir.

```
console.log(process.env.NODE_PATH)
```

Você também pode adicionar dependências em uma pasta separada dentro do pacote .zip. Por exemplo, você pode adicionar um módulo personalizado a uma pasta no pacote .zip chamada `common`. Quando o pacote .zip é descompactado e montado, essa pasta é colocada dentro do diretório `/var/task`. Para usar uma dependência de uma pasta no pacote de implantação .zip em seu código, use uma instrução `import { } from` ou `const { } = require()`, com base no seu uso da resolução do módulo CJS ou ESM. Por exemplo:

```
import { myModule } from './common'
```

Se você empacotar o código com `esbuild`, `rollup` ou similares, as dependências usadas por sua função serão empacotadas em um ou mais arquivos. Recomendamos usar esse método para comercializar dependências sempre que possível. Em comparação com a adição de dependências ao pacote de implantação, o empacotamento do código resulta em melhor performance devido à redução nas operações de E/S.

## Criação e atualização de funções do Lambda em Node.js usando arquivos .zip
<a name="nodejs-package-create-update"></a>

 Depois de criar o pacote de implantação .zip, você poderá usá-lo para criar uma função do Lambda ou atualizar uma existente. É possível implantar o pacote .zip usando o console do Lambda, a AWS Command Line Interface e a API do Lambda. Você também pode criar e atualizar funções do Lambda usando o AWS Serverless Application Model (AWS SAM) e o CloudFormation. 

O tamanho máximo de um pacote de implantação .zip para o Lambda é 250 MB (descompactado). Esse limite se aplica ao tamanho combinado de todos os arquivos que você carrega, inclusive qualquer camada do Lambda.

O runtime do Lambda precisa de permissão para ler os arquivos no pacote de implantação. Na notação octal de permissões do Linux, o Lambda precisa de 644 permissões para arquivos não executáveis (rw-r--r--) e 755 permissões (rwxr-xr-x) para diretórios e arquivos executáveis.

No Linux e no MacOS, use o comando `chmod` para alterar as permissões de arquivo em arquivos e diretórios do seu pacote de implantação. Por exemplo, para dar a um arquivo não executável as permissões corretas, execute o comando a seguir.

```
chmod 644 <filepath>
```

Para alterar as permissões de arquivo no Windows, consulte [Set, View, Change, or Remove Permissions on an Object](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731667(v=ws.10)) na documentação do Microsoft Windows.

**nota**  
Se você não conceder ao Lambda as permissões necessárias para acessar diretórios no seu pacote de implantação, o Lambda definirá as permissões desses diretórios como 755 (rwxr-xr-x).

### Criar e atualizar funções com arquivos .zip usando o console
<a name="nodejs-package-create-console"></a>

 Para criar uma nova função, você deve primeiro criar a função no console e depois carregar o arquivo .zip. Para atualizar uma função existente, abra a página da função e siga o mesmo procedimento para adicionar o arquivo .zip atualizado. 

 Se o arquivo .zip for menor que 50 MB, você poderá criar ou atualizar uma função carregando o arquivo diretamente da máquina local. Para arquivos .zip maiores que 50 MB, você deve primeiro carregar o pacote para um bucket do Amazon S3. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando o Console de gerenciamento da AWS, consulte [Conceitos básicos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html). Para carregar arquivos usando a AWS CLI, consulte [Mover objetos](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) no *Guia do usuário da AWS CLI*. 

**nota**  
Você não pode alterar o [tipo de pacote de implantação](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-PackageType) (.zip ou imagem de contêiner) de uma função existente. Por exemplo, você não pode converter uma função de imagem de contêiner para usar um arquivo compactado .zip. É necessário criar uma nova função.

**Para criar uma função (console)**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda e escolha **Criar função**.

1. Escolha **Author from scratch** (Criar do zero).

1. Em **Basic information** (Informações básicas), faça o seguinte:

   1. Em **Nome da função**, insira o nome da função.

   1. Em **Runtime**, selecione o runtime que você deseja usar.

   1. (Opcional) Em **Arquitetura**, escolha a arquitetura do conjunto de instruções para a função. O valor da arquitetura padrão é X86\$164. Certifique-se de que o pacote de implantação .zip da função seja compatível com a arquitetura do conjunto de instruções que você escolheu.

1. (Opcional) Em **Permissões**, expanda **Alterar função de execução padrão**. Crie uma **função de execução** ou use uma existente.

1. Escolha a opção **Criar função**. O Lambda cria uma função básica “Hello world” usando o runtime escolhido.

**Você pode carregar o arquivo .zip da máquina local (console)**

1. Na [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console Lambda, escolha a função para a qual você deseja carregar o arquivo .zip.

1. Selecione a guia **Código**.

1. No painel do **Código-fonte**, escolha **Carregar de**.

1. Escolha o **arquivo .zip**.

1. Para carregar o arquivo .zip, faça o seguinte:

   1. Selecione **Carregar** e, em seguida, selecione o arquivo .zip no seletor de arquivos.

   1. Escolha **Open (Abrir)**.

   1. Escolha **Salvar**.

**Para carregar um arquivo .zip de um bucket do Amazon S3 (console)**

1. Na [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda, escolha a função para a qual você deseja carregar um novo arquivo .zip.

1. Selecione a guia **Código**.

1. No painel do **Código-fonte**, escolha **Carregar de**.

1. Escolha **Local do Amazon S3**.

1. Cole o URL do link do Amazon S3 do arquivo .zip e escolha **Salvar**.

### Atualizar funções do arquivo .zip usando o editor de código do console
<a name="nodejs-package-console-edit"></a>

 Para algumas funções com pacotes de implantação .zip, você pode usar o editor de código integrado do console do Lambda para atualizar o código da função diretamente. Para usar esse recurso, a função deve atender aos seguintes critérios: 
+ A função deve usar um dos runtimes da linguagem interpretada (Python, Node.js ou Ruby)
+ O pacote de implantação da função precisa ter menos de 50 MB (sem compactação).

O código das funções com pacotes de implantação de imagens de contêiner não pode ser editado diretamente no console.

**Para atualizar o código da função usando o editor de código do console**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda e selecione a função.

1. Selecione a guia **Código**.

1. No painel **Código-fonte**, selecione o arquivo de código-fonte e edite-o no editor de código integrado.

1. Na seção **DEPLOY**, escolha **Implantar** para atualizar o código da função:  
![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/getting-started-tutorial/deploy-console.png)

### Criar e atualizar funções com arquivos .zip usando a AWS CLI
<a name="nodejs-package-create-cli"></a>

 Você pode usar a [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) para criar uma função ou atualizar uma existente usando um arquivo .zip. Use os comandos [create-function](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html) e [update-function-code](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html) para implantar o pacote .zip. Se o arquivo .zip for menor que 50 MB, você poderá carregar o pacote .zip de um local do arquivo na máquina de compilação local. Para arquivos .zip maiores, você deve carregar o pacote .zip de um bucket do Amazon S3. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando a AWS CLI, consulte [Mover objetos](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) no *Guia do usuário da AWS CLI*. 

**nota**  
Se você carregar o arquivo .zip de um bucket do Amazon S3 usando a AWS CLI, o bucket deverá estar na mesma Região da AWS que sua função.

 Para criar uma função usando um arquivo .zip com a AWS CLI, você deve especificar o seguinte: 
+ O nome da função (`--function-name`)
+ O runtime da função (`--runtime`)
+ O nome do recurso da Amazon (ARN) da [função de execução](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) da função (`--role`)
+ O nome do método do manipulador no código da função (`--handler`)

 Você também deve especificar a local do arquivo .zip. Se o arquivo .zip estiver localizado em uma pasta da máquina de compilação local, use a opção `--zip-file` para especificar o caminho do arquivo, conforme mostrado no comando do exemplo a seguir. 

```
aws lambda create-function --function-name myFunction \
--runtime nodejs24.x --handler index.handler \
--role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
--zip-file fileb://myFunction.zip
```

 Para especificar o local do arquivo .zip em um bucket do Amazon S3, use a opção `--code` conforme mostrado no comando do exemplo a seguir. Você só precisa usar o parâmetro `S3ObjectVersion` para objetos com versionamento. 

```
aws lambda create-function --function-name myFunction \
--runtime nodejs24.x --handler index.handler \
--role arn:aws:iam::111122223333:role/service-role/my-lambda-role \
--code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion
```

 Para atualizar uma função existente usando a CLI, especifique o nome da função usando o parâmetro `--function-name`. Você também deve especificar o local do arquivo .zip que deseja usar para atualizar o código da função. Se o arquivo .zip estiver localizado em uma pasta da máquina de compilação local, use a opção `--zip-file` para especificar o caminho do arquivo, conforme mostrado no comando do exemplo a seguir. 

```
aws lambda update-function-code --function-name myFunction \
--zip-file fileb://myFunction.zip
```

 Para especificar o local do arquivo .zip em um bucket do Amazon S3, use as opções `--s3-bucket` e `--s3-key` conforme mostrado no comando do exemplo a seguir. Você só precisa usar o parâmetro `--s3-object-version` para objetos com versionamento. 

```
aws lambda update-function-code --function-name myFunction \
--s3-bucket amzn-s3-demo-bucket --s3-key myFileName.zip --s3-object-version myObject Version
```

### Criar e atualizar funções com arquivos .zip usando a API do Lamba
<a name="nodejs-package-create-api"></a>

 Para criar e atualizar funções usando um arquivo .zip, use as seguintes operações de API: 
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)

### Criar e atualizar funções com arquivos .zip usando o AWS SAM
<a name="nodejs-package-create-sam"></a>

 O AWS Serverless Application Model (AWS SAM) é um kit de ferramentas que ajuda a simplificar o processo de criação e execução de aplicações com tecnologia sem servidor na AWS. Você define os recursos para a aplicação em um modelo YAML ou JSON e usa a interface da linha de comando do AWS SAM (CLI do AWS SAM) para criar, empacotar e implantar aplicações. Quando você cria uma função do Lambda com base em um modelo do AWS SAM, o AWS SAM cria automaticamente um pacote de implantação .zip ou uma imagem de contêiner com o código da função e quaisquer dependências que você especificar. Para saber mais sobre como usar o AWS SAM para criar e implantar funções do Lambda, consulte [Conceitos básicos do AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started.html) no *Guia do desenvolvedor do AWS Serverless Application Model*.

Você também pode usar o AWS SAM para criar uma função do Lambda usando um arquivo .zip existente. Para criar uma função do Lambda usando o AWS SAM, salve o arquivo .zip em um bucket do Amazon S3 ou em uma pasta local na máquina de compilação. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando a AWS CLI, consulte [Mover objetos](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) no *Guia do usuário da AWS CLI*. 

 No modelo do AWS SAM, o recurso `AWS::Serverless::Function` especifica a função do Lambda. Nesse recurso, defina as seguintes propriedades para criar uma função usando um arquivo .zip: 
+ `PackageType`: definir como `Zip`
+ `CodeUri`: definir como o URI do Amazon S3 do código da função, o caminho para a pasta local ou o objeto [FunctionCode](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-functioncode.html)
+ `Runtime`: definir como o runtime escolhido

 Com o AWS SAM, se o arquivo .zip for maior que 50 MB, você não precisará carregá-lo primeiro em um bucket do Amazon S3. O AWS SAM poderá carregar pacotes .zip com o tamanho máximo permitido de 250 MB (descompactados) de um local da máquina de compilação local. 

 Para saber mais sobre a implantação de funções usando o arquivo .zip no AWS SAM, consulte [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html) no *Guia do desenvolvedor do AWS SAM*. 

### Criar e atualizar funções com arquivos .zip usando o CloudFormation
<a name="nodejs-package-create-cfn"></a>

 Você pode usar o CloudFormation para criar uma função do Lambda usando um arquivo .zip. Para criar uma função do Lambda de um arquivo.zip, primeiro carregue o arquivo em um bucket do Amazon S3. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando a AWS CLI, consulte [Mover objetos](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html#using-s3-commands-managing-objects-move) no *Guia do usuário da AWS CLI. *

No modelo do CloudFormation, o recurso `AWS::Lambda::Function` especifica a função do Lambda. Nesse recurso, defina as seguintes propriedades para criar uma função usando um arquivo .zip:
+ `PackageType`: definir como `Zip`
+ `Code`: inserir o nome do bucket do Amazon S3 e o nome do arquivo .zip nos campos `S3Bucket` e `S3Key`
+ `Runtime`: definir como o runtime escolhido

 O arquivo .zip que o CloudFormation gera não pode exceder 4 MB. Para saber mais sobre a implantação de funções usando o arquivo .zip no CloudFormation, consulte [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) no *Guia do desenvolvedor do CloudFormation*. 