このページでは、Python サーバレストレーサ API を使用して、AWS Lambda 関数内のトレーサの動作を変更する方法について説明します。

exit コールの作成

exit コールは、HTTP、Amazon DynamoDB、および AWS Lambda 間のコールでは自動的にインストゥルメント化されます。他のすべてのプロトコルでは、手動で exit コールを作成する必要があります。 

exit コールを作成するには、with ステートメント内の ExitCallContextManager メソッドを使用して exit コールをラップします。このメソッドは、次の必須パラメータを使用します。

  • exit_point_type:exit コールのタイプ
  • exit_point_sub_type:exit コールのサブタイプ

  • identifying_properties:exit コールを定義するプロパティ

ExitCallContextManager メソッドは、メソッドの範囲内で発生するすべてのランタイム例外を、exit コールエラーとして自動的に報告します。

次のコードサンプルは、MySQL データベースに exit コールメソッドを使用する方法を示しています。

import appdynamics # Add AppDynamics libraries. Must be the first line of code

@appdynamics.tracer
def handler(event, context):
    with appdynamics.ExitCallContextManager(exit_point_type="DB", exit_point_sub_type="DB", identifying_properties={"VENDOR": "MYSQL"}) as ec:
        data = fetch_from_db()
PY

exit コールタイプおよび識別プロパティ

コントローラでは、すべての exit コールに個別のタイプがあり、一連の識別プロパティによって決定されます。各 exit コールタイプに少なくとも 1 つの識別プロパティを含めます。 

exitCall のタイプ、サブタイプ、および識別プロパティを次に示します。exit コールサブタイプの場合、表に記載されている例を使用するか、空の文字列を使用できます。  

終了コールタイプ

exit コールサブタイプ

識別プロパティ

HTTPHTTP

HOST

PORT

URL

QUERY STRING

DB

DB


URL

HOST

PORT

DATABASE

VERSION

VENDOR

CACHE

CACHE


VENDOR

SERVER POOL 

CUSTOM

Cassandra CQL

Couchbase

Amazon Web Services

Mongo DB


ユーザ定義のプロパティセット

次のインターセプタがサポートされており、手動でのインストゥルメンテーションは必要ありません。

  • Boto クライアント:
    • Lambda:invokeinvokeAsync
    • DynamoDB:batch_get_itembatch_write_itemcreate_tabledelete_tabledelete_itemget_itemput_itemupdate_item
  • Tornado
  • http ライブラリ

exit コールエラーレポートの作成

ExitCallContextManager メソッドは自動的にエラーを報告します。カスタムエラーレポートを追加する場合は、report_exit_call_error メソッドを使用します。このメソッドは、次のパラメータを使用します。

  • error_name:エラーの名前
  • error_message(オプション):説明的なエラーメッセージ
  • http_status_code (オプション):使用可能な場合は HTTP ステータスコード

次のコードサンプルは、exit コール エラー レポート メソッドを使用する方法を示しています。

import appdynamics 
@appdynamics.tracer 
def handler(event, context): 
	#Create an exit call 
    with appdynamics.ExitCallContextManager("DB", "DB", {"HOST": "ec2-12-123-123-12.us-west-2.compute.amazonaws.com", "PORT": "3306", "DATABASE": "movies", "VENDOR": "MYSQL"}) as ec:
        movies = fetch_movies_from_mysql_db()
        if movies == None:
			#Create an exit call error report 
            ec.report_exit_call_error(error_name="DBError", error_message="Item not found") #ec is the object returned by ExitCallContextManager above
PY

トランザクション エラー レポートの作成

デフォルトでは、Python トレーサはトランザクション エラー レポートを自動的に検出します。トランザクションエラーを報告するために appdynamics.report_error(error_name: str, error_message: str) メソッドを使用して、これらのエラーレポートをカスタマイズできます。このメソッドは、次のパラメータを使用します。

  • error_name:エラーの名前

  • error_message(オプション):説明的なエラーメッセージ

次のコードサンプルは、トランザクション エラー レポート メソッドを使用する方法を示しています。

import appdynamics # Add AppDynamics libraries. Must be the first line of code
import requests #Add request library 

@appdynamics.tracer # Must come before the handler function
def my_handler(event, context):
	try:
        r = requests.get('https://api.github.com/events')
    except Exception as e:
        appdynamics.report_error(error_name=type(e).__name__, error_message=str(e)) # Reports a transaction error
PY