在 App Engine 彈性環境中建立 Python 應用程式
區域 ID
REGION_ID 是 Google 根據您在建立應用程式時選取的區域指派的縮寫代碼。這個代碼不對應國家/地區或省/市,即使某些區域 ID 可能與常用的國家/地區和省/市代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段日期前建立的現有應用程式,網址中的區域 ID 為選用。
進一步瞭解區域 ID。
本快速入門導覽課程將示範如何建立及部署應用程式,顯示簡短訊息。您可以在 app.yaml 檔案中指定執行階段版本和作業系統,針對任何支援的 Python 版本使用本快速入門導覽課程中的範例應用程式。
事前準備
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
必要的角色
如要取得完成本快速入門導覽課程所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的 App Engine 管理員 (
roles/appengine.appAdmin) - 專案的 Cloud Build 編輯者 (
roles/cloudbuild.builds.editor) - 專案的 Storage 物件管理員 (
roles/storage.objectAdmin) - 專案的記錄檢視器 (
roles/logging.viewer) - 服務帳戶的服務帳戶使用者 (
roles/iam.serviceAccountUser) -
請管理員為 App Engine 預設服務帳戶授予下列角色:
- 專案的 Artifact Registry 讀取者 (
roles/artifactregistry.reader) - 專案的 Cloud Build 服務帳戶 (
roles/cloudbuild.builds.builder) - 專案的 Storage 物件檢視者 (
roles/storage.objectViewer)
- 專案的 Artifact Registry 讀取者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
其他必要條件
使用您的專案將 App Engine 應用程式初始化,然後選擇地區:
gcloud app create --project=[YOUR_PROJECT_ID]系統提示時,請選取要放置 App Engine 應用程式的區域。
在本機電腦上安裝下列項目:
執行下列指令來安裝包含 Python 專用 App Engine 擴充功能的 gcloud 元件:
gcloud components install app-engine-python
設定 Python 開發環境。建議您在系統上安裝最新版本的 Python (
pip) 和其他相關工具。如需操作說明,請參閱「Python 開發環境設定指南」。
App Engine 位置
App Engine 具有區域性,這表示執行您應用程式的基礎架構位於特定區域,並由 Google 負責管理,實現該區域內所有可用區之間的備援可用性。
選擇應用程式執行所在區域時,主要考量因素是延遲時間、可用性或耐久性方面的需求。原則上可以選擇距離應用程式使用者最近的區域,但也應考慮 App Engine 的可用地區,以及應用程式所用其他Google Cloud 產品和服務的位置。如果跨多個位置使用服務,可能會影響應用程式的延遲時間和定價。
應用程式的地區設定完成後即無法更改。
如果您已建立 App Engine 應用程式,可以透過下列任一方式查看其區域:
請執行
gcloud app describe指令。在 控制台中開啟 App Engine 資訊主頁 Google Cloud 。 區域會顯示在頁面頂端附近。
下載 Hello World 應用程式
我們已預先建立 App Engine 適用的 Hello World 應用程式,方便您快速瞭解如何在 Google Cloud部署應用程式。
將 Hello World 範例應用程式存放區複製到本機電腦。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples您也可以下載 ZIP 檔案格式的範例,然後將檔案解壓縮。
變更為包含程式碼範例的目錄。
cd python-docs-samples/appengine/flexible/hello_world
在本機電腦上執行 Hello World
在本機電腦上執行 Hello World 應用程式:
Mac OS / Linux
- 建立獨立的 Python 環境:
python3 -m venv envsource env/bin/activate - 如果不在包含程式碼範例的目錄中,請前往包含
hello_world程式碼範例的目錄。然後安裝依附元件:cd YOUR_SAMPLE_CODE_DIRpip install -r requirements.txt - 執行應用程式:
python main.py - 在網路瀏覽器中,輸入下列網址:
http://localhost:8080
如果您使用的是 Cloud Shell,請改為按一下工具列中的「Web Preview」(網頁預覽)
,然後選取「Preview on port 8080」(透過以下通訊埠預覽:8080)。
Windows
請使用 PowerShell 執行 Python 套件。
- 找出安裝的 PowerShell。
- 在 PowerShell 捷徑上按一下滑鼠右鍵,然後以管理員身分啟動。
- 建立獨立的 Python 環境。
python -m venv env.\env\Scripts\activate - 前往專案目錄並安裝依附元件。如果不在包含程式碼範例的目錄中,請前往包含
hello_world程式碼範例的目錄。然後安裝依附元件:cd YOUR_SAMPLE_CODE_DIRpip install -r requirements.txt - 執行應用程式:
python main.py - 在網路瀏覽器中,輸入下列網址:
http://localhost:8080
此時頁面會顯示來自範例應用程式的 Hello World 訊息。請在終端機視窗中,按下 Ctrl+C 鍵來關閉網路伺服器。
在 App Engine 上部署並執行 Hello World
如要將您的應用程式部署到 App Engine 彈性環境:-
從
hello_world目錄執行下列指令,部署 Hello World 應用程式:gcloud app deploy
瞭解選用標記。
常見的
gcloud指令標記- 加上
--version標記以指定專門用來辨識您應用程式版本的 ID。如未指定,將由系統自動產生,例如:--version [YOUR_VERSION_ID] -
加入
--project標記,指定要用於gcloud工具的替代 Google Cloud 專案 ID (而非您初始化為預設值的 ID)。示例:--project [YOUR_PROJECT_ID]
範例:
gcloud app deploy --version pre-prod-5 --project my-sample-app
如要進一步瞭解如何透過指令列部署應用程式,請參閱測試及部署您的應用程式。如需所有指令標記的清單,請參閱
gcloud app deploy參考資料。 - 加上
-
啟動瀏覽器,在
https://PROJECT_ID.REGION_ID.r.appspot.com查看應用程式 ,其中gcloud app browse
PROJECT_ID代表您的 Google Cloud專案 ID。
此時,顯示 Hello World 訊息的頁面是由在 App Engine 執行個體上運作的網路伺服器提供。
恭喜!您已將第一個 App Engine 應用程式部署至 App Engine 彈性環境!
如果在部署應用程式時發生任何錯誤,請參閱疑難排解提示。請參閱下列各節,瞭解清除所用資源的資訊,並取得相關後續步驟的連結。
清除所用資源
如要避免產生費用,您可以刪除 Google Cloud 專案,這樣一來,系統就會停止對該專案中使用的所有資源計費。
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
後續步驟
瞭解整個平台
現在您已瞭解如何開發及部署 App Engine 應用程式,可以繼續探索 Google Cloud。您已安裝 Google Cloud CLI,可使用工具與 Cloud SQL、Cloud Storage、Firestore 等產品互動。
瞭解 App Engine 彈性環境
以下是一些可協助您瞭解 App Engine 的主題:
Hello World 程式碼審查
Hello World 是再簡單不過的 App Engine 應用程式,只包含一項服務、只有一種版本,且所有程式碼都位於應用程式的根目錄中。本節將詳細說明每個應用程式檔案。
main.py
Hello World 是基本的單一檔案 Flask 應用程式。
app.yaml
app.yaml 檔案說明應用程式的下列設定:
- 設定
env: flex,指出應用程式使用 App Engine 彈性環境。 指定應用程式使用的執行階段。如果排除
runtime_version設定,App Engine 會使用最新 Python 版本做為應用程式的預設版本。entrypoint會告知 App Engine 如何啟動應用程式。這個應用程式會使用gunicorn提供 Python 應用程式,取代 Flask 的開發伺服器 (在本機執行時使用)。應用程式啟動時,App Engine 會設定$PORT變數。如要進一步瞭解entrypoint,請參閱「應用程式啟動」。
如要進一步瞭解 Python 執行階段如何運作,請參閱 Python 執行階段。
如要進一步瞭解如何設計應用程式以運用各種版本和服務,請參閱 App Engine 總覽。
如需瞭解 App Engine 設定的詳情,請參閱使用 app.yaml 設定應用程式一文。
requirements.txt
requirements.txt 和 Python 套件管理工具 pip 宣告及安裝應用程式依附元件。Hello World 需要 Flask (網路架構) 和 Gunicorn (WSGI 伺服器)。
requirements.txt 定義要在本機安裝的程式庫,以及部署至 App Engine 時安裝的程式庫。