[AWS Lambda] 処理時間計測方法(AWS X-Rayの使用)


AWS Lambdaの処理時間をAWS X-Rayを用い計測する。

 Lambadaでの処理時間を計測するためにAWS X-Rayを使用したときの備忘録です。間違いがありましたら、ご指摘ください。

(1) Lambda関数作成と事前設定

 今回、処理時間を計測するLambda関数を作成します。

①AWS LambdaページにてTestSample関数を作成。(Python使用)

 

② トレースの有効化する

  Lambda関数を選択し「AWS X-Ray」のアクティブトレースにチェックを入れる。

③Lambda関数のIAMロールに「AWSXrayWriteOnlyAccess」を付与する。

  処理時間を計測するサービスのAWS-Xrayを使用するためです。
  上記②の画像にあるLambda関数ページ内の実行ロール箇所にある、
 「IAMコンソールでTestSample***ロール表示します」をクリックする。
  IAMロールのページに遷移し、下記のように「AWSXrayWriteOnlyAccess」を
 付与します。
 
 

(2) Lambda関数の作成

①処理時間を計測するために必要なSDKを取得

 今回は、AmazonLinux環境(EC2)上でSDKを取得しました。
 ※各コマンドの応答結果は省略しました。


# pipのインストール
[ec2-user@ip-10-0-0-155 ~]$ sudo easy_install pip
# pipのupgrade
[ec2-user@ip-10-0-0-155 ~]$ sudo easy_install --upgrade pip
# pipコマンドのパスを移動
[ec2-user@ip-10-0-0-155 ~]$ sudo cp /usr/bin/pip /usr/sbin/
# X-Ray SDK をダウンロードする
# SDKがコマンド実行ディレクトリ配下に取得できるため
# 適当にディレクリを作成してから実行します。
[ec2-user@ip-10-0-0-155 tmp]$ pip install aws-xray-sdk -t .

⇒上記にてsdkを取得した中で、下記の3ディレクトリを使用します。
•awsxray_sdk
•jsonpickle
•wrapt
これらのフォルダ一式をLambda関数を作成するディレクトリに移動します。
※WindowsやMacといったローカル環境のPC上で実施してもよいですし、
 このままEC2インスタンス上で実施しても構いません。
 

②Lambda実行関数を作成

 今回、処理時間を作成する実行関数(lambda_function.py)は下記とします。
(Lambdaでデフォルト生成されるpython関数です)
デフォルト生成される関数に対し、X-Rayを使用するために組み込んでいます。

import json
import boto3

from aws_xray_sdk.core import patch
patch(['boto3'])

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

③SDKを組み込んだソースコード一式を作成

 ①で取得したSDKと②で作成した関数をまとめます。
 以下のようなフォルダ一式を作成、zip化します。
```
TestSample.zip内に以下のフォルダ/ファイルを格納
・awsxray_sdk/
・jsonpickle/
・wrapt/
・lambda_function.py
※フォルダ生成時、上記の4つのフォルダ/ファイル群に対してzip化します。
 この4つが格納された上位のフォルダに対し、zip化しないようにしてください。

(3) Lambda関数にzip圧縮したソースコードを登録

 関数コードのコードエントリタイプを「.zipファイルをアップロード」を選択、
 (2)で作成したzipファイルをuploadします。

upload後、Lambda関数のコードが反映されます。
 

(4)Lambda関数の処理時間計測をテスト

 Lambda関数の右上にある"テスト"をクリックし、デフォルトままで、適当にイベント名を付けます。その後、テストを実行します。

 しばらくすると、テストが完了します。以下のようなログが出力されます。

 ここで、ログ出力の中にXRAYのTraceIdが表示されていることがわかります。このIDを(5)で使用します。

(5)Lambda関数の処理時間を確認

 AWSのサービス一覧より、AWS X-Rayのページに遷移します。そして、(4)で確認したXRAYのTraceIdに該当するTraceを選択します。

⇒Lambda関数での処理時間の結果がTraceされていることがわかります。
 Lambda関数は、初回実行時には時間を要します。
 そのことが処理時間の結果からも見て取れます。

以上で、Lambda関数の処理時間の計測方法となります。