我正在使用 AWS Lambda 來托管 Python 項目,使用無服務器框架管理部署,并且遇到了常見的 50MB 包存儲限制。到目前為止,我已經使用 serverless-python-individually 和 serverless-python-requirements 插件成功地將我的需求拆分為每個函數,以將每個文件作為單獨的 Lambda 函數進行 dockerise、壓縮和上傳,如關鍵部分所示我的 serverless.yml 文件,如下所示。這使前三個函數包保持在 50MB 以下,并創建了一個簡單的工作流程,我可以在其中簡單地使用:sls deploy --pi-dockerizedPip. 然而,第四個包,只需要SciPy,不能減少到 52MB 以下,經過大量閱讀后,我看到的唯一常見方法是將我的依賴項(即?)上傳到 S3(某處)并以某種方式確保我的導入語句能夠找到依賴項。我還沒有找到關于應該如何完成打包依賴項的確切過程的明確說明,以及(幾乎同樣重要),如何與 Serverless 一起工作(這樣我才能保持良好的工作流程)?serverless.yml 的關鍵部分:package: individually: True exclude: # Exclude everything first. - '**/*'functions: brain: handler: src/1-brain/wrap.handler package: include: - src/1-brain/** events: - schedule: rate(5 minutes) data: handler: src/2-data/wrap.handler package: include: - src/2-data/** strategy: handler: src/3-strategy/wrap.handler package: include: - src/3-strategy/** balancer: handler: src/4-portfolio-balancer/wrap.handler package: include: - src/4-portfolio-balancer/** custom: pythonRequirements: useDownloadCache: true useStaticCache: true dockerizePip: true zip: true slim: true pyIndividually: wrap:brain: src/1-brain/aws_handler.handler # mapping to the real handler wrap:data: src/2-data/datafeed.handler # mapping to the real handler wrap:strategy: src/3-strategy/strategy.handler # mapping to the real handler wrap:balancer: src/4-portfolio-balancer/balancer.handler # mapping to the real handler
1 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
AWS Lambda 層使您能夠將您的包/環境捆綁到一個層中。您最多可以使用 5 個層,并且對于任何特定 lambda 函數,所有各個層的累積總和 + lambda 代碼的未壓縮限制為 250 MB。
查看“在層中包含庫依賴項”部分 https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
添加回答
舉報
0/150
提交
取消