Выполнение Jupyter Notebooks в Lambda
Модули Runbook Jupyter стали основным продуктом для облачных служб безопасности и операционных групп для более полной визуализации данных. Однако связать их с рабочими процессами было сложно, так как большая часть рабочих процессов управляется AWS Lambda, поскольку структура упаковки, необходимая для библиотек и двоичных файлов для запуска Jupyter в Lambda, немного сложна.
Мы упаковали все необходимые библиотеки и двоичные файлы в слой, и он общедоступен здесь:
arn:aws:lambda:us-east-1:221470125883:layer:jupyterlayer:1
Добавьте указанный выше слой jupyter в свою функцию, и вы сможете использовать papermill для запуска блокнота. Ниже приведен пример функции, которая загружает блокнот Jupyter из S3, выполняет и загружает выполненный блокнот обратно в S3.
Шаг 1
Создайте свою функцию
Шаг 2
Добавьте указанный выше слой jupyter в свою функцию.
Шаг 3
Напишите свою функцию. Ниже приведен пример функции загрузки блокнота с S3, ее выполнения и загрузки результатов на S3.
(пути пакета внутри слоя необходимо добавить к пути внутри лямбды, как описано ниже)
# to add paths import sys # papermill to execute notebook import papermill as pm # lambda layer uploads zip to /opt/ sys.path.append("/opt/bin") sys.path.append("/opt/python") os.environ["PYTHONPATH"]='/var/task' os.environ["PYTHONPATH"]='/opt/python/' # ipython needs a writeable directory os.environ["IPYTHONDIR"]='/tmp/ipythondir' def lambda_handler(event, context): s3 = boto3.resource('s3') s3.meta.client.download_file("download_bucket","juptest.ipynb", "/tmp/juptest.ipynb") pm.execute_notebook('/tmp/juptest.ipynb', '/tmp/juptest_output.ipynb', kernel_name='python3') s3_client.upload_file("/tmp/juptest_output.ipynb", "upload_bucket","temp/juptest_output.ipynb")
Шаг 4
Выполнить функцию
Если вы хотите создать свой собственный слой…
Если вы хотите создать свой собственный слой, ниже приведены шаги. После последнего шага вы можете создать слой, используя lambda.zip в своей корзине, и использовать слой на шаге 2 выше.
docker run -it lambci/lambda:build-python3.8 bash pip install requests papermill ipython jupyter boto3 -t . cp -r /var/lang/bin . rm lambda.zip zip -9qyr lambda.zip . aws s3 cp lambda.zip s3://your_bucket/prefix