我有一个以此为内容的文件。
def print_hello_world():
print ('Hello World')
已将其压缩到包含__init__.py
文件的文件夹中。
我将此添加为图层并设置python3.6的正确运行时。
如何通过lambda代码将其导入到我的lambda函数中?
编辑:研究后,我发现lambda将层安装在/ opt上,如果通过sys.path.insert(0,'/ opt')将/ opt添加到syspath中,则可以导入层。
您可以在以下位置查看图层:print(os.listdir(“ / opt”))
必须有一种更优雅的方法!
答案 0 :(得分:2)
所以我最近遇到了这个问题,我相信我找到了一种导入图层的更简便方法。
首先查看您上传的zip文件的结构:
__init__.py
文件python
import {filename}
因此,如果您在python
文件夹中的脚本被称为custom_helper.py
,请使用import custom_helper
将其导入lambda。
我不确定这是否是干净的方法,但似乎很容易开始。
答案 1 :(得分:1)
您必须:
sudo docker run -v "$PWD":/var/task "lambci/lambda:build-${penv}" /bin/sh -c "pip install -r requirements.txt -t python/lib/${penv}/site-packages/; exit"
sys.path
import sys;
sys.path.append('/opt/python/lib/python3.7/site-packages');
import apsw
print(apsw.__file__)
/opt/python/lib/python3.7/site-packages/apsw.cpython-37m-x86_64-linux-gnu.so
更新:
看起来您需要将build放在/ opt / python下,因此无需使用它
sys.path.append('/opt/python/lib/python3.7/site-packages');
mkdir -vp my-layer/python && cd my-layer/python
python3 -m pip install click -t ./
cd ..
zip -r9 my-layer python
现在将图层添加到lambda函数 您可以导入:
import click
答案 2 :(得分:0)
您的zip文件应具有以下结构:
python / lib / python3.7 / site-packages
也就是说,它需要一个名为Python的文件夹,一个名为lib的文件夹,一个名为python3.7的文件夹以及一个名为site-packages的文件夹。该文件夹中的所有内容都可以导入。
(如果您使用的是其他版本的Python,则该版本应位于路径中,而不是3.7)