LoginSignup
4
2

More than 5 years have passed since last update.

Serverless Frameworkで作ったLambdaにX-Rayのアクティブトレースを適用する

Posted at

X-rayがついにLambdaサポートしましたね。
まだプレビュー版ということもあり、CloudFormationではLambdaにX-Rayのアクティブトレースを設定する定義は追加されていない様子です。
そのためCloudFormationを利用しているServerless FrameworkでもまだX-Rayを利用することはできないのですが・・・

まぁ待てないですよね。

ということで手作業交えて設定してみました。

事前準備

LambdaからX-Rayにデータを送信するためのiamRoleStatementsが必要になります。
serverless.ymlに書き足しておきましょう。

serverless.yml
provider:
  name: aws
  runtime: nodejs4.3
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "xray:PutTraceSegments"
        - "xray:PutTelemetryRecords"
      Resource:
        - "*"

デプロイしたLambdaに手作業でX-Rayを設定する

デプロイ後にAWSのマネージドコンソールからX-Rayの設定を有効化していきます。
Lambdaの場合はX-Rayの管理画面ではなく、Lambdaの管理画面側から設定するのでご注意ください。

スクリーンショット 2017-04-21 10.30.57.png
「アクティブトレースを有効にする」をオンにして保存します。

「Lambdaの数が多いので手作業はつらい」という方は、AWS-CLIを使いましょう。

update-function-configurationTracingConfigを使えばいけるっぽいです(未検証)

Lambdaの実行結果を見る

ここまでやれば、あとはX-Rayがよしなにしてくれます。

スクリーンショット 2017-04-21 10.30.41.png

チェックボックスのオンオフだけで設定できるので、気軽に試せて気軽に止めれるのがいいですね。

Tips:sls deployで衝突しないか?

CloudFormationで定義した内容を手動で設定変更していますが、今のところsls deployでの更新も問題なくできる様子です。

CloudFormationがLambda - X-Rayをサポートした時にどうなるかはわかりませんが、最悪一度X-Ray連携を全て切ってからServerless Framework側で再設定する必要がでてくるかもしれません。

Tips:sls removeはこける

IAMRoleをX-Ray側でも使用する(?)からか、sls removeはこけます。

$ sls remove --stage xraytest --profile static
Serverless: Getting all objects in S3 bucket...
Serverless: Removing objects in S3 bucket...
Serverless: Removing Stack...
Serverless: Checking Stack removal progress...
...............................................................................................................................................................................................................................................................Serverless: Deployment failed!

  Serverless Error ---------------------------------------

     An error occurred while provisioning your stack: IamRoleLambdaExecution
     - Cannot delete entity, must detach all policies first..

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Forums:        forum.serverless.com
     Chat:          gitter.im/serverless/serverless

  Your Environment Information -----------------------------
     OS:                 darwin
     Node Version:       7.4.0
     Serverless Version: 1.10.1

AWSコンソールからCloudFormationの画面に移動して、スタック削除をリトライしましょう。

現場からは以上です。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2