pandas как слой в AWS лямбда - PullRequest
0 голосов
/ 23 марта 2020

Поэтому я попытался настроить пакет в слое в AWS Lambda, чтобы использовать его позже в функции. К сожалению, я не могу заставить переменную env работать или установить ее правильно, чтобы она могла читать google_secret. json

Чтобы подготовить лямбда-пакет I:

  1. Создано Экземпляр EC2
  2. Создан локальный каталог: build/python/lib/python3.7/site-packages
  3. Установлены все пакеты, которые я использую в этом каталоге, включая gspread_ pandas
  4. Заархивировал каталог python
  5. Загрузил его на S3, а затем использовал его в качестве слоя

Процесс работал для всех других пакетов, кроме этого, поскольку у меня не было конфигурации, указывающей на google_secret. json

В качестве исправления я попытался:

  1. Изменить этот путь в файле конфигурации _default_dir = ( Path(environ.get("$XDG_CONFIG_HOME", Path(environ.get("HOME")) / ".config")) / "gspread_pandas") на путь, который я создал в каталоге python (в архиве) , где я хранил google_secret. json: "python/config/gspread_pandas/"
  2. Создайте файл google_secret. json в функции lambda, создайте переменную среды "GSPREAD_PANDAS_CONFIG_DIR" и установите путь к файлу

Ничего из вышеперечисленного не сработало, к сожалению

В обоих случаях я получаю следующую ошибку

    { "errorMessage": "expected str, bytes or os.PathLike object, not NoneType", 
"errorType": "TypeError", 
"stackTrace": [ " File \"/var/lang/lib/python3.7/imp.py\", line 234, in load_module\n return load_source(name, filename, file)\n", 
" File \"/var/lang/lib/python3.7/imp.py\", line 171, in load_source\n module = _load(spec)\n", 
" File \"<frozen importlib._bootstrap>\", line 696, in _load\n", " File \"<frozen importlib._bootstrap>\", line 677, in _load_unlocked\n", 
" File \"<frozen importlib._bootstrap_external>\", line 728, in exec_module\n", 
" File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n", 
" File \"/var/task/lambda_function.py\", line 8, in <module>\n import gspread_pandas\n", 
" File \"/opt/python/lib/python3.7/site-packages/gspread_pandas/__init__.py\", line 5, in <module>\n from .client import Client\n", 
" File \"/opt/python/lib/python3.7/site-packages/gspread_pandas/client.py\", line 15, in <module>\n from gspread_pandas.conf import default_scope, get_creds\n", 
" File \"/opt/python/lib/python3.7/site-packages/gspread_pandas/conf.py\", line 25, in <module>\n Path(environ.get(\"$XDG_CONFIG_HOME\", Path(environ.get(\"HOME\")) / \".config\"))\n", 
" File \"/var/lang/lib/python3.7/pathlib.py\", line 1022, in __new__\n self = cls._from_parts(args, init=False)\n", 
" File \"/var/lang/lib/python3.7/pathlib.py\", line 669, in _from_parts\n drv, root, parts = self._parse_args(args)\n", 
" File \"/var/lang/lib/python3.7/pathlib.py\", line 653, in _parse_args\n a = os.fspath(a)\n" ] }

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

Любая помощь будет принята с благодарностью!

...