怎么抓python程序的包_如何在AWS上部署python应用程序

8133404f03600e47ae2d44350eb725e3.png

如何在AWS上部署python应用程序,学姐呕心沥血亲自总结,亲测有效,比网上看网上大把大把的文档要快得多!

作者:蕾学姐

亚马逊云计算服务(Amazon Web Services,缩写为AWS),由亚马逊公司所创建的云计算平台,提供许多远程Web服务。Amazon EC2与Amazon S3都架构在这个平台上。

相比于IBM的ibmcloud和微软的azure cloud,学姐我认为aws的部署会稍微复杂一些,但是没有关系,只要前期环境配的好,后期应用程序部署到云上完全不是问题。下面就讲讲怎么将你本地的应用程序部署到云上。

一、创建您的第一个 IAM 管理员用户和组

此过程将介绍如何使用 AWS 管理控制台 自行创建 IAM 用户,并将该用户添加到具有已附加托管策略中的管理权限的组。

自行创建管理员用户并将该用户添加到管理员组(控制台)

  1. 使用 AWS 账户电子邮件地址和密码,以 AWS 账户根用户 身份登录到 IAM 控制台 (https://console.aws.amazon.com/iam/)。

注意:强烈建议您遵守以下使用 Administrator IAM 用户的最佳实践,妥善保存根用户凭证。只在执行少数账户和服务管理任务时才作为根用户登录。

  1. 在导航窗格中,选择 Users (用户),然后选择Add user (添加用户)
  2. 对于 User name,键入 Administrator
  3. 选中 AWS 管理控制台 access (AWS 管理控制台访问) 旁边的复选框,选择 Custom password (自定义密码),然后在文本框中键入新密码。默认情况下,AWS 将强制新用户在首次登录时创建新密码。您可以选择清除 User must create a new password at next sign-in (用户必须在下次登录时创建新密码) 旁边的复选框,以允许新用户在登录后重置其密码。
  4. 选择 Next: Permissions (下一步: 权限)
  5. 设置权限页面上,选择将用户添加到组
  6. 选择 Create group
  7. Create group (创建组) 对话框中,对于 Group name (组名称),键入 Administrators
  8. 选择 Policy Type (策略类型),然后选择 Job function (作业功能) 以筛选表内容。
  9. 在策略列表中,选中 AdministratorAccess 的复选框。然后选择 Create group

注意:您必须先激活 IAM 用户和角色对账单的访问权限,然后才能使用 AdministratorAccess 权限访问 AWS Billing and Cost Management 控制台。为此,请按照“向账单控制台委派访问权限”教程:第 1 步中的说明进行操作。

  1. 返回到组列表中,选中您的新组所对应的复选框。如有必要,选择 Refresh 以在列表中查看该组。
  2. 选择 Next: Tagging (下一步: 标记)
  3. (可选)通过以键值对的形式附加标签来向用户添加元数据。有关在 IAM 中使用标签的更多信息,请参阅 标记 IAM 实体。
  4. 选择 Next: Review 以查看要添加到新用户的组成员资格的列表。如果您已准备好继续,请选择 Create user
  5. 选择新建的用户,点击下载 .CSV文件,里面有你的用户id和秘钥,后面会用到。

0d697a67dc3952c459703338eca25b2d.png

您可使用此相同的流程创建更多的组和用户,并允许您的用户访问 AWS 账户资源。

二、在Python中安装一个叫awsebcli的库:

1、按路径寻找“Pycharm-preferences-project interpreter”然后点击左下角 ‘+’ 添加你要的库:

9e6040b9300856666cb3f9cd4f3aa44f.png

2、搜索“awsebcli”,右下角点击安装,显示“安装成功”后,返回,点击“OK”退出

34eea108382143b5364fe493add25172.png

三、通过 Flask 设置 Python 虚拟环境

为应用程序创建项目目录和虚拟环境并安装 Flask(如果你已经有代码,可以跳过这一步)

1、设置项目环境

  1. 创建项目目录。
~$ mkdir eb-flask
~$ cd eb-flask
  1. 创建和激活名为 virt 的虚拟环境:
~/eb-flask$ virtualenv virt
~$ source virt/bin/activate
(virt) ~/eb-flask$

您将看到您的命令提示符前面带有 (virt),表明您在虚拟环境中。在本教程的其余部分中使用虚拟环境。

  1. 使用 pip install 安装 Flask:
(virt)~/eb-flask$ pip install flask==1.0.2
  1. 使用 pip freeze 查看已安装的库:
(virt)~/eb-flask$ pip freeze
click==6.7
Flask==1.0.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
Werkzeug==0.14.1

此命令列出虚拟环境中已安装的所有程序包。由于您在虚拟环境中,因此不会显示全局安装的程序包,例如 EB CLI。

  1. 将来自 pip freeze 的输出保存到名为 requirements.txt 的文件中。
(virt)~/eb-flask$ pip freeze > requirements.txt

在部署期间,此文件将指示 Elastic Beanstalk 安装库。有关更多信息,请参阅 要求文件。

创建 Flask 应用程序

接下来,创建您将使用 Elastic Beanstalk 部署的应用程序。我们会创建一个“Hello World”RESTful Web 服务。

在此目录中创建名为 application.py 的新文本文件,包含以下内容:

例 ~/eb-flask/application.py,里面的代码如下:

from flask import Flask
# print a nice greeting.
def say_hello(username = "World"):return '<p>Hello %s!</p>n' % username
# some bits of text for the page.
header_text = '''<html>n<head> <title>EB Flask Test</title> </head>n<body>'''
instructions = '''<p><em>Hint</em>: This is a RESTful web service! Append a usernameto the URL (for example: <code>/Thelonious</code>) to say hello tosomeone specific.</p>n'''
home_link = '<p><a href="/">Back</a></p>n'
footer_text = '</body>n</html>'# EB looks for an 'application' callable by default.
application = Flask(__name__)# add a rule for the index page.
application.add_url_rule('/', 'index', (lambda: header_text +say_hello() + instructions + footer_text))# add a rule when the page is accessed with a name appended to the site
# URL.
application.add_url_rule('/<username>', 'hello', (lambda username:header_text + say_hello(username) + home_link + footer_text))# run the app.
if __name__ == "__main__":# Setting debug to True enables debug output. This line should be# removed before deploying a production app.application.debug = Trueapplication.run()

本示例输出根据访问服务所使用的路径而变化的自定义问候语。

四、创建环境和部署 Flask 应用程序(重点!!)

  1. 使用 eb init 命令,初始化 EB CLI 存储库:
~/eb-flask$ eb init -p python-3.6 flask-tutorial --region us-east-2

Application flask-tutorial has been created.

此命令创建名为 flask-tutorial 的新应用程序,并配置本地存储库,以最新的 Python 3.6 平台版本创建环境。

2、此时会出现让你输入用户名id和密码,把之前那个csv文件里面的id密码输入就可以。

3、使用 eb create 创建环境并将应用程序部署到此环境中:

~/eb-flask$ eb create flask-env

环境创建大约需要 5 分钟,将创建以下资源:

  • EC2 实例 – 配置来在您选择的平台上运行 Web 应用程序的 Amazon Elastic Compute Cloud (Amazon EC2) 虚拟机。

各平台运行一组特定软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为 Web 应用程序前的反向代理,向其转发请求、提供静态资产以及生成访问和错误日志。

  • 实例安全组 – 配置来允许通过端口 80 访问的 Amazon EC2 安全组。通过此资源,HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下,其他端口不允许流量进入。
  • 负载均衡器 – 配置来向运行您的应用程序的实例分配请求的 Elastic Load Balancing 负载均衡器。负载均衡器还使您无需将实例直接公开在 Internet 上。
  • 安全组 – 配置来允许通过端口 80 访问的 Amazon EC2 安全组。利用此资源,HTTP 流量可从 Internet 到达负载均衡器。默认情况下,其他端口不允许流量进入。
  • Auto Scaling 组 – 配置来在实例终止或不可用时替换实例的 Auto Scaling 组。
  • Amazon S3 存储桶 – 使用 Elastic Beanstalk 时创建的源代码、日志和其他项目的存储位置。
  • Amazon CloudWatch 警报 – 用于监控环境实例负载的两个 CloudWatch 警报,在负载过高或过低时触发。警报触发后,您的 Auto Scaling 组会扩展或收缩进行响应。
  • AWS CloudFormation 堆栈 – Elastic Beanstalk 使用 AWS CloudFormation 启动您的环境中的资源并传播配置更改。这些资源在您可通过 AWS CloudFormation 控制台查看的模板中定义。
  • 域名 – 一个域名,它以下面的形式路由到您的 Web 应用程序:subdomain.region.http://elasticbeanstalk.com。

所有这些资源均由 Elastic Beanstalk 管理。当您终止环境时,Elastic Beanstalk 会终止其包含的所有资源。

注意:Elastic Beanstalk 创建的 Amazon S3 存储桶将在多个环境之间共享并且在环境终止期间不会被删除。有关更多信息,请参阅 将 Elastic Beanstalk 用于 Amazon S3。

当环境创建过程完成时,请使用 eb open 打开网站:

~/eb-flask$ eb open

这将使用为应用程序创建的域名打开一个浏览器窗口。您应该看到在本地创建和测试的相同 Flask 网站。

49a00e309b5c7dc436043b1420fdeaa4.png

如果您没有看到应用程序运行,或者出现错误消息,请查看排查部署问题以获取有关如何确定错误原因的帮助。

如果您确实 看到应用程序在运行,那么恭喜,您已使用 Elastic Beanstalk 部署了第一个 Flask 应用程序!

清除

Elastic Beanstalk 使用完毕时,您可以终止您的环境。Elastic Beanstalk 会终止与环境关联的所有 AWS 资源,例如 Amazon EC2 实例、数据库实例、负载均衡器、安全组和警报。

终止 Elastic Beanstalk 环境

  1. 打开 Elastic Beanstalk 控制台。
  2. 导航到您的环境的管理页。
  3. 选择操作,然后选择终止环境
  4. Confirm Termination (确认终止) 对话框中,键入环境名称,然后选择 Terminate (终止)

利用 Elastic Beanstalk,可以随时为您的应用程序轻松创建新环境。

或者,使用 EB CLI:

~/eb-flask$ eb terminate flask-env

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hadoop】Zookeeper架构/特点

Zookeeper 中的角色主要有以下三类&#xff1a; Zookeeper需要保证高可用性和强一致性为了支持更多的客户端&#xff0c;需要增加更多Server&#xff0c;但是Server增多&#xff0c;意味着投票阶段延迟增大&#xff0c;会影响整个系统的性能。所以在3.3.0中ZK引入的新角色&…

json 反射java 实体_java反射实现javabean转json

BeantoModel->利用cglibBeanMap.create(src);直接将Bean装成Map&#xff0c;然后model._setAttrs(map)即可。ModeltoBean麻烦一点&#xff0c;最简单的方法是用json了。这个bean.dao.put应该是不对的&#xff0c;应该是bean.put吧&#xff0c;还有也不需要转换成map吧&#…

wpf 按钮样式_键盘 | 01.在程序集间引用样式

设置Button和TextBox的特定颜色和字体的样式和默认样式&#xff0c;并在程序集间引用。从零开始用WPF/C#开发一个键盘指示器项目完整开源、免费&#xff0c;不依赖第三方库编译好的先行版程序在微信公众号(香辣恐龙蛋)下载。文章同时发布在微信公众号(香辣恐龙蛋)、B站(香辣恐龙…

怎么去除表中的系统导出的字符_EXCEL非常有用的字符函数LEN、LENB,财务工作者的必备利器...

LEN函数与LENB函数是比较常用的函数&#xff0c;在实际中应用那是相当广的&#xff0c;尤其在财务工作中的使用频率是相当的高。我就一起看看实际工作中哪些地方用到了它。我们先简单说下它的用法&#xff0c;很简单&#xff0c;LEN(text)、LENB(text)&#xff0c;两个用法是一…

laravel mysql视图_php-动态更新Laravel视图

我正在通过JS从API加载数据,将数据发送到Laravel控制器并将其保存到数据库中.加载所有Ajax之后,我想在master.blade的子视图/部分中显示数据-可以在页面加载完成后动态呈现视图,-稍后,我想更新数据库行并显示新的视图中的数据动态.//afater Ajax loading - update / display th…

python3打开excel_python3操作Excel (一)

安装&#xff1a;pip install openpyxlexcel表中有图像&#xff0c;需要安装pillow库。pip install Pillow代码:from openpyxl import Workbookwb Workbook()# grab the active worksheetws wb.active# Data can be assigned directly to cellsws[‘A1‘] 42# Rows can also…

java 获得json对象的属性值_JSON 获取属性值的方法

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式&#xff0c;但是也使用了类似于C语言家族的习…

python常用包数据分析_数据分析领域常用的五个Python包

NumpyNumpy提供了两种基本的对象&#xff1a;ndarray和ufunc。ndarray是存储单一数据类型的多维数组&#xff0c;而ufunc是能够对数组进行处理的函数。Numpy的功能&#xff1a;N维数组&#xff0c;一种快速、高效使用内存的多维数组&#xff0c;他提供矢量化数学运算。可以不需…

python中空字符串的布尔值是什么_Python的布尔值与空值

Googlehack之Github hacksite:aircrk.com smtpsite:aircrk.com smtp mail.comsite:aircrk.com root passwordsite:aircrk.com smtp ...lock#ifndef lock_h #define lock_h #include #include #include "myd ...SQL2012删除作业失败的处理修改msdb数据库中的过程sp_delete_…

java软尾山地车碳_JAVA FURIA 27.5入门软尾山地车评测

铝合金车架、前后100mm避震行程、超短把立、长款燕把、27.5轮径……之前跟大家讲过&#xff0c;在这台车上你能拥有全避震车型所应该具备的所有基础元素。2个月的时间已经过去&#xff0c;这台车到底怎么样呢&#xff1f;我们一起来看一下。优点&#xff1a;质量靠谱&#xff0…

pytorch和python有什么区别_PyTorch到底好用在哪里?

先来回答一下你提的几个问题&#xff1a;Pytorch连最基本的maximum, minimum, tile等等这些numpy和tensorflow中最简单的运算都没有&#xff0c;用view来reshape还会报错contiguous(虽然我知道怎么解决)&#xff0c;官方手册也查不到相应说明&#xff0c;这个东西到底好用在哪里…

java arraylist 过滤_关于java:ArrayList过滤器

本问题已经有最佳答案&#xff0c;请猛点这里访问。如何从Java ARAYLIST中筛选出一些东西&#xff0c;如&#xff1a;你好吗&#xff1f;你怎么做乔迈克过滤器是"怎样"的&#xff0c;它可以去除乔和迈克。这可能有助于stackoverflow.com/questions/122105/&helli…

如何下载python安装包的所有依赖_如何将包含所有依赖项的python包安装到Docker镜像中?...

我在Ubuntu 15.10中使用Docker容器为Pyspark jupyter / pyspark-notebook工作.我需要安装具有所有依赖项的folium并在容器中运行Pyspark脚本.我成功安装了Docker,拉出了图像并使用命令运行它docker run -d -p 8888:8888 -p 4040:4040 -v /home/$MYUSER/$MYPROJECT:/home/jovyan…

java 匹配最后一次出现的字符_在Java中查找字符串中字符的最后一次出现

使用该lastIndexOf()方法在Java中查找字符串中字符的最后一次出现。假设以下是我们的字符串。String myStr "Amit Diwan";在上面的字符串中&#xff0c;我们将找到字符i的最后一次出现myStr.lastIndexOf(i);以下是完整的示例。示例public class Demo {public static…

python面向对象编程从零开始_Python面向对象编程从零开始,从没对象到有对象

原标题&#xff1a;Python面向对象编程从零开始&#xff0c;从没对象到有对象欢迎关注天善智能 hellobi.com&#xff0c;我们是专注于商业智能BI&#xff0c;大数据&#xff0c;数据分析领域的垂直社区&#xff0c;学习、问答、求职&#xff0c;一站式搞定&#xff01;对商业智…

java 模拟路由表_Router的路由表

Router中使用routers字段表示路由表&#xff0c;这是一个数组&#xff0c;每个元组的类型是[desnination,nexthop],其中destination表示目的网段(cidr)&#xff0c;nexthop表示下一跳的IP&#xff0c;举例如下&#xff1a;“routes”:[ { “destination”:”10.50.10.0/24” “…

python 知乎 合并 pdf_一键下载:将知乎专栏导出成电子书

原标题&#xff1a;一键下载&#xff1a;将知乎专栏导出成电子书老是有同学问&#xff0c;学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子&#xff0c;给大家讲讲&#xff0c;通过 Python和爬虫&#xff0c;可以完成怎样的小工具。在知乎上&#xff0c;你一定…

php语句过滤掉html标签_php过滤html标签

标签&#xff1a;php自带函数strip_tagsecho strip_tags("hello world! ");自定义函数&#xff1a;function filterhtml($str) {$streregi_replace("*[^<>]*>", , $str);$strstr_replace(" ", , $str);$strstr_replace("n", …

无符号有符号乘法_刘帅嵌入式系统-乘法指令

ARM有两类乘法指令&#xff1a;一类为32位的乘法指令&#xff0c;即乘法操作的结果为32位&#xff1b;另一类为64位的乘法指令&#xff0c;即乘法操作的结果为64位。两类指令共有以下6条。MUL&#xff1a;32位乘法指令MLA&#xff1a;32位带加数的乘法指令SMULL&#xff1a;64位…

php导出csv_原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

本文实例讲述了原生PHP实现导出csv格式Excel文件的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;效果图源码分析index.phprequire_once "./Export.php";//测试数据$headerList [列名1,列名2,列名3];$data [[值1,值2,值3],[值11,值22,值33],[值111,值…