Como faço para criar um pacote de implantação do Lambda para o Node.js?

4 minuto de leitura
0

Quero criar um pacote de implantação para uma função do AWS Lambda no Node.js, mas recebo o erro “Não é possível encontrar o módulo” durante a invocação.

Breve descrição

O erro Não é possível encontrar o módulo geralmente ocorre por um destes três motivos:

  • O pacote de implantação da função do Lambda não tem a estrutura de pastas correta para permitir que o serviço do Lambda carregue os módulos e as bibliotecas necessários.
  • O pacote de implantação não tem as permissões de arquivo corretas.
  • O pacote de implantação não contém o módulo que está sendo importado.

Observação: o Lambda requer permissões globais de leitura.

Resolução

Para criar um pacote de implantação com código de função na pasta raiz do arquivo .zip e depois aplicar permissões de leitura e execução para todos os arquivos, faça o seguinte.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

Para Linux e macOS

Instalar dependências na pasta do projeto de função

Observação: a maioria dos módulos do Node.js é independente da plataforma, mas alguns são compilados em ambientes específicos do sistema operacional. O Lambda é executado em um ambiente Linux. Ao instalar módulos com npm, é uma prática recomendada criar o arquivo .zip em um ambiente Linux para garantir que as dependências corretas da plataforma sejam incluídas.

1.    Na linha de comando, altere os diretórios para a pasta do projeto. Por exemplo:

cd /project-folder-name

Importante: Certifique-se de substituir project-folder-name pelo nome da pasta real do projeto.

2.    Instale suas dependências localmente na pasta do projeto de função executando o seguinte comando para cada módulo necessário para sua função:

Observação: inclua também o arquivo de origem do manipulador.

npm install package-name

Importante: Certifique-se de substituir package-name pelo nome real do pacote. Também há um limite de 250 MB no tamanho da função para arquivos descompactados. Inclua somente as bibliotecas necessárias para que sua função funcione.

Por exemplo, para instalar os módulos do AWS SDK para JavaScript na raiz de uma pasta de projeto, execute o seguinte comando:

npm install aws-sdk

Observação: o Lambda inclui as bibliotecas do AWS SDK para JavaScript como parte da configuração básica do contêiner. Para usar uma versão diferente da biblioteca, você também pode incluir uma cópia local. Para mais informações sobre o ambiente atual do Lambda e as bibliotecas com suporte, consulte Runtimes do Lambda.

Criar o pacote de implantação

Na linha de comando, execute o seguinte comando:

zip -r ../function-name.zip .

Observação: substitua function-name pelo nome do arquivo que você deseja dar ao seu pacote de implantação. Isso coloca todos os arquivos na pasta do projeto em um arquivo .zip localizado na pasta principal.

Verificar o pacote de implantação

1.    Na linha de comando, execute o seguinte comando:

zipinfo ../function-name.zip

Observação: substitua function-name pelo nome real do arquivo do seu pacote de implantação. Ou você pode executar unzip -l no arquivo .zip para listar seu conteúdo, mas a saída não será tão detalhada.

2.    Verifique a saída para verificar se o arquivo de origem do manipulador de funções está localizado na raiz do arquivo .zip.

3.    Verifique a saída para verificar se seus arquivos têm permissões globais de leitura. Para mais informações, consulte Como soluciono os erros de “permissão negada” ou “não é possível importar o módulo” ao fazer o upload de um pacote de implantação do Lambda?

Para Windows

Criar o pacote de implantação

1.    No Explorador de Arquivos, abra a pasta do projeto.

2.    Selecione todos os arquivos do projeto e clique com o botão direito do mouse para abrir o menu de contexto.

3.    Escolha Enviar para e, em seguida, escolha Pasta compactada (zipada).

4.    Insira um nome para o arquivo .zip.

Carregar e verificar o pacote de implantação

1.    No console do Lambda, escolha sua função.

2.    Em Código da função, em Tipo de entrada de código, escolha Carregar um arquivo .zip.

3.    Em Pacote de funções, escolha Carregar.

4.    Escolha o arquivo .zip que você criou e, em seguida, escolha Abrir.

5.    Na parte superior do console, escolha Salvar.

Dica: Você também pode executar update-function-code na AWS CLI para carregar seu arquivo .zip.

6.    Depois que o upload estiver concluído, escolha Testar.

Dica: Você também pode usar 7-Zip na linha de comando para verificar as permissões de arquivo do seu pacote de implantação. Faça o download no site do 7-Zip.


Informações relacionadas

Implantar funções do Lambda do Node.js com arquivos .zip

Pacotes de implantação do Lambda

Criação de funções do Lambda com o Node.js

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos