.zip
É necessário um arquivo para incluir módulos npm no Lambda. E você realmente não deve usar o editor da Web Lambda para muitas coisas - como em qualquer código de produção, você deve estar desenvolvendo localmente, comprometendo-se com o git etc.
MEU FLUXO:
1) Minhas funções Lambda são geralmente utilitários auxiliares para um projeto maior, por isso crio um diretório / aws / lambdas para abrigá-las.
2) Cada diretório lambda individual contém um arquivo index.js que contém o código da função, um arquivo package.json que define as dependências e um subdiretório / node_modules . (O arquivo package.json não é usado pelo Lambda, é apenas para que possamos executar o npm install
comando localmente .)
package.json:
{
"name": "my_lambda",
"dependencies": {
"svg2png": "^4.1.1"
}
}
3) Ignore todos os diretórios node_modules e arquivos .zip para que os arquivos gerados pelo npm sejam instalados e compactados não atrapalhem nosso repositório.
.gitignore:
# Ignore node_modules
**/node_modules
# Ignore any zip files
*.zip
4) Eu corro npm install
de dentro do diretório para instalar módulos e desenvolvo / teste a função localmente.
5) Eu zipo o diretório lambda e o carrego através do console.
( IMPORTANTE: Não use o utilitário 'compactar' do Mac do Finder para compactar o arquivo! Você deve executar o zip na CLI a partir da raiz do diretório - veja aqui )
zip -r ../yourfilename.zip *
NOTA:
Você pode ter problemas se instalar os módulos dos nós localmente no seu Mac, pois alguns módulos específicos da plataforma podem falhar quando implantados no ambiente Linux do Lambda. (Consulte https://stackoverflow.com/a/29994851/165673 )
A solução é compilar os módulos em uma instância do EC2 iniciada na AMI que corresponda ao tempo de execução do Lambda Node.js que você está usando (consulte esta lista de tempos de execução do Lambda e suas respectivas AMIs ).
Consulte também Pacote de implantação do AWS Lambda no Node.js - AWS Lambda