LoginSignup
5
3

More than 5 years have passed since last update.

AWS lambdaでbugsnagを利用する

Last updated at Posted at 2018-04-24

目的

lambdaでbugsnagを使いたい。
言語は node.js を使用する。
index.js にのみ処理が記述されてる前提。

手順

npmでbugsnagをインストール

index.js の階層で以下実施

npm install --save bugsnag

node_modules ディレクトリが作成され、中にいろいろインストールされている。

git上は npm init して作成された package.json をコミットしておく。

デプロイ

index.js の階層で以下実施

zip -r xxxx.zip index.js node_modules

※一つ上の階層でディレクトリ自体をzip化しないよう注意。

作成した xxxx.zip(ファイル名は任意でOK) を、zipでAWSコンソールからアップロード。

スクリーンショット 2018-04-24 21.00.09.png

※lambdaのデプロイ自体は、 apex を利用したほうが楽。

コーディング

定義

index.js に以下を記述し、 bugsnag をrequire

var bugsnag = require('bugsnag');
bugsnag.register(
  `${process.env.BUGSNAG_API_KEY}`, { releaseStage: `${process.env.RELEASE_STAGE}` });

以下は環境変数に設定する。

変数名 説明
BUGSNAG_API_KEY bugsnagのAPIキー
RELEASE_STAGE stagingproduction といった環境名

とりあえず連携できているかテスト

var bugsnag = require('bugsnag');
bugsnag.register(
  `${process.env.BUGSNAG_API_KEY}`, { releaseStage: `${process.env.RELEASE_STAGE}` });

exports.handler = function(event, context, callback) {
    bugsnag.notify(new Error("Non-fatal"));
    return;
};

ローカルで編集したら忘れずデプロイ

こんな感じでエラーが通知された!

スクリーンショット 2018-04-24 18.47.07.png

対象処理中で発生したエラーは全てbugsnagに通知する

var bugsnag = require('bugsnag');
bugsnag.register(
  `${process.env.BUGSNAG_API_KEY}`, { releaseStage: `${process.env.RELEASE_STAGE}` });

// メイン処理
var main = function(event, context, callback) {
  // 処理
  throw new Error("Non-fatal");
};

exports.handler = function(event, context, callback) {

    // エラー発生時は全てbugsnagに送信する
    bugsnag.autoNotify(function() {
      main(event, context, callback);
    });

};

autoNotify同期・非同期の全エラーを捕捉する はずだが、 context.fail() は通知されなかった・・。なぜでしょう。

参考

bugsnag公式 - bugsnagとnode.jsの基本的な連携方法
https://docs.bugsnag.com/platforms/nodejs/
https://docs.bugsnag.com/platforms/nodejs/other/#basic-configuration
https://docs.bugsnag.com/platforms/nodejs/express/configuration-options/

Lambdaに標準で同梱されていないモジュールを使用したい場合の、環境構築方法
https://www.business-on-it.com/2003-aws-lambda-create-function/#section2

あるモジュールがlambdaに標準で入ってるかどうか は公開されてないらしい・・
https://qiita.com/yoshidasts/items/2d7117ef0f31754a06ab

5
3
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
5
3