TradingViewのアラート通知をAWS(lambda)を使ってLINEへ通知する
はじめに
TradingViewのアラート通知は、「Webhook URL」を指定できるので、AWS(lambda)を利用してPOSTリクエストを受信し、LINEへ通知するbotを作成してみました。
構成イメージ
前提条件
- TradingViewの有料アカウント(Pro以上)を取得済みであること。
- AWSのアカウントを取得済みであること。
- LINEのアカウントを取得済みであること。
TradingViewのアカウントを未作成の場合は、こちらからご登録下さい。
LINE Notifyへログイン
こちらのリンクからLINE Notifyのぺージに遷移し、「ログイン」ボタンを押下する。
LINEアカウントのメールアドレスとパスワードを入力する。
ログイン後、マイページの下記ページへ移動後、「トークンを発行する」ボタンを押下する。
LINE Notifyのアクセストークンの発行
トークン名と通知先のトークルームを指定する。
今回は、事前に作成した「TradingViewアラート」というグループのトークルームを指定し、「発行する」ボタンを押下する。
LINE側の設定は、こちらで完了。
AWS(lambda)の設定
AWSにログイン後、TradingViewのアラート通知を受信するlambdaの関数を作成する。
以下の画像のように設定を進めて行きます。
今回は、ランタイム「python」を使用します。
lambda_function.pyの設定
pythonのソースコードを設定します。
import logging
import os
import requests
from dataclasses import dataclass, asdict
# LINE APIを定義
LINE_NOTIFY_TOKEN = os.environ['LINE_NOTIFY_TOKEN']
NOTIFY_URL = 'https://notify-api.line.me/api/notify'
logger = logging.getLogger()
logger.setLevel(logging.INFO)
@dataclass(frozen=True)
class Response:
statusCode: int
body: str
def lambda_handler(event, context):
logger.info(event)
body = event.get('body', '')
# LINE通知
send_line_notify(LINE_NOTIFY_TOKEN, body)
return asdict(Response(200, 'success'))
def send_line_notify(lineNotifyToken, text) -> str:
"""
LINE Notifyに通知する
Parameters
----------
lineNotifyToken : str
LINE Notify Token
text : str
投稿メッセージ
"""
headers = {
'Authorization': f'Bearer {lineNotifyToken}'
}
data = {
'message': f'message: {text}'
}
res = requests.post(NOTIFY_URL, headers=headers, data=data)
return(res.status_code)
環境変数の設定
LINE Notifyのアクセストークンを環境変数に設定します。
環境変数 | 設定値 |
---|---|
LINE_NOTIFY_TOKEN | LINE Notifyのアクセストークンを設定する |
レイヤーの設定
ARN を指定 レイヤーを追加します。
マージ順序 | 名前 | バージョン ARN |
---|---|---|
1 | Klayers-p38-requests | arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p38-requests:8 |
関数URLの取得
関数URLのTradingViewのアラート通知のWebhookに、指定します。
動作確認
設定したグループのトークルームにTradingViewで設定したアラートが投稿されることを確認します。
あとがき
今回は、お手軽に設定できるAws Lambdaの関数URLを利用しましたが、セキュリティ観点から送信元のIPアドレス制限をする必要があります。
その場合は、API Gateway の設定をする必要があります。
次回そちらの設定を更新したいと思います。
尚、TradingViewの送信元IPアドレスは、以下の仕様となっています。
※参考URL
- 52.89.214.238
- 34.212.75.30
- 54.218.53.128
- 52.32.178.7
Discussion