LINE Messaging APIのWebhookからAWS API Gatewayにアクセスできない

実現したいこと

LINE Messaging APIからAWS API Gateway経由でLamdaにメッセージを連携し、鸚鵡返しするLINE Botを作成しようとしています。

前提

LINE Messaging APIのWebhook URLに、Lambdaの関数URLを設定すると検証に成功し、LINEのチャットからも期待通り鸚鵡返しされますが、
Lambda実行のトリガーとなるAPI Gatewayを作成し、デプロイした後に発行されるURLを指定すると、403 Forbiddenになります。
API Gatewayの設定は以下の通りです。

■APIタイプ:REST
■メソッドタイプ:POST
■メソッドリクエスト
認可:NONE
API キーは必須です:False
リクエストバリデーター:クエリ文字列パラメータおよびヘッダーを検証
SDK オペレーション名:メソッドとパスに基づいて生成されました
リクエストパスなし
URL クエリ文字列パラメータなし
HTTP リクエストヘッダー:x-line-signature 必須
リクエスト本文なし

■統合リクエスト
統合タイプ:Lambda
Lambda プロキシ統合:True

発生している問題・エラーメッセージ

デプロイ後に発行されるURLをWebhookURLに設定し、検証ボタンを押すと、以下のメッセージが発生します。

ボットサーバーから200以外のHTTPステータスコードが返されました。(403 Forbidden) LINEプラットフォームから送信されたHTTP POSTリクエストに対してボットサーバーがステータスコード200を返すことを確認してください。詳しくは、Messaging APIリファレンスのレスポンスを参照してください。

該当のソースコード

Lamda関数は以下の通りです。
言語:Python3.12

コード

import os, sys from linebot import (LineBotApi, WebhookHandler) from linebot.models import (MessageEvent, TextMessage, TextSendMessage,) from linebot.exceptions import (LineBotApiError, InvalidSignatureError) line_bot_api = LineBotApi(os.getenv('LINE_CHANNEL_ACCESS_TOKEN')) handler = WebhookHandler(os.getenv('LINE_CHANNEL_SECRET')) def lambda_handler(event, context): signature = event["headers"]["x-line-signature"] body = event["body"] ok_json = os.environ["ok_json"] error_json = os.environ["error_json"] @handler.add(MessageEvent, message=TextMessage) def message(line_event): text = line_event.message.text line_bot_api.reply_message(line_event.reply_token, TextSendMessage(text=text)) try: handler.handle(body, signature) except LineBotApiError as e: logger.error("Got exception from LINE Messaging API: %s\n" % e.message) for m in e.error.details: logger.error(" %s: %s" % (m.property, m.message)) return error_json except InvalidSignatureError: return error_json return ok_json

環境変数は設置済み
line-bot-sdkのパッケージはレイヤーに設定済

コメントを投稿

0 コメント