带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如何将JButton合并到图形中?   java在每个循环中使用基类类型或派生类类型   JavaSwingGUI应用程序完全是空白的,没有任何内容,而按钮被添加到面板中   java Android获取getDefaultSensor括号时出错   java Spring引导和安全性与AngularJS登录页面   java注销appengine应用程序而不从google注销。通用域名格式   java仅在发生错误或异常时创建日志文件,而不使用log4j   java get json数组和Retrift 2   swing中的java响应映像   为什么java的inputstream。close()块?   java驱动管理器。getConnection()非常冗长   java如何使用joml将标准化向量旋转到一个点   ubuntu将Java程序的输出结果保存到一个文件中   java动态可拖动、可编辑和自动调整大小的文本字段