Как установить исправление в AWS Lambda после установки numpy в каталог? - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь загрузить свой код Python в AWS Lambda.Я следовал этому руководству, чтобы создать пакет развертывания (https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html).

. Я создал папку 'project-dir' на своем рабочем столе и переместил файл python 'Twilio_Alerts_AWS.py' в папкуЯ использовал команду:

pip install module-name -t /path/to/project-dir

, чтобы установить все мои библиотеки в папку. Затем я выделил все и нажал «Сжать», щелкнув правой кнопкой мыши по выделенным файлам в папке. Это создаст один архивированный файлпод названием «архив»

Я поместил 'archive.zip' в корзину S3 на AWS и вызвал ее в AWS Lambda. Я продолжаю получать ошибку Unable to import module 'Twilio_Alerts_AWS': Missing required dependencies ['numpy'] , даже если я установил numpy в папку.

Не уверен, что я делаю неправильно.

Код, который я пытаюсь загрузить:

from twilio.rest import Client
import time
import datetime
import requests
import pandas as pd
from pandas.io.json import json_normalize




def lambda_handler(event, context):
    # Your Account SID from twilio.com/console
    account_sid = "xxx"
    # Your Auth Token from twilio.com/console
    auth_token  = "xxx"

    client = Client(account_sid, auth_token)


    current_datetime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')


    headers = {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'x-api-key': 'xxx',
        'x-organization-id': 'xxx',
        'x-facility-id': 'xxx',
        'x-user-id': 'xxx',
    }



    orders_staging_api_call = requests.get('URL', headers=headers, verify=False)
    consumers_staging_api_call = requests.get('URL', headers=headers, verify=False)
    inventory_staging_api_call = requests.get('URL', headers=headers, verify=False)

    lst = ["+1234567890"]

    ##Consumers API Alert
    if consumers_staging_api_call.status_code !=200:
        for i in lst:
            message = client.messages.create(
                    to=i, 
                    from_="+1234567890",
                    body="API connection between A and B has failed for: Consumers.Datetime of check:{}".format(current_datetime))
            time.sleep(5)
        print(message.sid)
    else:
        print('done')

редактировать: с помощью osx machine.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Совет от AWS docs - использовать файл .whl для определенных зависимостей.

Вы можете распаковать numpy .whl файл из файлов загрузки проекта python, более полный ответ здесь

Панды в AWS лямбда выдают ошибку с ошибкой - Ответ

0 голосов
/ 20 мая 2019

Вот краткий способ предоставить Numpy только в лямбда-выражении AWS: просто добавьте слой scipy-numpy, предоставленный публично из Amazon, в свою лямбда-функцию (В AWS Lambda: слои -> добавьте слой -> слой numpy scipy долженуже предлагается)https://hub.docker.com/r/lambci/lambda/

Существуют и другие решения для решения проблемы компиляции, одним из которых является npm-пакет serverless-python-needs, если вы используете в своем проекте без сервера.Но я обнаружил, что это не работает, если вы запускаете команду serverless deploy в пользовательском gitlab-runner с требованиями serverless и serverless-python (для целей ci / cd).В этом случае я в настоящее время использую AWS Lambda Layers, чтобы обеспечить необходимые зависимости.Вот хорошее объяснение для создания слоя для панд: https://medium.com/@qtangs/creating-new-aws-lambda-layer-for-python-pandas-library-348b126e9f3e

Мой ответ, возможно, зашел слишком далеко, но вышеупомянутые опции могут быть полезны для других читателей, приходящих сюда.

0 голосов
/ 03 июня 2018

Ответ помог мне: Pandas в AWS lambda выдает ошибку с ошибкой .

TLDR: библиотеки, скомпилированные на Mac, не работают на Linux, поэтому вам необходимо убедиться, чтоВерсии Linux так или иначе (например, Docker).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...