本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
檢測部署在無伺服器環境中的 Web 框架
注意
End-of-support通知 – 在 2027 年 2 月 25 日, AWS X-Ray 將停止支援 AWS X-Ray SDKs 和協助程式。2027 年 2 月 25 日之後,您將不再收到更新或版本。如需支援時間表的詳細資訊,請參閱 X-Ray SDK 和協助程式終止支援時間表。建議您遷移至 OpenTelemetry。如需遷移至 OpenTelemetry 的詳細資訊,請參閱從 X-Ray 檢測遷移至 OpenTelemetry 檢測。
適用於 Python 的 AWS X-Ray 開發套件支援檢測部署在無伺服器應用程式中的 Web 架構。無伺服器解決方案是雲端原生架構,能讓您將更多的操作責任轉移到 AWS,提高您的敏捷度和創新能力。
無伺服器架構是一種軟體應用程式模型,可讓您建置和執行應用程式和服務,而完全不用考慮伺服器。這種做法可免除基礎設施管理工作,例如伺服器或叢集佈建、修補、作業系統維護和容量佈建。您可以為幾乎任何應用程式類型或後端服務建立無伺服器解決方案,並為您包辦執行和擴展高可用性應用程式所需的一切工作。
本教學課程說明如何自動 AWS X-Ray 檢測部署到無伺服器環境的 Web 架構,例如 Flask 或 Django。應用程式的 X-Ray 檢測可讓您檢視從 Amazon API Gateway 透過您的 AWS Lambda 函數進行的所有下游呼叫,以及應用程式發出的呼叫。
適用於 Python 的 X-Ray 開發套件支援下列 Python 應用程式架構:
-
Flask 版本 0.8 或更新版本
-
Django 版本 1.0 或更新版本
本教學課程會開發範例無伺服器應用程式,部署至 Lambda 並由 API Gateway 叫用。本教學課程使用 Zappa 自動將應用程式部署至 Lambda,並設定 API Gateway 端點。
先決條件
步驟 1:建立環境
在此步驟中,您將建立使用 virtualenv 來主控應用程式的虛擬環境。
-
使用 AWS CLI為應用程式建立目錄。然後,切換至新目錄。
mkdirserverless_applicationcdserverless_application -
接下來,在您的新目錄中建立虛擬環境。使用下列命令,將其啟動。
# Create our virtual environment virtualenvserverless_env# Activate it sourceserverless_env/bin/activate -
將 X-Ray、Flask、Zappa 和請求程式庫安裝到您的環境。
# Install X-Ray, Flask, Zappa, and Requests into your environment pip install aws-xray-sdk flask zappa requests -
將應用程式程式碼新增到
serverless_application目錄。在這個範例中,我們可以建置出 Flasks 的 Hello World範例。 在
serverless_application目錄中,建立名為my_app.py的檔案。然後,使用文字編輯器來新增下列命令。這個應用程式會檢測請求程式庫、修補 Flask 應用程式的中介軟體,並開啟端點'/'。# Import the X-Ray modules from aws_xray_sdk.ext.flask.middleware import XRayMiddleware from aws_xray_sdk.core import patcher, xray_recorder from flask import Flask import requests # Patch the requests module to enable automatic instrumentation patcher.patch(('requests',)) app = Flask(__name__) # Configure the X-Ray recorder to generate segments with our service name xray_recorder.configure(service='My First Serverless App') # Instrument the Flask application XRayMiddleware(app, xray_recorder) @app.route('/') def hello_world(): resp = requests.get("https://aws.amazon.com") return 'Hello, World: %s' % resp.url
步驟 2:建立和部署 Zappa 環境
在此步驟中,您將使用 Zappa 自動設定 API Gateway 端點,然後部署到 Lambda。
-
從
serverless_application目錄當中起始 Zappa。在這個範例中,我們使用的是預設設定,但如果您有自訂偏好設定,則 Zappa 會顯示組態指示。zappa initWhat do you want to call this environment (default 'dev'):
dev... What do you want to call your bucket? (default 'zappa-*******'):zappa-*******... ... It looks like this is a Flask application. What's the modular path to your app's function? This will likely be something like 'your_module.app'. We discovered: my_app.app Where is your app's function? (default 'my_app.app'):my_app.app... Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]:n -
啟用 X-Ray。開啟
zappa_settings.json檔案,並確認其類似此範例。{ "dev": { "app_function": "my_app.app", "aws_region": "us-west-2", "profile_name": "default", "project_name": "serverless-exam", "runtime": "python2.7", "s3_bucket": "zappa-*********" } } -
將
"xray_tracing": true新增做為組態檔的項目:{ "dev": { "app_function": "my_app.app", "aws_region": "us-west-2", "profile_name": "default", "project_name": "serverless-exam", "runtime": "python2.7", "s3_bucket": "zappa-*********","xray_tracing": true} } -
部署應用程式。這會自動設定 API Gateway 端點,並將您的程式碼上傳至 Lambda。
zappa deploy... Deploying API Gateway.. Deployment complete!: https://**********.execute-api.us-west-2.amazonaws.com/
dev
步驟 3:啟用 API Gateway 的 X-Ray 追蹤
在此步驟中,您將與 API Gateway 主控台互動,以啟用 X-Ray 追蹤。
登入 AWS 管理主控台 並開啟 API Gateway 主控台,網址為 https://https://console.aws.amazon.com/apigateway/
。 -
尋找新產生的 API。該項目看起來應該會類似
serverless-exam-dev。 -
選擇 Stages (階段)。
-
選擇您的部署階段名稱。預設值為
dev。 -
在 Logs/Tracing (日誌/追蹤) 標籤中,選取 Enable X-Ray Tracing (啟用 X-Ray 追蹤) 方塊。
-
選擇 Save Changes (儲存變更)。
-
在您的瀏覽器中存取端點。如果您使用的是
Hello World應用程式範例,這時應該顯示如下。"Hello, World: https://aws.amazon.com/"
步驟 4:檢視已建立的追蹤
在此步驟中,您將與 X-Ray 主控台互動,以檢視範例應用程式建立的追蹤。如需追蹤分析的詳細演練,請參閱檢視服務映射。
登入 AWS 管理主控台 並開啟位於 https://https://console.aws.amazon.com/xray/home
的 X-Ray 主控台。 -
檢視 API Gateway、Lambda 函數和 Lambda 容器所產生的區段。
-
在 Lambda 函數區段下,檢視名為 的子區段
My First Serverless App。它的後面是一個名為https://aws.amazon.com的第二個子區段。 -
在初始化期間,Lambda 也可能產生名為 的第三個子區段
initialization。
步驟 5:清除
務必終止您不再使用的資源,避免累積超出預期的費用。在此教學示範中,像是 Zappa 等工具會簡化無伺服器解決方案的重新部署。
若要從 Lambda、API Gateway 和 Amazon S3 中移除您的應用程式,請使用 在專案目錄中執行下列命令 AWS CLI。
zappa undeploydev
後續步驟
透過新增 AWS 用戶端並使用 X-Ray 檢測,將更多功能新增至您的應用程式。進一步了解 Serverless on 的無 AWS