带aws lambda+api网关的无服务器django

django-zappa的Python项目详细描述



<;img src="http://i.imgur.com/oepnhjn.jpg"alt="扎帕岩石!"/>;
<;/p>;

\django zappa-无服务器django

[![django cc](https://img.shields.io/badge/django-cc-ee66dd.svg)(https://github.com/codingjoe/django-cc)
[![构建状态](https://travis ci.org/miserlou/django zappa.svg)(https://travis-ci.org/miserlou/django-zappa)
[![覆盖范围](https://img.shields.io/covertalls/miserlou/django zappa.svg)(https://covertalls.io/github/miserlou/django-zappa)
[![需求状态](https://requires.io/github/miserlou/django-zappa/requirements.svg?branch=master)(https://requires.io/github/miserelou/django-zappa/requirements/?分支=主)
[![松弛](https://img.shields.io/badge/chat-slack-ff69b4.svg)](https://slackautoinviter.herokuapp.com/)

**django zappa**使在aws lambda+api网关上部署django应用程序变得非常容易。把它想象成django应用程序的"无服务器"web主机。

这意味着:

***不再是**乏味的web服务器配置!
***不再支付**24/7服务器正常运行时间!
***不再**担心负载平衡/可伸缩性!
***不要再担心让服务器保持在线!
***不要再担心安全漏洞和补丁!

**django zappa**处理:

*将项目打包到lambda ready zip文件并将其上载到s3
*正确设置iam角色和权限
*自动配置api网关路由、方法和集成响应
*将api网关请求转换为valid wsgi,并返回与api网关兼容的http响应
*将您的应用程序部署到不同的准备阶段(dev、staging、prod)

_

[请参见此处的实际操作!](https://zappa.gun.io/)你也可以观看**[如何使用django zappa的屏幕广播](https://www.youtube.com/watch?v=plurbpn0xc8&feature=youtu.be)**。

如果你有兴趣了解这是如何在幕后工作的,你应该看看**[zappa核心库](https://github.com/miserelou/zappa)**,它可以被任何与wsgi兼容的web框架使用。

\WS-Credentials文件](https://blogs.a ws.amazon.com/security/post/tx3d6u6wsfgok2h/a-new-and-standardized-way-to-manage-credentials-in-the-aws-sdks)已正确安装。

**django设置,您需要在已安装的应用程序中添加"django_zappa",以便将zappa命令添加到管理脚本中。

``python
installed_apps=[

'django_zappa',
]
```

最后,在本地设置中定义zappa_设置将命名部署环境映射到已部署设置和S3存储桶(必须已创建)的文件。这些可以命名为任何您喜欢的名称,但是您可能希望有独立的开发、登台和生产环境来分离您的数据。

`` python
zappa\u settings={
'生产':{
's3\u bucket':'生产bucket',
'设置文件':'~/projects/myapp/settings/production_settings.py',
},
‘暂存’:{
‘s3_bucket’:‘暂存bucket’,
‘设置_file’:'~/projects/myapp/settings/staging_settings.py',
},
}
````

请注意,每个环境都定义了设置文件的路径。此文件将用作您的服务器端设置文件。具体来说,您需要定义[新的密钥](https://gist.github.com/miserlou/a9cbe22d06cbabc07f21)以及部署数据库信息。Zappa现在通过[lambda包](https://github.com/miserlou/lambda包)支持mysql-python和pyscopg2。sage

请访问:https://7k6anjok99.execute api.us-east-1.amazonaws.com/production

,现在您的应用程序是**live!**有多酷?!

njok99.execute api.us-east-1.amazonaws.com/production


例如,要回滚到3个版本以前部署的版本:


$python manage.py rollback production 3


$python manage.py调用生产检查
系统检查未发现任何问题(0已静音)。


\
您可以在zappa_设置中定义其他设置来更改zappa的行为。用这些你自己的风险!

``` python
zappa撸settings={
'dev':{
'aws撸region':'us-east-1',aws region(默认为us east),
'domain':'yourapp.yourdomain.com',如果您使用域,则需要使用http撸methods'['get','post','http方法进行路由,
'i集成"响应代码":[200,301,404,500],"要路由的集成响应状态代码
"内存大小":512,"lambda函数内存(MB)"
"超时":30,"lambda函数超时(秒)"
"方法响应代码":[200,301,404,500],"方法响应"要路由的状态代码
"参数深度":10,要路由的URL深度大小。默认值为8。
"角色名称":"mylambdarole";"lambda执行角色"
"s3存储桶":"开发存储桶";"zappa压缩存储桶"
"设置存储文件":"~/projects/myapp/settings/dev存储设置.py","服务器端设置文件位置"
"触摸":false,"获取产品"初始部署时的url(默认为true)
"使用预编译的包":true,如果可能,请使用已为aws lambda预编译的c扩展包
"vpc配置":{lambda函数的可选vpc配置
"子网":["子网-12345678"]注意:并非所有可用区域都支持lambda!
"securitygroupid":["sg-12345678"]
}
}
}
}
`````

保持服务器的温度

lambda有一个限制,即不经常调用的函数需要更长的启动时间,有时最多需要10秒。但是,定期调用的函数会被缓存并快速启动,通常不到50ms。为了确保您的服务器保持在缓存状态,您可以[手动配置](http://stackoverflow.com/a/27382253)zappa函数的计划任务,该任务将通过每5分钟打一次电话。目前没有办法通过api来配置它,所以您必须手动设置它。当此功能通过api可用时,django zappa将自动配置此功能。通过同样的机制添加对LetsEncrypt的支持是很好的。


\.aws.amazon.com/api gateway/latest/developerguide/how to cors.html)通过API网关控制台启用CORS。不要忘记在进行更改后重新部署您的api!

todo

我们非常欢迎您的贡献!请在提交修补程序之前提交票证,并将修补程序提交到"开发"分支。

现在需要工作的事情:

*测试!
*反馈!
*真正的文档/网站!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Hibernate中从两个具有不同功能的表(postgreSQL)映射一个实体   java jfreechart需要自定义Y轴,以便打印   Java:从外部获取类。罐子   java如何获取Appium服务器日志   具有完全相同内容的java重写函数会导致错误   java消息的类路径是什么。属性(如果在依赖项jar中)   循环/相等的java问题==   java如何使用ionic cordova angularjs将所选图像发送到spring controller以保存到服务器?   库中的java语言环境数据   java从JSON webservice检索安卓中的字节[]   调试如何从Java中的类调试方法?   java将日期字符串切割成变量   无法使用java附加到文件?