ちょっと話題の記事

(レポート) CMP407: Cron としての Lambda: AWS Lambda での呼び出しのスケジュール #reinvent

2015.10.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Lambda as Cron

この記事は AWS re:Invent 2015、CMP407 - Lambda as Cron: Scheduling Invocations in AWS Lambdaのレポートです。

[slideshare id=53676328&doc=cmp407-151008042929-lva1-app6892]

スピーカーはSophosのGuy Daviesさんです。

IMG_3846

アジェンダ

  • Lambdaをスケジュールタスクにするには
  • ピュアなLambdaスケジューリングアーキテクチャ

なぜLambdaのスケジューリングが必要か

  • Lambdaはイベントドリブンコンピューティング
  • だが、必要な時がある
    • Logのクリーンアップ
    • バッチ
    • アラーム
    • インフラストラクチャのオートメーション

Option for scheduling Lambda function

案1

  • EC2インスタンスから crontab で叩く
  • 本末転倒感…

案2

Unrerailable Town Clock -> townclock.io

  • AwesomeなSNS Topic
  • コミュニティのサポートあり
  • 15分刻み

その他の案

  • SWF
  • Data Pipeline
  • Cloud Trail + S3
  • しかし、我々は、PureなLambdaを求めている

A pure Lambda scheduler

  • どのようにタイミングシグナルをAWSで作るか? -> Cloud Watch!
    1. CloudWatch メトリックのアラームをセット
    2. AlarmがALARMステータスになる
      • SNSのトリガでLambdaが呼ばれる
      • LambdaがMetricのStatusをinvertする
    3. AlarmがOKステータスになる
      • SNSのトリガでLambdaが呼ばれる
      • LambdaがMetricのStatusをinvertする
  • CloudWatch alarmを設定する
    • 1 Minutes Periodにする
    • Notification actionで、OK、ALARM、INSUFFICIENTを設定する
  • Putting it trigger
    • Lambda cron functionがCloudWatchのInvertとLambda functionのInvokeを行う

IMG_3847

Lambda cron functionの中身

  • CloudWatchにイベントを送る
  • MetricをInvert(0.0 <-> 1.0)する
  • Crontab的なLambda configurationを読む -> cron-parser ライブラリを使ってパース

デモ

Cron化したLambda functionを使ってWebページの時計を更新する、というデモを行っていました。

IMG_3849