概要
- 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作成方法は完了です。