博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何把 django app 发布到 aws lambda
阅读量:5848 次
发布时间:2019-06-19

本文共 3600 字,大约阅读时间需要 12 分钟。

在这篇文章, 我将会指引怎么用 zappa 把一个 django app 发布到 AWS Lamdba

django

django 是一个非常流行的 Python web 框架. 只需用很少的代码, 就能够高效地构建一个非常优秀的网站

AWS Lambada

AWS Lambda 是一项计算服务,可使您无需预配置或管理服务器即可运行代码

AWS IAM

IAM 是什么

如果不了解什么是 , 建议先读 IAM 的介绍

配置本地 IAM

zappa 会帮助你创建 lambda 程序相关的角色, 在这个阶段, 为了不要那么操心, 先给你本地的 IAM 设置成 "Administrators" 组. 生产环境不要这么做

把 IAM 的密钥放置在 ~/.aws 配置文件

###~/.aws/credentials[default]aws_access_key_id=[...]aws_secret_access_key=[...]复制代码

构造 Django app

初始目录和 requirement.txt

mkdir mysitecd mysitetouch requirement.txt复制代码

把 django 和 zappa 写入 requirement.txt, 如下

cat requirement.txtdjangozappa复制代码

创建虚拟环境, 因为我本地有多个 python 版本, 所以用 和 管理我的虚拟环境

pyenv virtualenv mysite-envpyenv activate mysite-envpip install -r requirement.txt复制代码

用以下常用的方法也是可以的

virtualenv --no-site-packages venvsource venv/bin/activatepip install -r requirement.txt复制代码

初始化 django

django-admin startproject mysite .复制代码

运行 django server, 看看程序的状态

python manage.py runserver复制代码

Zappa

是一个构建和发布 python 程序到 AWS Lambda 的工具, 能用于 WSGI web apps, 例如 django, Flask.

初始化 zappa 环境

zappa init复制代码

像以下输出, 所有选项可以直接按回车选默认

███████╗ █████╗ ██████╗ ██████╗  █████╗╚══███╔╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ███╔╝ ███████║██████╔╝██████╔╝███████║ ███╔╝  ██╔══██║██╔═══╝ ██╔═══╝ ██╔══██║███████╗██║  ██║██║     ██║     ██║  ██║╚══════╝╚═╝  ╚═╝╚═╝     ╚═╝     ╚═╝  ╚═╝Welcome to Zappa!Zappa is a system for running server-less Python web applications on AWS Lambda and AWS API Gateway.This `init` command will help you create and configure your new Zappa deployment.Let's get started!Your Zappa configuration can support multiple production stages, like 'dev', 'staging', and 'production'.What do you want to call this environment (default 'dev'):AWS Lambda and API Gateway are only available in certain regions. Let's check to make sure you have a profile set up in one that will work.Okay, using profile default!Your Zappa deployments will need to be uploaded to a private S3 bucket.If you don't have a bucket yet, we'll create one for you too.What do you want call your bucket? (default 'zappa-gc39ra9lq'):It looks like this is a Django application!What is the module path to your projects's Django settings?We discovered: mysite.settingsWhere are your project's settings? (default 'mysite.settings'):You can optionally deploy to all available regions in order to provide fast global service.If you are using Zappa for the first time, you probably don't want to do this!Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]:Okay, here's your zappa_settings.json:{    "dev": {        "aws_region": "us-east-1",        "django_settings": "mysite.settings",        "profile_name": "default",        "project_name": "mysite",        "runtime": "python2.7",        "s3_bucket": "zappa-gc39ra9lq"    }}Does this look okay? (default 'y') [y/n]:复制代码

首次发布的命令

zappa deploy dev复制代码

代码后续修改后的发布命令

zappa update dev复制代码

如果出现以下错误, 检查一下 pip 版本, 如果是10.x.x, 要降级回 9.0.3

h no! An error occurred! :(==============lib/python2.7/site-packages/zappa/core.py", line 751, in get_installed_packages    pip.get_installed_distributions()AttributeError: 'module' object has no attribute 'get_installed_distributions'==============复制代码

上传成功

请求首页

https://gc3sszkyo3.execute-api.us-east-1.amazonaws.com/dev

并没有那么高兴, 对吧, 这只是个 demo

用到的组件

回到 lambda 上可以看到, zappa 自动生成以下的组件

IAM

API Gateway

CloudWatch Event

lambda 函数

todo

1, 地址的末尾 /dev/ 要去掉的 2, 域名要换成自己的

去掉 /dev/

参考这里, https://edgarroman.github.io/zappa-django-guide/walk_core/#why-is-the-url-path-appended-with-dev

使用自己的域名

https://edgarroman.github.io/zappa-django-guide/walk_domain/

转载于:https://juejin.im/post/5b1955486fb9a01e863ac61c

你可能感兴趣的文章
C#实现ActiveX控件开发与部署
查看>>
用CSS做导航菜单的4个理由
查看>>
mysql优化综合(转)
查看>>
BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)
查看>>
NOIP2015 运输计划 二分答案+Tarjan LCA+树上差分
查看>>
构建之法读后感
查看>>
hdu题型分类
查看>>
08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器
查看>>
Bootstrap3基础 btn-xs/sm... 按钮的四种大小
查看>>
Python爬虫(一)
查看>>
霍夫变换的基本理解(第八天)
查看>>
个人博客作业三:英语学习APP的案例分析
查看>>
基本信息项目目标文档
查看>>
再谈PHP设计模式
查看>>
C# 汉字转拼音(转)
查看>>
DNN Web Platform 官方汉化版本 5.5
查看>>
微软职位内部推荐-Senior Dev Lead
查看>>
如何在子线程中操作窗体上的控件
查看>>
【DOM编程艺术】form对象
查看>>
MySQL中SQL语句之反引号,单引号
查看>>