LambdaでLINE Notifyを使ってみる #423
AWS LambdaとLINE Notifyを組み合わせて、LINEに通知する仕組みを作ってみました。
ゴールイメージです↓
大きく以下の手順で実装できます。
LINE Notifyのトークンを取得する
APIを叩くコードを書く(ここではPython)
それをLambda関数にする
LINE Notifyのトークンを取得する
LINE Notifyのトークンはこちらのブログに記載してくださっている方法で簡単に取得できます。
APIを叩くコードを書く
Pythonで実装してみます。Lambdaで外部ライブラリを使うのは手間がかかるので、Pythonの標準ライブラリでありurllibのrequestを使います。
URLはLINE Notifyの公式ドキュメントで指定されている'https://notify-api.line.me/api/notify'です。
以下のようになりました。
import urllib.request
TOKEN = 'XXXXXXXXXXXXXXXXX'
api_url = 'https://notify-api.line.me/api/notify'
contents = 'テストだよーー'
request_headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer' + ' ' + TOKEN
}
params = {'message': contents}
# data引数はbytes型を期待しているためbytes型に変換
data = urllib.parse.urlencode(params).encode('ascii')
req = urllib.request.Request(api_url, headers=request_headers, data=data, method='POST')
conn = urllib.request.urlopen(req)
これをローカルで実行しても通知は届きます。
作ったコードをLambda関数にする
これをLambdaで動かしてみます。
Lambda関数の作成方法はこちらのブログを参考にさせていただきました。
関数部分を抜き出すと以下です。
import json
import urllib.request
# line notify
TOKEN = 'XXXXXXXXXXXXXXXXX'
api_url = 'https://notify-api.line.me/api/notify'
contents = 'テストだよーー from lambda'
request_headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer' + ' ' + TOKEN
}
params = {'message': contents}
def lambda_handler(event, context):
# data引数はbytes型を期待しているためbytes型に変換
data = urllib.parse.urlencode(params).encode('ascii')
req = urllib.request.Request(api_url, headers=request_headers, data=data, method='POST')
conn = urllib.request.urlopen(req)
Lambdaで実行する処理はlambda_handler()に定義します。
これでLambdaから実行できるようになりました。
次はEventBridgeなども使って自動実行されるようにしたいですね。
ここまでお読みいただきありがとうございました!
参考
この記事が気に入ったらサポートをしてみませんか?