Serverlessで管理しているAWS LambdaにSentryを導入してエラーを検知する
エンジニアのkeisei1092です。
Serverlessで管理しているAWS LambdaにSentryを導入して、エラーを検知したいと思いましたが、日本語の記事があまりなかったので残しておきたいと思います。
この記事では、 Netflix-Skunkworks / raven-python-lambda を使っていきたいと思います。Sentry公式では sentry_sdk
がインストールできますが、以下の理由で前者を選択しました。
(これらは sentry-sdk
でも可能ですが、設定が必要です)
導入
raven-python-lambda
をインストール
プロジェクトの Pipfile
に以下のように追記します。
raven-python-lambda = "*"
pipenvを更新します。
pipenv install
serverless.yml
に環境変数を指定していきます。
provider: environment: SENTRY_ENVIRONMENT: ${opt:stage, self:provider.stage} SENTRY_DSN: <あなたのSentryプロジェクトのSENTRY_DSN>
各lambdaの run
関数を、 @RavenLambdaWrapper()
でくくります。
from raven import Client from raven_python_lambda import RavenLambdaWrapper @RavenLambdaWrapper() def run(event, context): # 試しにエラーなどを出力してみる logging.debug('DEBUG レベルのログ') logging.info('INFO レベルのログ') logging.warning('WARN レベルのログ') logging.error('ERROR レベルのログ') raise Exception('this is exception.')
(SentryからSlackの通知は、別の記事をご参考ください)
これで、エラーが通知されました。
お手軽にエラー監視環境が作成できるので、皆さんもぜひ試してみてください。