概要
- AWS LambdaとDynamoDBを使ってLINE Botを作ったので、その備忘録の1つです。
- この記事では、LINE BotのWebHookのためのAPI Gatewayの作成・設定方法を説明します。
環境
- コンソールでの作業のため、環境構築なし。
API Gatewayの作成方法
- AWSへログインし、API Gateway ->
APIを作成をクリック
- APIタイプを選択 -> REST API ->
構築をクリック
-
You are not authorized to call DescribeVpcEndpointsとエラーメッセージが出ますが無視でOK。
- 以下の選択・入力をして、
APIの作成をクリック。-
RESTを選択 -
新しいAPIを選択 -
API名を入力。今回はapigateway-linebot-sampleとします。 - エンドポイントタイプを
リージョンを選択
-
- アクション ->
メソッドの作成をクリック
- リストから
POSTを選択し、チェックマークをクリック。
- 以下の内容を選択・入力し、
保存をクリック。- 統合タイプ :
Lambda関数を選択 - Lambda プロキシ統合の使用 :
チェックを入れる - Lambda リージョン : 任意のリージョン(今回は
ap-northeast-1) - Lambda 関数 : 今回のLINE Bot用に作成した関数(今回は
linebot_auto_reply_sample) - デフォルトタイムアウトの使用 :
チェックを入れる
- 統合タイプ :
- 『API Gatewayに、Lambda関数を呼び出す権限を与えようとしています』と表示されますので、
OKをクリック。
- 次に、CORSを有効化します。
- アクション ->
CORSの有効化をクリック
- 選択肢はデフォルト設定のままで、
CORSを有効にして既存のCORSヘッダーを置換をクリック。
- メソッド変更の確認メッセージが表示されるので、
はい、既存の値を置き換えますをクリック。
- CORSが有効化されます。
- 次に、セキュリティ対策として、LINEからのリクエスト以外を受け付けないようにする設定をします。
-
POSTをクリック。
-
メソッドリクエストをクリック
- 以下の設定を入力し、
メソッドの実行をクリック。- リクエストの検証 :
クエリ文字列パラメータおよびヘッダーの検証 - HTTP リクエストヘッダー : ヘッダーを追加する -> 名前は
x-line-signature, 必須にチェック
- リクエストの検証 :
- メソッドリクエストのヘッダーに
x-line-signatureが追加されていることがわかります。 - これにより、
x-line-signatureがヘッダーに含まれていない場合(=LINE以外からのリクエストの場合)は、リクエストを拒絶し、Lambdaの不正な呼び出しを防ぐことができます。
- 次に作成したAPI Gatewayをデプロイします。
- 何か設定を変更した際も、デプロイしないと反映されないので、ご注意ください。
- POST -> アクション ->
APIのデプロイをクリック
- 以下の設定を行い、
デプロイをクリック- デプロイされるステージ : 新しいステージ
- 以前作成したステージがある場合はそちらを使用してもOK。状況に応じて選択してください。
- ステージ名 : 何でもOK(今回は
develop)
- デプロイされるステージ : 新しいステージ
- デプロイすると、
ユーザーは、ウェブアプリケーションファイアウォール (WAFV2) の ListWebACL および AssociateWebACL 権限を持っていません。WAF 以外のステージ設定は引き続き変更できます。とエラーメッセージが表示されますが、無視でOK。
- デプロイが成功し、エンドポイントURLが作成されました。
- このURLを、LINE BotのWebhookに設定すればOKです。
- LINE開発コンソールへログイン -> 作成したLINE Bot -> Messaging API設定 -> Webhook設定に入力
- 以上で、LINE BotのWebHookのためのAPI Gateway作成方法は完了です。


















