見出し画像

LambdaでLINE Notifyを使ってみる #423

AWS LambdaとLINE Notifyを組み合わせて、LINEに通知する仕組みを作ってみました。

ゴールイメージです↓

大きく以下の手順で実装できます。

  1. LINE Notifyのトークンを取得する

  2. APIを叩くコードを書く(ここではPython)

  3. それを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なども使って自動実行されるようにしたいですね。

ここまでお読みいただきありがとうございました!



参考


この記事が気に入ったらサポートをしてみませんか?