Lambda dependencies

在开发Lambda时,经常会用到外部的依赖,例如python的requests、pillow、pandas、pymysql库, 或者nodejs的express库。如果程序中需要使用外部依赖,需要先在本地将依赖和代码一起打包成zip,并使用以下方式之一部署:

  1. 在Lambda控制台直接上传zip(zip包小于50MB)。
  2. 如果zip包大于50M,需要将其上传到和Lambda在同一个region的S3, 再进行部署。

本节我们将引入python的requests依赖包,并上传到Lambda进行部署。

创建项目

在cloud 9命令行下,进入任意目录,新建项目:

mkdir python-requests && cd python-requests
touch lambda_function.py

编辑lambda_function.py,内容更新如下:

import requests

def lambda_handler(event, context):
    res = requests.get("https://ip.gs")  # 获取Lambda的IP
    print(res.content)

由于需要requests依赖,我们将其下载到当前目录:

pip3 install requests --target .

将依赖与应用代码一起打包成zip:

zip -r function.zip .

右键function.zip, 点击Download下载到本地:

image-20220407202603237

进行上传并测试

在Lambda页面,创建新的函数python-requests

image-20220407202758161

选择Upload from -> .zip file:

image-20220407202841337

选择上一步下载的function.zip文件,并上传:

image-20220407202854117

上传完成后,从左侧可以看到各种依赖库已经部署上去。

创建新的测试事件。

执行后,从输出中可以找到Lambda所在机器的公网出口IP:

image-20220407203107540

如果zip包大于50M,我们需要先创建S3, 并上传至此。然后部署方式选择Upload from -> Amazon S3 location

image-20220407204030054