Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon SNS からのメールをFirehoseとLambdaでまとめる / Deal many Amazon SNS mails with Firehose and Lambda

shimo
April 10, 2022
650

Amazon SNS からのメールをFirehoseとLambdaでまとめる / Deal many Amazon SNS mails with Firehose and Lambda

shimo

April 10, 2022
Tweet

Transcript

  1. 自己紹介 名前 : shimo : @shimo_s3 職業 : フリーランスのITエンジニア AWS:

    認定12冠、Community Builder 好き : 自動化、データ分析、サーバレス 3
  2. 動機 「人の困り」 「自分が知らなかったので使ってみたい」 4 Amazon SNSでエラー通知受けてるけど、大量に来すぎ。まとめたい。。。 イベント@2022/1/26 2021 Amazon SNS

    主要Update 「Amazon SNS が、Kinesis Data Firehose サブスクリプションを介してメッセージの アーカイブと分析のサポートを追加 (2021/01/12)」 @Twitter
  3. SNSのデータをLambdaでまとめる jsonデータからPythonで抽出 7 data = { "Type": "Notification", "MessageId": "xxxx-xxxx",

    "TopicArn": "arn:aws:sns:region:account-id:Topic", "Subject": "sub1", "Message": "This is the message 1!", "Timestamp": "2022-02-03T08:31:11.031Z", "UnsubscribeURL": "(略)" } json_obj = json.loads(data) json_obj["Timestamp"] json_obj["Message"] S3に保存されるデータの例 (SNS Publish 1回分) 任意の項目を抽出
  4. まとめ 大量のSNSメールをまとめて取得することができた • FirehoseでバッファしてS3に置いて、Lambdaをトリガして整形し、別SNSでユーザに送信 • 時間単位で自由にCRON設定して、EventBridgeでLambdaを呼び出す ◦ 呼ばれたLambdaがEventBridegeからCRON scheduleを取得して、直前の呼び出し時 間、未処理分を逆算

    ◦ Firehose→S3のデフォルト フォルダ構成をそのまま活用 (※本スライドの内容は、コードも含めて Mediumに投稿済みです) • How to deal many Amazon SNS messages with Firehose and Lambda • Hourly Query Firehose S3 bucket with EventBridge and Lambda 9