本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
QuickStart:將 Python 應用程式部署至 Elastic Beanstalk
本 QuickStart 教學課程會逐步引導您建立 Python 應用程式並將其部署至 AWS Elastic Beanstalk 環境的程序。
注意
本 QuickStart 教學課程旨在用於示範目的。請勿將本教學課程中建立的應用程式用於生產流量。
章節
AWS 您的帳戶
如果您尚未成為 AWS 客戶,則需要建立 AWS 帳戶。註冊可讓您存取 Elastic Beanstalk 和其他您需要 AWS 的服務。
如果您已經有 AWS 帳戶,則可以繼續移至 必要條件。
註冊 AWS 帳戶
如果您沒有 AWS 帳戶,請完成下列步驟以建立 。
若要註冊 AWS 帳戶
開啟https://portal.aws.amazon.com/billing/註冊
。 請遵循線上指示進行。
部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。
當您註冊 時 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身分中心。
如需指示,請參閱 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 使用者時URL傳送到您電子郵件地址的登入。
如需使用 IAM Identity Center 使用者登入的協助,請參閱 AWS 登入 使用者指南 中的登入 AWS 存取入口網站。
必要條件
注意
AWS 在 2024 年 10 月 1 日之後建立的帳戶,將需要暫時設定 選項,才能成功建立新環境。與新帳戶相同,但僅適用於帳戶尚未擁有環境 的區域,現有帳戶將需要採取相同的動作。如需詳細資訊,請參閱啟動範本。
為了遵循本指南的程序,您需要命令列終端機或 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」,請執行下列使用 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 pip
套件預設為包含在 Python 3.4 或更新版本中。
如果您的輸出指出您有支援的 Python 版本,但沒有 pip
,請參閱 https://pip.pypa.io 網站上的安裝
執行下列命令以確認是否已安裝 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 -
在網頁瀏覽器http://localhost:5000
中導覽至 。網頁瀏覽器應顯示「Hello Elastic Beanstalk!」。
步驟 3:使用 EB 部署 Python 應用程式 CLI
執行下列命令,為此應用程式建立 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 終止 Elastic Beanstalk 環境,請CLI執行下列命令。
~/eb-python$ eb terminate
AWS 應用程式的 資源
您剛建立了一個單一執行個體應用程式。它可作為具有單一EC2執行個體的簡單範例應用程式,因此不需要負載平衡或自動擴展。對於單一執行個體應用程式,Elastic Beanstalk 會建立下列 AWS 資源:
-
EC2 執行個體 – 設定為在您選擇的平台上執行 Web 應用程式的 Amazon EC2虛擬機器。
每個平台會執行不同一套軟體、設定檔和指令碼,來支援特定的語言版本、架構、Web 容器或其組合。大多數的平台會使用 Apache 或 nginx 做為反向代理,處理您 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 主控台來啟動範例應用程式。如需詳細步驟,請參閱本指南入門章節中的建立範例應用程式。