こんにちは。Takitaです。
Webアプリで管理者が指定した日時にユーザーに通知を飛ばすと機能を実装する必要がありました。
その機能を実現するにあたり、以下のような仕組みで実現しました。
「指定した日時にユーザーに通知を飛ばす」くらいの用件であれば、
sidekiqやresqueといったgemを利用しなくても実現可能です。
(ActiveJobは指定した日時に指定したworkerを実行する機能は持っていないため、
上記のgemを利用するのが一般的かと思います。)
また、sidekiqやresqueといったgemを利用する場合は以下の対応も必要になるため、
今回のような場合ではメリット<コストになってしまいます。
Lambdaから毎分Railsにポーリングする方法について手順をまとめます。
CloudWatch イベント - スケジュール
を選択
var http = require ('http');
const HOST = 'www.google.com';
const PATH = '/index.html';
const AUTH = '';
exports.handler = function(event, context) {
http.get({ host: HOST, path: PATH}, function(res) {
console.log("response code: " + res.statusCode);
res.on("data", function(chunk) {
console.log(`response body: ${chunk}`);
context.done(null, `${chunk}`);
});
}).on('error', function(e) {
context.done('error', e);
});
};
テスト後に関数の下の画面に以下のように表示されれば成功
それぞれの環境に合わせてHOSTとPATHを修正して期待通りの動作をしているか確認してください。
const HOST = 'example.com';
const PATH = '/notify';