メインコンテンツまでスキップ

AWS Lambda でLine bot を作成する

Line bot を作成し、自動でメッセージを送受信する方法を解説します。

LINE公式アカウントを作成

下記手順を参考にLINE公式アカウントを作成します。
Messaging APIの利用を有効にする

image image

LINE Official Account Manager でMessaging APIを設定する

LINE Official Account Manager

image image image

以降の内容は以下の記事を前提とします

👆ここで発行したURLを下記のWebhookに設定します ※FUNCTION_NAME = 'line_bot_0812'
ここでは上記名称にてlambda関数を作成しました

Webhookを設定する

下記手順を参考にWebhookを設定します。 Webhook URLを設定する

image
  • Webhookを有効化します。
    image

  • QRコードに表示されたQRコードを利用してAPIをお友達追加します。

image
  • 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\"}]}",

メッセージを送信する

メッセージ送信のため、チャンネルアクセストークンを取得します。

チャネルアクセストークン 長期のチャネルアクセストークン

image

ユーザ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)

👇こんな感じでメッセージが届きます。

image

👇参考URL

[keywords] AWS lambda Line linebot

AWS Lambda でLine bot を作成する

更新日:2026年08月15日

ITとソフトウェアの人気オンラインコースHP Directplus -HP公式オンラインストア-