Hoje irei falar um pouco desse serviço da AWS pouco utilizado, pois eu precisava implementar em um lambda algumas libs que somavam mais de 500 MB juntas, e obviamente não conseguia fazer o deploy, devido a limitação de 250 MB da AWS e tive que pesquisar bastante para solucionar o impasse.
Então descobri esse serviço, que você pode provisionar as dependências em layers (camadas) e especificar em qual lambda quer usar, podendo ser utilizado por vários lambdas simultaneamente. O uso de camadas reduz o tamanho dos arquivos de implantação carregados e agiliza a implantação do seu código.
Imagine que você precise desenvolver um lambda para declarar imposto de rendas e nesse lambda, precisa conter três dependência do node: express, sequelize e mysql.
No meu exemplo utilizo node, mas o AWS Layer funciona em todas as linguagens em que a AWS dão suporte, continuando nosso exemplo, vamos supor que o express tem 100 MB, sequelize 100 MB e mysql 100 MB deszipados após o build da node_modules, logo o lambda não irá fazer deploy, pela limitação de 250 MB.
Para resolver esse problema, utiliza-se o AWS Layer, a solução seria criar um layer pro express, um layer pro sequelize e um layer pro mysql separadamente, como se fosse uma dependência do npm. Nas configurações do lambda, você declara o layer como dependência, como disse anteriormente, podendo ser utilizado por diversos lambdas, lembrando que cada layer também tem a limitação de 250 MB e pode ser versionado.
Esses casos de pacotes grandes são bem raros, mas quando precisei, essa foi a solução. A AWS não cobra pelos layers, somente é cobrado o valor dos lambdas por execução. Você pode criar layers usando o console do Lambda, a API do Lambda, o AWS CloudFormation ou o AWS Serverless Application Model (AWS SAM). Para obter mais informações sobre como criar os layers consulte a documentação da AWS.
Referências
Layer - AWS Docs
Top comments (0)