AWS SAM创建Serverless应用

  • 前置环境

    • 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#

你可能感兴趣的:(AWS SAM创建Serverless应用)