AWS Lambda でLine bot を作成する
Line bot を作成し、自動でメッセージを送受信する方法を解説します。
LINE公式アカウントを作成
下記手順を参考にLINE公式アカウントを作成します。
Messaging APIの利用を有効にする
LINE Official Account Manager でMessaging APIを設定する
以降の内容は以下の記事を前提とします
👆ここで発行したURLを下記のWebhookに設定します
※FUNCTION_NAME = 'line_bot_0812'
ここでは上記名称にてlambda関数を作成しました
Webhookを設定する
下記手順を参考にWebhookを設定します。 Webhook URLを設定する
-
API GatewayにデプロイしたURLを取得します。
-
LINE Developersコンソールへログインし、Webhookへ設定します。
-
Webhookを有効化します。

-
QRコードに表示されたQRコードを利用してAPIをお友達追加します。
- CloudWatchのログに送信された情報が記録されることを確認します。
from datetime import datetime, timedelta, timezone
import boto3
PROFILE_NAME = 'resources_dev'
ROLE_NAME = 'ResourcesEnvMainRole'
FUNCTION_NAME = 'line_bot_0812'
LOG_GROUP_NAME = f"/aws/lambda/{FUNCTION_NAME}"
session = boto3.Session(profile_name=PROFILE_NAME)
client = session.client("logs")
SINCE_MINUTES = 10
JST = timezone(timedelta(hours=9)) # JST (UTC+9)
start_time = int(
(datetime.now(JST) - timedelta(minutes=SINCE_MINUTES)).timestamp() * 1000
)
paginator = client.get_paginator("filter_log_events")
for page in paginator.paginate(
logGroupName=LOG_GROUP_NAME, startTime=start_time
):
for event in page.get("events", []):
dt = datetime.fromtimestamp(event["timestamp"] / 1000, JST)
print(f"[{dt.isoformat()}] {event['message'].rstrip()}")
[2026-08-12T10:07:58.167000+09:00] "body": "{\"destination\":\"U00000000000000000000000000000000\",\"events\":[{\"type\":\"message\",\"message\":{\"type\":\"text\",\"id\":\"000000000000000000\",\"quoteToken\":\"DUMMY_QUOTE_TOKEN_REDACTED\",\"markAsReadToken\":\"DUMMY_MARK_AS_READ_TOKEN_REDACTED\",\"text\":\"[REDACTED_TEXT_MESSAGE]\"},\"webhookEventId\":\"00000000000000000000000000\",\"deliveryContext\":{\"isRedelivery\":false},\"timestamp\":1786496877397,\"source\":{\"type\":\"user\",\"userId\":\"U00000000000000000000000000000000\"},\"replyToken\":\"00000000000000000000000000000000\",\"mode\":\"active\"}]}",
メッセージを送信する
メッセージ送信のため、チャンネルアクセストークンを取得します。
ユーザIDを指定してメッセージ送信
- 上記で確認したユーザIDを設定
- 上記で取得した
長期のチャネルアクセストークンを設定 - メッセージを送信する
- プッシュメッセージを送る
import json
import urllib.request
print("main_logic start")
access_token = "****************"
url = "https://api.line.me/v2/bot/message/push"
method = "POST"
headers = {
'Authorization': "Bearer " + access_token,
'Content-Type': 'application/json'
}
messages = [
{
"type": "text",
"text": "テストメッセージです!!"
}
]
params = {
"to": "U000000000000000000000000",
"messages": messages
}
request = urllib.request.Request(url, json.dumps(params).encode("utf-8"), method=method, headers=headers)
with urllib.request.urlopen(request) as res:
body = res.read()
print(body)
👇こんな感じでメッセージが届きます。
👇参考URL
- LINE Developersコンソールでチャネルを作成する
- LINE Developersコンソール
- LINE Official Account Manager
- Webhook URLを設定する
- チャネルアクセストークン
- 長期のチャネルアクセストークン
- メッセージを送信する
- プッシュメッセージを送る
[keywords] AWS lambda Line linebot
更新日:2026年08月15日

