LoginSignup
2
7

More than 5 years have passed since last update.

AWS API Gatewayの設定方法

Last updated at Posted at 2018-02-28

 この記事でつまづいたAWS API Gatewayの設定方法の記録です。AWSのアカウントを持っていてLambda, CloudWatchが使えることを前提にしています。またLambdaはPythonで実装しました。

やりたいこと

 DialogflowのFulfillment先にAPI Gatewayを使用してLambdaで処理をし、適切なレスポンスを返したい。

設定方法

Lambdaの作成

 あらかじめAPIの処理に使いたいLambda関数を作成しておきましょう。ここではAPITestというLambda関数を作成して、コードは以下のシンプルなものにしました。何かエラーが起きてよくわからないときはprint等の出力がAWS Cloud Watchにログとして記録されるのでそれを見てなんとかしましょう。

lambda_function.py
import json

def lambda_handler(event, context):
    print(json.dumps(event))
    return {'speech': 'ちわーっす'}

APIの作成

 API Gatewayのページで+APIの作成をクリックしてAPIを作成します。初回の場合は今すぐ始めるをクリックします。
スクリーンショット 2018-02-23 12.53.10.png



新しいAPIを選択し、わかりやすいAPI名と説明を追加します。エンドポイントタイプは公式アナウンスを見ましたがよく分からなかったですしどっちを選んでも特に問題はなかったので好きな方を選びましょう。
スクリーンショット 2018-02-23 12.56.21.png



アクションからリソースの作成をクリックし、
スクリーンショット 2018-02-23 12.58.23.png



わかりやすいリソース名をつけてリソースの作成をクリックします。
スクリーンショット 2018-02-23 13.01.31.png



そのリソースを選択した状態で「アクション」→「メソッドの作成」をクリックします。メソッドはDialogflowだとPOSTリクエストなのでPOSTを選択し、チェックボタンをクリックします。
スクリーンショット 2018-02-23 13.03.04.png



ここでいう「統合」が何を統合しているのかはよく分かりませんが、POSTメソッドを投げたいLambda関数を指定します。LambdaリージョンはLambdaの編集ページの右上にあるARNというコードの中に書いてあります。「Lambdaプロキシ統合の使用」にデフォルトではチェックされていませんが、私は何を思ったかここにチェックを入れていたら何かの権限が無いとかで思うように動かず苦戦したので、チェックしないでください。Lambda関数が指定できたら保存→OKをクリックします。
スクリーンショット 2018-02-23 13.04.14.png



そのPOSTメソッドのテストをクリックし、何も入力せずテストボタンをクリックします。
スクリーンショット 2018-02-23 13.16.28.png



レスポンス本文に先ほどのLambda関数の返り値が入っていればOKです。
スクリーンショット 2018-02-23 13.19.08.png



「アクション」→「APIのデプロイ」をクリックし、好きなステージ名でデプロイします。デプロイとは「使えるようにする」みたいな意味です。
スクリーンショット 2018-02-23 13.23.02.png



これでデプロイしたステージのPOSTメソッドをクリックし、URLの呼び出し:https://~~のURLにPOSTリクエストを投げるとLambdaで処理して返してくれます。
スクリーンショット 2018-02-23 13.23.58.png

まとめ

 色々謎な設定が多いAPI Gatewayでした。Lambda関数のトリガーからAPI Gatewayを設定するとメソッドがANYになって二度手間になったり面倒なのでAPI Gatewayのページから作成したほうが簡単だと思います。このURLをDialogflowのFulfillmentに使うことで、Google Assistantの処理としてLambdaを利用する準備ができました。

補足

 今回は株式会社SmartHacksでの就業形インターンとして、この記事を作成しました。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7