0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lambdaの監視

Last updated at Posted at 2025-02-27

スケジュールされたLambdaの監視 CloudWatchアラーム作成

はじめに

AWSの代表的なサーバーレスサービスであるLambda関数は、EventBridgeのスケジュール機能を利用することで、自動的にトリガーさせることができます。しかし、スケジュールが正常に動作しているかを確認するには、Lambdaのログを手動でチェックする必要があり、運用コストがかかる可能性があります。

そこで、CloudWatchを活用してLambdaのメトリクスを監視し、異常が発生した際に自動的にアラームを発報し、SNSやLambdaアクションを通じて通知を行う方法を紹介します。

CloudWatchアラームとは?

CloudWatchアラームは、指定したメトリクスの値がしきい値を超えた場合に、SNSやLambdaアクションを通じて通知や処理を実行する機能です。Lambdaをスケジュール実行する場合、CloudWatchメトリクスを活用して期待する回数の実行が行われているかを監視できます。

Lambdaのメトリクス

Lambdaのメトリクスには以下のようなものがあります。

メトリクス名 説明
Invocations Lambda関数が呼び出された回数
Errors エラーが発生した回数
Duration 実行時間 (ミリ秒)
Throttles 実行がスロットルされた回数
DeadLetterErrors DLQにメッセージが送信できなかった回数
IteratorAge イベントソースマッピングの遅延

この中で、スケジュール実行の監視にはInvocationsメトリクスを使用します。

スケジュール実行の監視

例えば、Lambdaが12時間ごとに1回実行されるスケジュールの場合、1日に2回 (24時間で2回) 実行されることが期待されます。この実行回数をCloudWatchアラームで監視し、期待した回数に満たない場合に通知を送るように設定します。

CloudWatchアラームの設定手順

  1. メトリクスの選択

    • AWSマネジメントコンソールのCloudWatchにアクセス。
    • [メトリクス] → [Lambda] を選択。
    • Invocations メトリクスを選択。
    • 該当のLambda関数を選択。
  2. アラームの作成

    • メトリクスのしきい値を1日2回未満に設定。
    • しきい値の計算期間を24時間に設定。
    • アラームの状態が異常 (ALARM) になった場合のアクションを指定。
    • SNSトピックを作成し、メール通知を設定。
    • 必要に応じてLambdaアクションを設定し、追加の処理を行う。
  3. アラームの有効化

    • 設定を保存し、アラームを有効化。

Lambdaアクションでの通知処理

SNS通知だけでなく、Lambdaを使ってより高度な処理を行うことも可能です。例えば、

  • SlackやTeamsに通知を送信
  • Lambdaの再実行処理を自動化
  • 異常検知後の対応ログを保存

以下は、SNS経由でSlackに通知を送るLambda関数の簡単な例です。

import json
import urllib3

def lambda_handler(event, context):
    webhook_url = "https://hooks.slack.com/services/your/webhook/url"
    message = {
        "text": "🚨 Lambdaのスケジュール実行回数が不足しています!"
    }
    http = urllib3.PoolManager()
    response = http.request(
        "POST",
        webhook_url,
        body=json.dumps(message),
        headers={"Content-Type": "application/json"}
    )
    return {
        "statusCode": response.status,
        "body": response.data.decode("utf-8")
    }

add-permissionの設定は必要か?

LambdaをEventBridgeでスケジュール実行する場合、add-permissionを使用して適切な権限を設定する必要がある場合があります。通常、EventBridgeからLambdaを直接トリガーする場合は、Lambdaのリソースポリシーに適切な権限が付与されるため、手動で設定する必要はありません。しかし、異なるAWSアカウントやカスタムのIAMロールを使用する場合は、以下のように明示的に権限を付与することが推奨されます。

aws lambda add-permission \
--function-name my-function-name \
--statement-id AlarmAction \
--action 'lambda:InvokeFunction' \
--principal lambda.alarms.cloudwatch.amazonaws.com \
--source-account 111122223333 \
--source-arn arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name

この設定により、EventBridgeからLambda関数を適切にトリガーできるようになります。

まとめ

CloudWatchアラームを活用することで、スケジュールされたLambdaの実行状況を自動的に監視し、異常時に通知を行うことができます。

監視ポイント

  • Invocations メトリクスを使用してLambdaの実行回数をチェック
  • 期待した回数に満たない場合にCloudWatchアラームを設定
  • SNSやLambdaアクションを利用して自動的に通知や対応を実行
  • 必要に応じてadd-permissionを設定し、権限エラーを防ぐ

これにより、スケジュールされたLambdaのトラブルを迅速に検知し、対策を講じることができます。

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?