本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
快速入门:将 Python 应用程序部署到 Elastic Beanstalk
本快速入门教程将演练创建 Python 应用程序并将其部署到 AWS Elastic Beanstalk 环境的过程。
注意
此快速入门教程用于演示目的。请勿将本教程中创建的应用程序用于生产流量。
Sections
您的 AWS 账户
如果您还不是AWS客户,则需要创建一个AWS账户。注册之后,您将能够访问 Elastic Beanstalk 以及您可能需要的其他AWS服务。
如果您已有 AWS 账户,则您可以继续 先决条件。
注册 AWS 账户
如果您还没有 AWS 账户,请完成以下步骤来创建一个。
注册 AWS 账户
打开 https://portal.aws.amazon.com/billing/signup
。 按照屏幕上的说明进行操作。
在注册时,将接到一通电话,要求使用电话键盘输入一个验证码。
当您注册 AWS 账户时,系统将会创建一个 AWS 账户根用户。根用户有权访问该账户中的所有 AWS 服务 和资源。作为安全最佳实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务。
注册过程完成后,AWS 会向您发送一封确认电子邮件。在任何时候,您都可以通过转至 https://aws.amazon.com/
创建具有管理访问权限的用户
注册 AWS 账户 后,请保护好您的 AWS 账户根用户,启用 AWS IAM Identity Center,并创建一个管理用户,以避免使用根用户执行日常任务。
保护您的 AWS 账户根用户
-
选择根用户并输入您的 AWS 账户电子邮件地址,以账户拥有者身份登录 AWS Management Console
。在下一页上,输入您的密码。 要获取使用根用户登录方面的帮助,请参阅《AWS 登录 用户指南》中的以根用户身份登录。
-
为您的根用户启用多重身份验证 (MFA)。
有关说明,请参阅《IAM 用户指南》中的为 AWS 账户 根用户启用虚拟 MFA 设备(控制台)。
创建具有管理访问权限的用户
-
启用 IAM Identity Center。
有关说明,请参阅《AWS IAM Identity Center 用户指南》中的启用 AWS IAM Identity Center。
-
在 IAM Identity Center 中,为用户授予管理访问权限。
有关如何使用 IAM Identity Center 目录 作为身份源的教程,请参阅《AWS IAM Identity Center 用户指南》中的使用默认的 IAM Identity Center 目录 配置用户访问权限。
以具有管理访问权限的用户身份登录
-
要使用您的 IAM Identity Center 用户身份登录,请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录网址。
要获取使用 IAM Identity Center 用户登录方面的帮助,请参阅《AWS 登录 用户指南》中的登录 AWS 访问门户。
先决条件
注意
2024 年 10 月 1 日之后创建的 AWS 账户将暂时需要设置选项才能成功创建新环境。与新账户一样,但仅限于账户尚没有环境的区域,现有账户需要采取相同的操作。有关更多信息,请参阅 启动模板。
为了遵循本指南中的步骤,您需要命令行终端或 Shell,以便运行命令。命令显示在列表中,以提示符($)和当前目录名称(如果有)开头。
~/eb-project$ this is a command
this is output
在 Linux 和 macOS 中,您可使用您首选的 Shell 和程序包管理器。在 Windows 上,您可以安装适用于 Linux 的 Windows 子系统
EB CLI
本教程使用 Elastic Beanstalk 命令行界面 (EB CLI)。有关安装和配置 EB CLI 的详细信息,请参阅 安装 Elastic Beanstalk 命令行界面 和 配置 EB CLI。
Python 和 Flask 框架
通过运行以下命令,确认您安装了具有 pip
的 Python 版本。
~$ python3 --version
Python 3.N.N
>~$ python3 -m pip --version
pip X.Y.Z from ... (python 3.N.N)
如果任何上述命令返回“Python was not found”,请运行以下命令,使用 python
而不是 python3
。别名和符号链接的设置可能因操作系统和个人自定义设置而异,因此 python3
命令可能无法在您的计算机上运行。
~$ python --version
Python 3.N.N
>~$ python -m pip --version
pip X.Y.Z from ... (python 3.N.N)
如果您的本地计算机上没有安装 Python,则您可以从 Python 网站的 Python 下载
注意
Python 3.4 或更高版本默认包含 Python pip
包。
如果输出表明您有受支持的 Python 版本,但没有 pip
,请参阅 pip.pypa.io 网站上的 Installation
通过运行以下命令确认 Flask 是否已安装:
~$ pip list | grep Flask
如果未安装 Flask,可以使用以下命令进行安装:
~$ pip install Flask
步骤 1:创建 Python 应用程序
创建项目目录。
~$ mkdir eb-python
~$ cd eb-python
创建示例“Hello Elastic Beanstalk!” 您将使用 Elastic Beanstalk 部署的 Python 应用程序。
在刚刚创建的目录中创建一个名为 application.py
的文本文件,其中包含以下内容。
例 ~/eb-python/application.py
from flask import Flask application = Flask(__name__) @application.route('/') def hello_elastic_beanstalk(): return 'Hello Elastic Beanstalk!'
创建一个名为 requirements.txt
的文本文件,其中包含以下行。此文件包含应用程序运行所需的 pip
包。
例 ~/eb-python/requirements.txt
Flask
步骤 2:在本地运行应用程序
运行以下命令以在本地运行您的应用程序。
~/eb-python$ export FLASK_APP=application.py && flask run --port 5000
您应该可以看到类似于如下所示的输出内容
Serving Flask app 'application.py' Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. Running on http://127.0.0.1:5000 Press CTRL+C to quit 127.0.0.1 - - [01/Jan/1970 00:00:00] "GET / HTTP/1.1" 200 -
在 Web 浏览器中导航到 http://localhost:5000
。Web 浏览器应显示“Hello Elastic Beanstalk!”。
步骤 3:使用 EB CLI 部署 Python 应用程序
运行以下命令为此应用程序创建 Elastic Beanstalk 环境。
创建环境并部署 Python 应用程序
-
使用 eb init 命令,初始化 EB CLI 存储库。
~/eb-python$
eb init -p python-3.9 python-tutorial --region
us-east-2
此命令创建一个名为
python-tutorial
的应用程序并配置您的本地存储库,以创建具有提供的 Python 平台版本的环境。 -
(可选)再次运行 eb init 以配置默认密钥对,以便使用 SSH 连接到运行您的应用程序的 EC2 实例。
~/eb-python$
eb init
Do you want to set up SSH for your instances? (y/n):y
Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]如果您已有密钥对,请选择一个,或按提示创建一个。如果您没有看到提示或需要以后更改设置,请运行 eb init -i。
-
创建环境并使用 eb create 将应用程序部署到此环境中。Elastic Beanstalk 会自动为您的应用程序生成一个 zip 文件,并在端口 5000 上启动该文件。
~/eb-python$
eb create python-env
Elastic Beanstalk 大约需要五分钟来创建您的环境。
步骤 4:在 Elastic Beanstalk 上运行应用程序
当创建环境的过程完成后,使用 eb open 打开您的网站。
~/eb-python$ eb open
恭喜您!您已使用 Elastic Beanstalk 部署了 Python 应用程序!这将使用为应用程序创建的域名打开一个浏览器窗口。
第 5 步:清理
应用程序使用完毕时,您可以终止您的环境。Elastic Beanstalk 会终止与您的环境关联的所有 AWS 资源。
要使用 EB CLI 终止您的 Elastic Beanstalk 环境,请运行以下命令。
~/eb-python$ eb terminate
适合您的应用程序的 AWS 资源
您刚刚创建了一个单实例应用程序。它可用作带有单个 EC2 实例的简单示例应用程序,因此不需要负载平衡或自动扩缩。对于单实例应用程序,Elastic Beanstalk 创建以下 AWS 资源:
-
EC2 实例 - 配置来在您选择的平台上运行 Web 应用程序的 Amazon EC2 虚拟机。
各平台运行一组不同的软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为在 Web 应用程序前处理 Web 流量的反向代理,向其转发请求、提供静态资产以及生成访问和错误日志。
-
实例安全组 - 配置为允许端口 80 上的传入流量的 Amazon EC2 安全组。通过此资源,HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下,其他端口不允许流量进入。
-
Amazon S3 存储桶 – 使用 Elastic Beanstalk 时创建的源代码、日志和其他构件的存储位置。
-
Amazon CloudWatch 警报 - 用于监控环境中的实例负载的两个 CloudWatch 警报,它们将在负载过高或过低时触发。警报触发后,您的 Auto Scaling 组会扩展或收缩以进行响应。
-
AWS CloudFormation 堆栈 – Elastic Beanstalk 使用 AWS CloudFormation 启动您环境中的资源并传播配置更改。这些资源在您可通过 AWS CloudFormation 控制台
查看的模板中定义。 -
域名 – 一个域名,它以下面的形式路由到您的 Web 应用程序:
subdomain
.region
.elasticbeanstalk.com。
Elastic Beanstalk 管理所有这些资源。当您终止环境时,Elastic Beanstalk 会终止其包含的所有资源。
后续步骤
有了运行应用程序的环境以后,您随时可以部署新的应用程序版本或不同的应用程序。部署新应用程序版本非常快,因为不需要配置或重新启动 EC2 实例。您还可以使用 Elastic Beanstalk 控制台探索新环境。有关详细步骤,请参阅本指南入门一章中的探索您的环境。
尝试更多教程
如果您想尝试包含不同示例应用程序的其他教程,请参阅以下教程:
部署一到两个示例应用程序并准备好开始在本地开发和运行 Python 应用程序后,请参阅 为 Elastic Beanstalk 设置 Python 开发环境。
使用 Elastic Beanstalk 控制台进行部署
您还可以使用 Elastic Beanstalk 控制台来启动示例应用程序。有关详细步骤,请参阅本指南入门一章中的创建示例应用程序。