Serverless Frameworkで作ったLambdaにX-Rayのアクティブトレースを適用する
X-rayがついにLambdaサポートしましたね。
まだプレビュー版ということもあり、CloudFormationではLambdaにX-Rayのアクティブトレースを設定する定義は追加されていない様子です。
そのためCloudFormationを利用しているServerless FrameworkでもまだX-Rayを利用することはできないのですが・・・
まぁ待てないですよね。
ということで手作業交えて設定してみました。
事前準備
LambdaからX-Rayにデータを送信するためのiamRoleStatements
が必要になります。
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の管理画面側から設定するのでご注意ください。
「Lambdaの数が多いので手作業はつらい」という方は、AWS-CLIを使いましょう。
update-function-configuration
のTracingConfig
を使えばいけるっぽいです(未検証)
Lambdaの実行結果を見る
ここまでやれば、あとはX-Rayがよしなにしてくれます。
チェックボックスのオンオフだけで設定できるので、気軽に試せて気軽に止めれるのがいいですね。
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の画面に移動して、スタック削除をリトライしましょう。
現場からは以上です。
Author And Source
この問題について(Serverless Frameworkで作ったLambdaにX-Rayのアクティブトレースを適用する), 我々は、より多くの情報をここで見つけました https://qiita.com/motchi0214/items/203163ddd27a2ae8f10d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .