}}tweet_countでツイート数を取得できます。ツイート数が増えたら通知する仕組みを作ります。Ubuntu(64-bit)初期設定ローカルでNode.jsアプリを作成します。installGitHubとも連携しておきます。mainモジュールインストール3つのモジュールが必要です。API)を叩くために必要です。環境変数を利用するために必要です。APIのアクセスキーは環境変数として管理します。@aws-sdk/client-sns:SNSを関数から操作するために必要です。@aws-sdk/client-snsTwitterのAPIから情報を取得する関数utils.jsのファイルを作成して、getTweetCount関数を作成します。開始時刻と、終了時刻と、検索文字列を与える関数にします。APIにはAPIアクセスキーが必要ですが、秘密情報はGitHub等にpushしてはいけないので、環境変数化します。※.gitignoreに.envが含まれることを忘れずに確認する。dotenvモジュールを使って環境変数を利用できます。axiosを利用したAPI要求axiosモジュールを利用します。<ヘッダーなどのconfig>)という構文になっています。JavaScriptの非同期関数axiosを利用する場合は、関数全体をasyncで囲みます。get文を投げる処理にはawaitを付けます。することで、APIから情報を取得し終わる前にreturnしてしまうことを防げます。開始時刻と終了時刻を取得して、getTweetCountに渡します。今日のツイート数と昨日のツイート数を取得するので、getTweetCountは2回実行します。※きれいなコードではないので参考程度に。8601形式にする必要があるため、toISOString()を利用して変換しています。utils.jsの中にsetDateTime関数を追加します。現在時刻から、dayの日付分、miniteの分数分ずらした時刻オブジェクトを取得する関数です。time."というエラーが発生します。ent_timeは現在から10秒以上前にする必要があります。そこで今回は1分前~31分前のツイートを取得する方法をとります。カウント数は、オブジェクトから以下のように取り出すことができます。SNS)sns関数を作成し、aws-sdkの記法に従ってメッセージの送信命令を出せるようにします。TwitterからSMSを送る方法は以下の記事にまとめています。SNSを使ってLambda関数からショートメッセージ(SMS)を送る方法。Node.jsを利用したアプリを紹介します。`ツイート数が増えました。今日のカウント数:${todayCount}。}}sns関数をindex.jsから呼び出します。index;はLambdaでindex関数を実行するための記述です。非同期処理client.send(command)の処理にはawaitを付けます。そのため関数全体もasyncで囲む必要があります。メッセージの内容メッセージに、今日のツイート数と昨日のツイート数を出力したかったため、todayCountとyesterdayCountを引数で受け取っています。LambdaでNode.jsアプリを実行するLambda関数を作成し、作成したソースコードをアップロードします。具体的なやりかたは以下の記事を参照。Lambdaにアップロードして実行する、シンプルな方法を解説します。https://bunsugi.com/aws-lambda-deploy-s3Lambda関数にIAMロールを設定するのも忘れないようにします。EventBridgeを使ってLambdaを定期実行するAWSのマネジメントコンソールより、EventBridgeのルール作成します。Lambda関数にトリガーとして設定します。具体的なやり方は以下の記事にまとめています。【AWS】Lambdaで作成したサーバレスな処理を、定期的に起動させる方法を解説します。メジャーな方法としてEventBridge+Lambdaを使います。最寄りの路線(ここでは山手線)関連のツイートが増えると、スマホに通知が来るようになります。人身事故があったときは、通知が15分置きに来ます。2日連続で人身事故があったら通知されないじゃないか、とか、課題はいろいろありますがひとまず完成です。つまづいたところ簡単なアプリですが、、全ての工程でつまづきました。8601形式の時刻指定を間違えた(協定世界時(UTC)と日本標準時(JST))環境変数の勉強が必要だったLambda関数を実行するところ外部モジュールの入れ方がわからないイベントハンドラ(module.exports.handler)が無い環境変数を間違えたSNSでショートメールを送るところIAMロールが設定できていない問題Lambdaがタイムアウトする問題ES6記法が使えない問題SMSの使用上限がデフォルトで月1ドルだった問題など。Node.jsを使って作りました。AWSどころか、個人開発自体も初心者なので、まずは簡単なところから実施してみました。勉強中の方は一緒に頑張りましょう!間違いなどあればご連絡いただければと思います。事業会社のシステム部門で働きはじめて5年目の会社員。システム企画/要件定義/システムアーキテクチャ等。Twitter→@bun_sugi過去の記事についてはてなブログに掲載の記事(主にプログラミングメモ)についてはこちらに掲載しております。エンジニアを目指す日常ブログお問い合わせ|プライバシーポリシ。