-
前置环境
- python3.6和pip
- aws cli
- sam cli
- docker
-
初始化项目
sam init --runtime python3.6
即在当前目录下生成项目模板 sam-app
-
本地测试
sam local start-api curl http://localhost:3000/hello
-
修改py文件或新增自己的lambda handler
-
修改template.yaml
-
测试自己新增的接口
-
停止本地服务 sam local start-api 进程
-
编译
sam build
-
重启本地服务
sam local start-api
-
curl测试自己的接口
-
-
部署到aws
-
创建s3 bucket来保存代码
aws s3 mb s3://ants-deploy
-
打包
sam package --template-file template.yaml --s3-bucket ants-deploy --output-template-file packaged.yaml
-
部署
sam deploy --template-file ./packaged.yaml --stack-name hello-stack --capabilities CAPABILITY_IAM --profile adminuser
-
-
问题
-
中国区使用gateway-api需要ICP备案,所以测试接口时通过aws可以正常执行,通过curl或者POSTMAN时返回403
-
python编写的lambda函数如果有依赖其他包的话,将依赖包名和版本写入到requirements.txt中,执行
pip install -r requirements.txt -t ./
导入依赖包,然后再进行部署
-
-
参考
- SAM部署 https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html
- 测试lambda函数 http://docs.amazonaws.cn/lambda/latest/dg/with-on-demand-https-example-upload-deployment-pkg_1.html
- "unable to import module 'xxx'" https://stackoverflow.com/questions/48912253/aws-lambda-unable-to-import-module-lambda-function-no-module-named-requests#
网友评论