Como uso camadas para integrar a versão mais recente do AWS SDK para JavaScript na minha função Lambda do Node.js?

6 minuto de leitura
0

O ambiente de runtime do AWS Lambda não tem todos os recursos da versão mais recente de um SDK da AWS. Quero integrar a versão mais recente do AWS SDK para JavaScript à minha função Node.js do Lambda.

Breve descrição

Para integrar a versão mais recente de um SDK da AWS ao pacote de implantação da sua função do Lambda, crie uma camada do Lambda. Em seguida, adicione a camada à sua função.

Observação: para as versões 16 e posteriores do Node.js, o runtime do Lambda Node.js inclui o AWS SDK para JavaScript versão 2. Para as versões 18 e posteriores do Node.js, o runtime do Lambda Node.js inclui o AWS SDK para JavaScript versão 3. Para obter mais informações, consulte a documentação AWS SDK para JavaScript.

Para obter uma lista completa dos runtimes e das versões do SDK da AWS que o Lambda usa, consulte runtimes do Lambda.

Observação: a resolução a seguir aumenta o tamanho do pacote de implantação da sua função. Para obter informações sobre cotas de armazenamento do Lambda, consulte Cotas do Lambda.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

(Opcional) Confirme a versão do AWS SDK que sua função usa

Conclua as etapas a seguir:

Observação: use esse método somente para as versões 16 e anteriores do Node.js.

  1. Crie uma função no console do Lambda.

  2. Atualize o código da função para retornar a versão do SDK da AWS que a função usa quando você invoca a função:

    const AWS = require('aws-sdk')   
    exports.handler = async (event) => {  
    return AWS.VERSION;  
    };
  3. Invoque sua função.

  4. Compare a versão do SDK da AWS que sua função retornou com a versão mais recente do SDK da AWS listada na documentação do SDK da AWS.

Instale e empacote a versão mais recente do SDK da AWS

Observação: os pacotes de implantação devem ser compatíveis com o runtime do Lambda que você usa. É uma prática recomendada usar o mesmo sistema operacional (SO) para seu runtime especificado nos runtimes do Lambda.

Em um ambiente de desenvolvimento compatível com o Lambda, conclua as seguintes etapas:

  1. Execute o comando a seguir para criar um diretório:

    mkdir -p aws-sdk-layer/nodejs
  2. Execute o comando a seguir para ir para o diretório:

    cd aws-sdk-layer/nodejs
  3. Instale o AWS SDK para sua versão de runtime do Node.js:
    Node.js 16 e versões anteriores (SDK da AWS versão 2)
    Para instalar a versão mais recente do SDK da AWS versão 2, use uma instância compatível com Amazon Linux 2 para executar o seguinte comando:

    npm install aws-sdk

    Para obter mais informações, consulte Tutorial: Como configurar o Node.js em uma instância do Amazon EC2.
    Observação: é uma prática recomendada usar um ambiente do Amazon Linux 2 ao desenvolver recursos do Lambda.
    -ou-
    Se você usa um sistema operacional Windows ou macOS para desenvolvimento, use o Docker para executar o seguinte comando:

    docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:<version>" /bin/sh -c "npm install aws-sdk; exit"

    Observação: antes de executar o comando, verifique se você está usando a versão mais recente do Docker no site do Docker.

    Node.js 18 e versões posteriores (SDK da AWS versão 3)
    Para instalar a versão mais recente do SDK da AWS versão 3, consulte Instalar o SDK para JavaScript.

  4. Crie um arquivo .zip a ser carregado na sua camada do Lambda:

    zip -r ../package.zip ../
  5. (Opcional) Verifique a versão do SDK da AWS que você instalou:

    cat package-lock.json

    Exemplo de saída:

    {  "requires": true,    "lockfileVersion": 1,  
      "dependencies": {  
        "aws-sdk": {  
          "version": "2.888.0",  
    ...

Use a AWS CLI ou o console do Lambda para criar uma camada Lambda e adicioná-la à sua função

AWS CLI

  1. Para criar uma nova camada do Lambda que inclua a versão mais recente do SDK da AWS, execute o seguinte comando publish-layer-version:

    aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes --zip-file fileb://../package.zip --region

    Observação: substitua node_sdk pelo nome da sua camada e Minha camada por uma descrição da camada. Além disso, substitua o valor compatible-runtimes pelo runtime que você usa e region pela região da AWS em que sua função e camada estão.

  2. Na saída, copie o valor LayerVersionArn para usar na próxima etapa.

  3. Para adicionar a camada à sua função, execute o seguinte comando update-function-configuration:

    aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region

    Observação: substitua my-function pelo nome da sua função, arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 pelo valor LayerVersionArn da sua saída e region pela sua região.

Para obter mais informações, consulte Gerenciando dependências do Lambda com camadas.

O console do Lambda

Para criar uma camada do Lambda e adicioná-la à sua função no console do Lambda, conclua as seguintes etapas:

  1. Abra a página Layers no console do Lambda.
  2. Escolha Criar camada.
  3. Em Nome, insira um nome para a nova camada.
  4. Escolha Carregar um arquivo.zip e, em seguida, escolha o nome do arquivo .zip do seu pacote de implantação.
  5. Escolha Criar.
  6. Abra a página Funções no console do Lambda e escolha o nome da função à qual você deseja adicionar a camada.
  7. Em Camadas, escolha Adicionar uma camada.
  8. Em Escolher uma camada, escolha Camadas personalizadas.
  9. Escolha a lista suspensa Camadas personalizadas e, em seguida, escolha sua camada personalizada.
  10. Escolha Adicionar.

(Opcional) testar a configuração

Conclua as etapas na seção (Opcional) Confirme a versão do AWS SDK que sua função usa para invocar sua função. A função retorna a versão do SDK da AWS que ela usa.

Informações relacionadas

Práticas recomendadas para trabalhar com funções do AWS Lambda

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

Como posso criar uma camada para minha função Lambda Python?

AWS OFICIAL
AWS OFICIALAtualizada há 25 dias