こんにちは、@Manabu です。
以前、Twitter APIでPHPからポストを投稿する方法について記事にまとめました。
今回は、その処理をスケジュールで定期的に実行させる方法を考えました。
EC2内でコマンドを実行させるLambda関数を、EventsBridgeで実行させる方針です。
この記事は、以下のような方におすすめです。
ぜひ参考にしてください。
はじめに
今回は、EC2内で動いているLaravelで作成した、オリジナルコマンドでPHPからTwitter APIを使用してポストを投稿します。
EC2内のコマンドを実行するのは、AWSのLambdaでトリガーにEventBridgeを使用します。
Twitter APIの使い方は、以下の記事を参考にして下さい。
LambdaからEC2内でコマンドを実行させる方法については、以下の記事を参考にしてください。
EventBridgeとは?
EventBridgeは、AWSが提供するマネージドサービスで、アプリケーションやシステム同士をイベントを通じてつなげる仕組みです。
イベントとは「何かが起きた」という情報のことで、例えば「ユーザーが登録した」「新しいデータが追加された」など、アクションをきっかけに発生するデータです。
今回は、Cron式というものを使用して、定期的にスケジュールタスクを実行させるために使用します。
手順
Lambda関数はすでに作成済みとして進めていきます。
※Lambda関数を作成していない方は、はじめにの記事を参考に作成してみてください。
Lambdaからトリガーを選択
AWSのマネジメントコンソールから対象のラムダ関数を選択します。
「トリガーを追加」からEventBridgeを選択します。
EventBridgeを設定し追加
以下のような値を設定していきます。
今回ルールタイプは、スケジュール式を選択してCronでの時間指定を設定します。
Cron式を使用する場合、UTCでの時間指定が必要になるので、日本時間から9時間引いた値で設定してください。
※画面の値だと、毎日14時30分に実行するように設定しています。
追加まで進めると完成です。
実行後
14時30分に指定通り、コマンドが実行されツイートが行われていました。
まとめ
今回は、EventsBridgeでLambdaを定期実行させる方法について解説しました。
マネージドサービスであり簡単に実装できるので、定期実行させる必要がある場合はこちらを使用するのがおすすめです。