Quantcast
Channel: kakakakakku blog
Viewing all articles
Browse latest Browse all 937

LocalStack で Lambda の Errors メトリクスを SNS 経由でアラートする

$
0
0

LocalStack を使って AWS Lambda 関数の Errorsメトリクスをモニタリングして Amazon CloudWatch Alarm と Amazon SNS でアラートするアーキテクチャを試してみた❗️LocalStack(無料版)ですべて試せる〜 \( 'ω')/

アーキテクチャ図

Webhook.site

今回は Amazon SNS からアラートを受け取るお手軽な環境として Webhook.siteを使う.検証用途などに使える一時的な Webhook URL を発行できて,Amazon SNS の HTTPS エンドポイントとしてサブスクライブできる👌ウェブサイトにアクセスして Your unique URLに表示されている URL をコピーしておく.

webhook.site

デプロイ

まずは AWS SAM (AWS CloudFormation) で LocalStack 上に検証環境をデプロイする.

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31

Parameters:WEBHOOK:Type: String
    AllowedPattern: https://webhook.site/.*

Resources:Function:Type: AWS::Serverless::Function
    Properties:FunctionName: sandbox
      CodeUri: ./src
      Handler: app.lambda_handler
      Runtime: python3.12
      Architectures:- x86_64
  Alarm:Type: AWS::CloudWatch::Alarm
    Properties:AlarmName: function-errors
      MetricName: Errors
      Namespace: AWS/Lambda
      ComparisonOperator: GreaterThanOrEqualToThreshold
      EvaluationPeriods:1Period:60Statistic: Sum
      Threshold:1AlarmActions:- !Ref Topic
      Dimensions:- Name: FunctionName
          Value:!Ref Function
  Topic:Type: AWS::SNS::Topic
    Properties:DisplayName: alerts
      Subscription:- Protocol: https
          Endpoint:!Ref WEBHOOK

そして samlocalコマンドを使ってデプロイする.なお,デプロイ時の WEBHOOKパラメータには取得した Webhook.site の URL を設定しておく.

$ samlocal build
$ samlocal deploy --parameter-overridesWEBHOOK=https://webhook.site/64e8d8c6-3fa2-4d68-a2a2-a87409553fff

すると Webhook.site に SubscriptionConfirmationの通知が届くので,SubscribeURLにアクセスしてサブスクライブを承認しておく❗️これで準備 OK〜

SubscriptionConfirmation の通知が届いた

AWS Lambda 関数を実行する

今回はサンプルとして必ずエラーになる AWS Lambda 関数 (Python) をデプロイした💡

deflambda_handler(event, context):
    raiseException('Always an error!')

さっそく awslocalコマンドを使って AWS Lambda 関数を実行する.

$ awslocal lambda invoke --function-name sandbox outputs.json
{"StatusCode": 200,
    "FunctionError": "Unhandled",
    "ExecutedVersion": "$LATEST"}

すると Webhook.site にアラートが届いた👌

Webhook.site にアラートが届いた

LocalStack Resource Browser

LocalStack Resource Browser で Amazon CloudWatch の Alarms を開くと,期待通りに AWS Lambda 関数 sandboxの Errors メトリクスが 1になっていた❗️

Errors メトリクス

お掃除

念のため Webhook.site の Moreメニューで Delete URLを実行しておくと安心かなと思う👌


Viewing all articles
Browse latest Browse all 937

Trending Articles