ひさびさにIFTTTをいじってたら、Maker Channelができたことを知ったので、AWS LambdaとIFTTTでpush通知を実現してみた。
今回は単純に Hello from Lambda!
をLambda->IFTTT経由で通知させてみる。
Maker ChannelはWebhookURLを提供してくれるので、そこにGETかPOSTでリクエストをするとトリガーとなってくれる。
IFTTT側の設定
- https://ifttt.com/maker でSecretKeyを取得する
- Trigger(this)を「Maker」、Action(that)を「IF Notifications」でRecipeを作る
- このとき入力したevent nameはWebhookURLの一部になる
- RecipeのNotification(push通知内容)に
{{Value1}}
を入力して保存する
Lambda(Node.js)のコード
console.log('Loading function');
var https = require('https');
var iftttEventName = 'sample_lambda_event'; // IFTTTで作ったRecipeのEventName
var iftttSecretKey = 'YOUR SECRET KEY'; // MakerChannelのSecretKey
var body = JSON.stringify({ value1: 'Hello from Lambda!' });
var options = {
hostname: 'maker.ifttt.com',
path: '/trigger/'
+ iftttEventName
+ '/with/key/'
+ iftttSecretKey,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': body.length
}
};
exports.handler = function(event, context) {
https.request(options, function (res) {
res.setEncoding('utf8');
res.on('data', function(str) {
console.log(str);
});
context.succeed(res.statusCode);
}).write(body);
};
注意点
IFTTTに渡せる変数は value1
value2
value3
のみなので注意
実際のpush通知キャプチャ
まとめ
IFTTTのMakerChannel便利!
今回は決まった文字列を通知させただけだったのでLambdaである必要性はないですが、イベントと連動して何かを通知させるのもいいし、Lambdaがcron対応したので凝ったリマインダーみたいのも作れていろいろ有用そうー
ひとりごと
LambdaのRuby対応はやくこないかなー(´・ω・`)