AWS LambdaでSentryを使う

公開日時

AWS Lambdaで動くJSアプリケーションのエラー検知をしようと思い、Sentryを導入した。

しかし、[[Sentry.captureException]]を使って手動でエラー通知を行ったところ、うまくエラー通知が送信されない現象が発生した。

issueにも同様の現象が挙がっており、コメントにあった[[Sentry.flush]]を使うことでエラーが通知されるようになった。

[[@sentry/node] AWS Lambda and other Serverless solutions support · Issue #1449](https://github.com/getsentry/sentry-javascript/issues/1449)

import * as Sentry from '@sentry/node';

Sentry.init({ dsn: process.env.SENTRY_URL! });

const handler = async (event, context) => {
  try {
    someFunction();
  } catch (error) {
    Sentry.captureException(error);
    await Sentry.flush(2500);
  }
  
  return context.succeed({
    200,
    body: JSON.stringify({
      message: 'ok'
    })
  });
};

export { handler };

Related #aws

Step Functionsステートマシンから別のStep Functionsを呼び出す

複雑なステートマシンを小さいステートマシンに分割しておけばテストと確認がやりやすくなる

マネージメントコンソール上のエディタでLambdaのコードを書く際にnpmライブラリを追加したい

ローカルでライブラリをインストールしてからインポートする必要があった

Amazon API Gatewayのタイムアウト設定は最大29秒まで

上限緩和もできないので注意

MFA必須のスイッチロールアカウントでaws cliを使う

switch role用のprofileを追加する

AWSのコスト異常検出を設定する

意図しない課金を防ぐためにとりあえず設定しておくと良さそう