檢測部署在無伺服器環境中的 Web 框架 - AWS X-Ray

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

檢測部署在無伺服器環境中的 Web 框架

適用於 Python 的 AWS X-Ray SDK 支援檢測無伺服器應用程式中部署的 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 端點。

必要條件

  • Zappa

  • Python — 版本 2.7 或 3.6.

  • AWS CLI— 驗證您的帳戶 AWS CLI 已配置,並且您將 AWS 區域 在其中部署應用程序。

  • Pip

  • Virtualenv

步驟 1:建立環境

在此步驟中,您將建立使用 virtualenv 來主控應用程式的虛擬環境。

  1. 使用 AWS CLI,建立應用程式的目錄。然後,切換至新目錄。

    mkdir serverless_application cd serverless_application
  2. 接下來,在您的新目錄中建立虛擬環境。使用下列命令,將其啟動。

    # Create our virtual environment virtualenv serverless_env # Activate it source serverless_env/bin/activate
  3. 安裝 X-Ray, 燒瓶, Zappa, 和請求庫到您的環境.

    # Install X-Ray, Flask, Zappa, and Requests into your environment pip install aws-xray-sdk flask zappa requests
  4. 將應用程式程式碼新增到 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。

  1. serverless_application 目錄當中起始 Zappa。在這個範例中,我們使用的是預設設定,但如果您有自訂偏好設定,則 Zappa 會顯示組態指示。

    zappa init
    What 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
  2. 啟用 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-*********" } }
  3. "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 } }
  4. 部署應用程式。這會自動設定 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 追蹤。

  1. 登入 AWS Management Console 並開啟 API Gateway 主控台,網址為 https://console.aws.amazon.com/apigateway/

  2. 尋找新產生的 API。該項目看起來應該會類似 serverless-exam-dev

  3. 選擇 Stages (階段)。

  4. 選擇您的部署階段名稱。預設值為 dev

  5. Logs/Tracing (日誌/追蹤) 標籤中,選取 Enable X-Ray Tracing (啟用 X-Ray 追蹤) 方塊。

  6. 選擇 Save Changes (儲存變更)。

  7. 在您的瀏覽器中存取端點。如果您使用的是 Hello World 應用程式範例,這時應該顯示如下。

    "Hello, World: https://aws.amazon.com/"

步驟 4:檢視已建立的追蹤

在此步驟中,您將與 X-Ray 控制台進行交互,以查看示例應用程序創建的跟踪。如需追蹤分析的詳細演練,請參閱檢視服務映射

  1. 登入 AWS Management Console 並開啟 X-Ray 主控台,網址為 https://console.aws.amazon.com/xray/home

  2. 檢視 API Gateway、Lambda 函數和 Lambda 容器所產生的區段。

  3. 在 Lambda 函數區段下,檢視名為My First Serverless App的子區段。它的後面是一個名為 https://aws.amazon.com 的第二個子區段。

  4. 在初始化期間,Lambda 也可能會產生名為initialization的第三個子區段。


        追蹤區段檢視。

        服務圖表檢視。

步驟 5:清除

務必終止您不再使用的資源,避免累積超出預期的費用。在此教學示範中,像是 Zappa 等工具會簡化無伺服器解決方案的重新部署。

若要從 Lambda、API Gateway 和 Amazon S3 移除您的應用程式,請在專案目錄中使用 AWS CLI.

zappa undeploy dev

後續步驟

通過添加 AWS 客戶端並使用 X-Ray 對其進行檢測,為應用程序添加更多功能。在上進一步了解無伺服運算選項。 AWS