[英]How to bundle Python for AWS Lambda
我有一個項目我想在AWS Lambda上運行,但它超過了50MB的壓縮限制。 現在它的壓縮為128MB,帶有虛擬環境的項目文件夾位於623MB並包含(空間的頂級用戶):
沒有virtualenv
該項目<2MB。 requirements.txt
是:
click==6.7
cycler==0.10.0
ecdsa==0.13
Flask==0.12.2
Flask-Cors==3.0.3
future==0.16.0
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
matplotlib==2.1.2
mpmath==1.0.0
numericalunits==1.19
numpy==1.14.0
pandas==0.22.0
pycryptodome==3.4.7
pyparsing==2.2.0
python-dateutil==2.6.1
python-dotenv==0.7.1
python-jose==2.0.2
pytz==2017.3
scipy==1.0.0
six==1.11.0
sympy==1.1.1
Werkzeug==0.14.1
xlrd==1.1.0
我使用Zappa進行部署,因此我對整個基礎架構的理解是有限的。 我的理解是一些(很少)的庫沒有上傳,所以例如numpy,那部分沒有上傳,亞馬遜的版本被使用,已經在該環境中可用。
我建議使用以下工作流程(不使用slim_handler
S3存儲桶):
scipy.minimize
,刪除大部分並重新運行我的測試 pyminifier
混淆 要么:
compileall
以獲取.pyc文件 我遇到了slim_handler: true
問題slim_handler: true
,我的連接斷開,上傳失敗或發生其他一些錯誤,並且上傳到S3的約25%我得到Could not connect to the endpoint URL
。 出於這個問題的目的,我希望將依賴關系降低到可管理的級別。
然而,主應用程序小於2MB的超過一半的依賴關系必須是某種記錄。
我的問題是:
我已經看到你的所有包都可以壓縮到83MB(只是包)。
我的解決方法是:
使用以下方法在本地安裝您的軟件包:
pip install -r requirements.txt -t .
嘗試編譯.pyc文件的方法,並刪除其他文件。
部署:
sis deploy
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.