翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サーバーレス環境にデプロイされたウェブフレームワークの計測
注記
X-Ray SDK/デーモンメンテナンス通知 – 2026 年 2 月 25 日、 AWS X-Ray SDKsデーモンはメンテナンスモードに移行します。 AWS では、X-Ray SDK とデーモンのリリースがセキュリティの問題にのみ対処するように制限されます。サポートタイムラインの詳細については、「X-Ray SDK とデーモンのサポートタイムライン」を参照してください。OpenTelemetry に移行することをお勧めします。OpenTelemetry への移行の詳細については、「X-Ray による計装から OpenTelemetry による計装への移行」を参照してください。
AWS X-Ray SDK for Python は、サーバーレスアプリケーションにデプロイされたウェブフレームワークの計測をサポートしています。サーバーレスはクラウドのネイティブアーキテクチャで、運用上の多くの責任を AWSにシフトさせることができるため、俊敏性とイノベーションを強化できます。
サーバーレスアーキテクチャは、サーバーを意識せずにアプリケーションやサービスを構築および実行できるソフトウェアアプリケーションモデルです。サーバーまたはクラスターのプロビジョニング、パッチ適用、オペレーティングシステムのメンテナンス、キャパシティのプロビジョニングといったインフラストラクチャ管理のタスクが不要になります。サーバーレスアプリケーションは、ほぼすべてのタイプのアプリケーションやバックエンドサービス向けに構築でき、高可用性を実現しながら、アプリケーションの実行やスケーリングに必要な作業のすべてをユーザーに代わって行います。
このチュートリアルでは、サーバーレス環境にデプロイされた Flask や Django などのウェブフレームワーク AWS X-Ray で を自動的に計測する方法を示します。アプリケーションの X-Ray 計測により、 AWS Lambda Amazon API Gateway から関数を介して行われたすべてのダウンストリーム呼び出しと、アプリケーションが行う発信呼び出しを表示できます。
X-Ray SDK for Python では、次の 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 マネジメントコンソール し、https://console.aws.amazon.com/apigateway/
で API Gateway コンソールを開きます。 -
新しく生成された API を探します。
serverless-exam-devのようになります。 -
[Stages] (ステージ) を選択します。
-
API のデプロイステージの名前を選択します。デフォルトは
devです。 -
[Logs/Tracing] タブで、[X-Ray トレースを有効にする] チェックボックスをオンにします。
-
[Save changes] (変更の保存) をクリックします。
-
ブラウザでエンドポイントにアクセスします。サンプルの
Hello Worldアプリケーションを使用した場合は、次のように表示されます。"Hello, World: https://aws.amazon.com/"
ステップ 4: 作成したトレースを表示する
このステップでは、X-Ray コンソールを使用して、サンプルアプリケーションで作成されたトレースを表示します。トレース解析の詳細なチュートリアルについては、「サービスマップの表示」を参照してください。
にサインイン AWS マネジメントコンソール し、https://console.aws.amazon.com/xray/home
で X-Ray コンソールを開きます。 -
API Gateway、Lambda 関数、Lambda コンテナによって生成されたセグメントを表示します。
-
Lambda 関数のセグメントで、
My First Serverless Appという名前のサブセグメントを表示します。次に、https://aws.amazon.comという名前の 2 番目のサグメントが続きます。 -
Lambda では、初期化中に
initializationという名前の 3 番目のサブセグメントが生成されることがあります。
ステップ 5:クリーンアップ
不要なコストがかからないように、使用しなくなったリソースは必ず終了してください。このチュートリアルで示されているように、Zappa のようなツールを使用することで、サーバーレスの再デプロイを効率化することができます。
Lambda、API Gateway、Amazon S3 からアプリケーションを削除するには、 AWS CLIを使用して、プロジェクトディレクトリで次のコマンドを実行します。
zappa undeploydev
次の手順
AWS クライアントを追加して X-Ray で計測することで、アプリケーションに機能を追加します。サーバーレスコンピューティングのオプションについては、AWSのサーバーレス