怎么抓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引入的新角色&…

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

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

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

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

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

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

java 模拟路由表_Router的路由表

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

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

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,值…

python 颜色_如何使用python中matplotlib库分析图像颜色

用代码分析图像可能很困难。你如何使代码“理解”图像的上下文?通常&#xff0c;使用AI分析图像的第一步 是找到主要颜色。在如何使用python中matplotlib库分析图像颜色中&#xff0c;我们将使用matplotlib的 image类在图像中找到主色 。查找主导色也是你可以使用第三方API进行…

cnn 准确率无法提升_清华类脑芯片再登Nature: 全球首款基于忆阻器的CNN存算一体芯片...

传统计算架构中计算与存储在不同电路单元中完成&#xff0c;造成大量数据搬运功耗增加和额外延迟&#xff0c;被认为是冯诺依曼计算架构的核心瓶颈。人类的大脑却并非如此&#xff0c;而是直接在记忆体里计算。被认为具有「存算一体」潜力的忆阻器&#xff0c;因而成为类脑计算…

oracle 几个字段中某个字段大于0其他字段不再进行统计?_如何深入理解MySQL 8.0直方图?...

MySQL8.0 新功能直方图&#xff0c;继承于Oracle &#xff0c;MairaDB的实现方式。 那下面从mysql角度认识下&#xff0c;直方图是什么。先看下官方直方图的实现方式。 从上图上可以看到原来是ANALYZE命令。先了解一下MySQL里 ANALYZE命令到底有什么用。ANALYZE在MySQL里提交一…

godaddy修改php版本,Godaddy美国主机Plesk面板修改PHP版本教程

由于不同的需求&#xff0c;我们站长朋友们建站所用的网站程序也不尽相同&#xff0c;有PHP、ASP和ASP.NET等。Godaddy美国主机作为全球最大域名主机商&#xff0c;当之无愧成为站长使用最多的主机。不少朋友应该都知道不同的网站程序对于PHP和ASP的版本要求又不一样&#xff0…

mysql数据结构_mysql的底层数据结构

一&#xff0e;数据结构1. 二叉树特点&#xff1a;左侧子节点比父节点小&#xff0c;右侧子节点比父节点大(对于同一个父节点下的两个子节点)缺点&#xff1a;对于一直递增得数据不能存在该数据结构中&#xff0c;会变成链表&#xff0c;不能降低树的高度图 1-1图1-22. 红黑树特…

winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...

△ 公众号回复关键词“架构” 即可领取《1500BAT架构及面试专题合集》本篇为线程池系列文章之一&#xff0c;不经常使用线程池的童鞋&#xff0c;还有对几种线程的使用不甚了解的童鞋&#xff0c;可以读一下此文&#xff0c;并关注后续线程池相关文章连载。 本篇内容大纲&#…

python枚举是什么意思,什么是枚举python

枚举类型可以看作是一种标签或是一系列常量的集合&#xff0c;通常用于表示某些特定的有限集合&#xff0c;例如星期、月份、状态等。Python 的原生类型(Built-in types)里并没有专门的枚举类型&#xff0c;但是我们可以通过很多方法来实现它&#xff0c;例如字典、类等&#x…

拖拽批量上传图片如何保证 顺序_图片压缩神器和图片分割工具,美工设计和运营终于得救了...

想要快速互联网干货技巧&#xff1f;请&#xff08;置顶&#xff09;星标我们好不容易写好文案&#xff0c;设计好长图海报&#xff0c;上传到微信公众号&#xff0c;竟然提示上传图片体积不得超过5M,怎么办&#xff1f;怎么办&#xff1f;不得已&#xff0c;只好又返回Ps里降低…

php将word转txt,PHP如何将将word文件转为pdf

PHP将word文件转为pdf的方法&#xff1a;首先修改【php.ini】&#xff0c;并重启环境&#xff1b;然后安装微软office套件&#xff1b;最后配置office组件服务即可。PHP将word文件转为pdf的方法&#xff1a;1、修改php.ini添加&#xff1a;extensionphp_com_dotnet.dll去除注释…

redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存

1.为什么需要缓存为什么需要缓存&#xff0c;我相信搞开发的都能回答出来&#xff0c;无非就是为了降低数据库压力&#xff0c;节约资源&#xff0c;提升系统性能。而事实上也确实是&#xff0c;归根结底就是降压&#xff0c;高并发&#xff0c;高性能。不过&#xff0c;大厂里…

红旗linux安装oracle,Redflag Linux安装Oracle 10gR2 RAC记事

Redflag Linux安装Oracle 10gR2 RAC记事Kamus遇到过&#xff1a;SQL> startup nomountORA-27102: out of memoryLinux-x86_64 Error: 28: No space LEFT ON device这和内核参数 shmall 有关&#xff0c;修改设置 kernel.shmall 16475728 。后来离开没多久&#xff0c;客户打…

springboot开启debug日志_SpringBoot 如何优雅的打印日志?

一、打印日志注意事项1、使用 Slf4j 注解这个代码相信大家都很熟悉&#xff0c;你是否曾经看到或者自己因 copy 而 没有改变“当前类名”&#xff1f;如果你们项目用到 lombok &#xff0c;可以在类上使用 Slf4j 注解&#xff0c;省去手动写这行代码。2、不建议使用的输出为什么…

windows 映射文件会释放内存吗_Windows系统共享内存管理

一 进程逻辑空间 物理空间​如上图所示&#xff0c;每个进程都有自己的逻辑空间&#xff0c;这些逻辑空间&#xff0c;会被映射到具体的物理空间中。每个进程的逻辑空间都是彼此隔离&#xff0c;相互独立不受干扰的。但是他们都会被映射到同一个物理空间去&#xff0c;当其所映…