💹

TradingViewのアラート通知をAWS(lambda)を使ってLINEへ通知する

2023/03/06に公開

はじめに

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のソースコードを設定します。

lambda_function.py
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