Добавление пакета в AWS Lambda - PullRequest
0 голосов
/ 15 апреля 2020

Я новичок в AWS Лямбда, я пытаюсь добавить googles google-api-python-client к моей функции, и то, что я прочитал до сих пор, это способ сделать это:

  1. Я загружаю файл локально pip install google-api-python-client -t ./google, затем архивирую папку google, загружаю его как слой в AWS лямбда Create layer раздел как файл .zip.
  2. Я делаю то же самое с другим пакетом pip install google-auth-oauthlib -t ./google_auth
  3. Моя лямбда-функция выглядит следующим образом:
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

def lambda_handler(event, context):
    return ('test')

Когда я ее запускаю, я получаю:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'apiclient'",
  "errorType": "Runtime.ImportModuleError"
}

enter image description here

Как включить эти пакеты, чтобы они были доступны в моем скрипте?

1 Ответ

1 голос
/ 15 апреля 2020

При работе со слоями zip-файл должен содержать все модули / библиотеки в папке "python", как здесь do c. Вы можете установить пакет, используя $ pip install google-api-python-client -t ./python, затем zip -r layer.zip python и попытаться загрузить его как новый слой и указать ссылку в функции.

Вы можете быстро проверить вывод файла .zip, используя $ zipinfo layer.zip или $ unzip -l layer.zip, чтобы убедиться, что он соответствует требованиям в соответствии с документами -

pillow.zip
│ python/PIL
└ python/Pillow-5.3.0.dist-info
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...