AWS无服务开发Lambda系列之本地上传包至Lambda
本次演示分为2种
1.无第三方依赖包
2.有第三方依赖包
1.无第三方依赖包
创建 Lambda 用作部署程序包的 .zip 文件。
1.创建函数(myfunc)项目目录,并进入该目录
bash-4.2# mkdir myfunc bash-4.2# cd myfunc/
2.编写您的lambda函数,此处作为演示
import json def lambda_handler(event, context): # TODO implement return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
3.将 lambda_function.py 文件添加到 .zip 文件的根目录
bash-4.2# zip my-function.zip lambda_function.py adding: lambda_function.py (deflated 19%) bash-4.2# ls -l total 8 -rw-r--r--. 1 root root 165 Sep 18 07:49 lambda_function.py -rw-r--r--. 1 root root 320 Sep 18 07:51 my-function.zip
4.此处可以用aws cli来创建函数,也可以将zip包直接通过aws console上传(示例如下)
A.AWS Console 上传
B.aws cli创建函数,并 指定zip包
请自行修改对应的参数,如 IAM的ARN
bash-4.2# aws lambda create-function --function-name my-func --zip-file fileb://my-function.zip --handler lambda_function.lambda_handler --runtime python3.6 --role arn:aws:iam::your-account-id:role/lambda-ex
2.有第三方依赖包
设置部署程序包(.zip 文件)的目录结构。
为具有运行时依赖项的 Lambda 函数创建部署程序包。
使用 AWS CLI 上传部署程序包并创建 Lambda 函数。
调用 Lambda 函数以返回源代码
创建 Lambda 用作部署程序包的 .zip 文件。
1.创建函数(mylib-func)项目目录,并进入该目录
bash-4.2# mkdir mylib-func bash-4.2# cd mylib-func
2.编写示例代码lambda_function.py(此处requests为第三方包)
import requests def main(event, context): response = requests.get("https://www.baidu.com/") print(response.text) return response.text if __name__ == "__main__": main('', '')
3.在新的 package 目录中安装请求库。
bash-4.2# pip3 install --target ./package requests
4.使用已安装库在根目录下创建部署程序包(在上级目录创建zip包,将package目录下的东西加入到zip包中)
bash-4.2# cd package/ bash-4.2# zip -r ../mylib-func.zip .
5.将 lambda_function.py 文件添加到 zip 文件的根目录
bash-4.2# zip -g mylib-func.zip lambda_function.py adding: lambda_function.py (deflated 32%) bash-4.2#
6.将包上传到AWS Lambda
A.AWS Cli创建函数并选择包(请自行修改对应的参数)
bash-4.2# aws lambda create-function --function-name my-sourcecode-function --zip-file fileb://mylib-func.zip --handler lambda_function.main --runtime python3.8 --role arn:aws:iam::your-account-id:role/lambda-ex
B.使用AWS Console创建函数并上传zip包