QuickStart:將 Python 應用程式部署至 Elastic Beanstalk - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

QuickStart:將 Python 應用程式部署至 Elastic Beanstalk

本 QuickStart 教學課程會逐步引導您建立 Python 應用程式並將其部署至 AWS Elastic Beanstalk 環境的程序。

注意

本 QuickStart 教學課程旨在用於示範目的。請勿將本教學課程中建立的應用程式用於生產流量。

AWS 您的帳戶

如果您尚未成為 AWS 客戶,則需要建立 AWS 帳戶。註冊可讓您存取 Elastic Beanstalk 和其他您需要 AWS 的服務。

如果您已經有 AWS 帳戶,則可以繼續移至 必要條件

註冊 AWS 帳戶

如果您沒有 AWS 帳戶,請完成下列步驟以建立 。

若要註冊 AWS 帳戶
  1. 開啟https://portal.aws.amazon.com/billing/註冊

  2. 請遵循線上指示進行。

    部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。

    當您註冊 時 AWS 帳戶,AWS 帳戶根使用者會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務,請將管理存取權指派給使用者,並且僅使用根使用者來執行需要根使用者存取權的任務

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時前往 https://aws.amazon.com/ 並選擇我的帳戶 來檢視目前的帳戶活動和管理您的帳戶

建立具有管理存取權的使用者

註冊 後 AWS 帳戶,請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center並建立管理使用者,以免將根使用者用於日常任務。

保護您的 AWS 帳戶根使用者
  1. 選擇根使用者並輸入 AWS 帳戶 您的電子郵件地址,以帳戶擁有者AWS Management Console身分登入 。在下一頁中,輸入您的密碼。

    如需使用根使用者登入的說明,請參閱 AWS 登入 使用者指南中的以根使用者身分登入

  2. 為您的根使用者開啟多重要素驗證 (MFA)。

    如需指示,請參閱 IAM 使用者指南 中的為 AWS 帳戶 根使用者 (主控台) 啟用虛擬MFA裝置

建立具有管理存取權的使用者
  1. 啟用IAM身分中心。

    如需指示,請參閱 AWS IAM Identity Center 使用者指南中的啟用 AWS IAM Identity Center

  2. 在 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 存取入口網站

指派存取權給其他使用者
  1. 在 IAM Identity Center 中,建立遵循套用最低權限許可最佳實務的許可集。

    如需指示,請參閱《AWS IAM Identity Center 使用者指南》中的建立許可集

  2. 將使用者指派至群組,然後對該群組指派單一登入存取權。

    如需指示,請參閱《AWS IAM Identity Center 使用者指南》中的新增群組

必要條件

注意

AWS 在 2024 年 10 月 1 日之後建立的帳戶,將需要暫時設定 選項,才能成功建立新環境。與新帳戶相同,但僅適用於帳戶尚未擁有環境 的區域,現有帳戶將需要採取相同的動作。如需詳細資訊,請參閱啟動範本

為了遵循本指南的程序,您需要命令列終端機或 shell 來執行命令。命令清單前會出現提示字元 ($) 及目前的目錄名稱 (如有)。

~/eb-project$ this is a command this is output

在 Linux 和 macOS 上,您可以使用偏好的 Shell 和套件軟體管理工具。在 Windows 上,您可以安裝適用於 Linux 的 Windows 子系統,以取得 Windows 整合版本的 Ubuntu 和 Bash。

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 下載頁面下載。如需 Elastic Beanstalk 支援的 Python 語言版本清單,請參閱 AWS Elastic Beanstalk 平台指南中的支援的 Python 平台。Python 下載網站提供 Python 開發人員指南 的連結,您可以在其中找到安裝和設定指示。

注意

Python pip套件預設為包含在 Python 3.4 或更新版本中。

如果您的輸出指出您有支援的 Python 版本,但沒有 pip,請參閱 https://pip.pypa.io 網站上的安裝頁面。它提供在沒有 python 環境內安裝 pip 的指引。

執行下列命令以確認是否已安裝 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 應用程式
  1. 使用 eb init命令初始化您的 EB CLI儲存庫。

    ~/eb-python$ eb init -p python-3.9 python-tutorial --region us-east-2

    此命令會建立名為 的應用程式,python-tutorial並設定本機儲存庫,以使用提供的 Python 平台版本建立環境。

  2. (選用) 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

  3. 使用 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 主控台來啟動範例應用程式。如需詳細步驟,請參閱本指南入門章節中的建立範例應用程式