Como adiciono pacotes Python com binários compilados ao meu pacote de implantação e torno o pacote compatível com o Lambda?

3 minuto de leitura
0

Eu usei o pip para instalar um pacote Python que contém código compilado e agora minha função do AWS Lambda retorna um erro “Não é possível importar o módulo”.

Breve descrição

Os pacotes Python que contêm código compilado, como NumPy e pandas, nem sempre são compatíveis com os runtimes do Lambda por padrão. Se você instalar esses pacotes usando pip, os pacotes baixarão e compilarão um pacote de nome de módulo para a arquitetura da máquina local. Se você não usa um sistema operacional (OS) Linux, isso torna seu pacote de implantação incompatível com os runtimes do Lambda Python.

Para tornar seu pacote ou camada de implantação compatível com o Lambda em um sistema operacional não Linux, execute o **comando pip install ** com manylinux2014 como valor para o parâmetro\ --platform.

Observação: ** as tags macOS\ --platform **não funcionam. Por exemplo, as tags win\ _amd64 e macosx\ _10\ _6\ _intel não instalam um pacote de implantação compatível com o Lambda.

Resolução

**Observação:**o procedimento de exemplo a seguir mostra como instalar pandas para o runtime do Lambda Python 3.9 que é executado na arquitetura x86\ _64.

  1. Abra um prompt de comando. Em seguida, execute o seguinte comando pip para confirmar que você está usando uma versão do pip que é a versão 19.3.0 ou mais recente:

    pip --version

    Se você estiver usando uma versão do pip anterior à versão 19.3.0 do pip, atualize para a versão mais recente do pip:

    python3.9 -m pip install --upgrade pip
  2. Instale o arquivo.whl do pacote Python pré-compilado como uma dependência no diretório do projeto da sua função do Lambda:

    Importante: Substitua my-lambda-function pelo nome do diretório do projeto da sua função.

    pip install \    
        --platform manylinux2014_x86_64 \
        --target=my-lambda-function \
        --implementation cp \
        --python-version 3.9 \
        --only-binary=:all: --upgrade \
        pandas
  3. Abra o diretório do projeto da sua função do Lambda. Se você usa o macOS, execute o seguinte comando:

    cd my-lambda-function
  4. Em um editor de texto, crie um novo arquivo chamado lambda\ _function.py. Em seguida, copie e cole o código de exemplo a seguir no arquivo:

    import numpy as np
    import pandas as pd
    def lambda_handler(event, context):
        df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),columns=["a", "b", "c"])
        number = np.pi
        print(df2)
        print(number)

    Salve esse arquivo no diretório do projeto da sua função do Lambda.

  5. Crie um arquivo de arquivo.zip do pacote de implantação do Lambda que inclua todas as bibliotecas e o código-fonte instalados:

    zip -r ../my-deployment-package.zip .

    Use o arquivo my-deployment-package.zip para criar uma nova função do Lambda do Python 3.9 ou para atualizar uma existente. Para obter instruções, consulte Como trabalhar com arquivos de arquivo.zip para funções do Python Lambda.

    Observação: você pode usar um procedimento semelhante para criar uma camada Lambda que pode ser usada em várias funções. Por exemplo, o comando a seguir cria uma nova camada Lambda para instalar pandas para o runtime do Lambda Python 3.9, executado na arquitetura arm64:

    pip install \
        --platform manylinux2014_aarch64 \
        --target=./python/lib/python3.9/site-packages \
        --implementation cp \
        --python-version 3.9 \
        --only-binary=:all: --upgrade \
        pandas

Informações relacionadas

Criação e compartilhamento de camadas Lambda

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses