はじめに
こんにちは。東京五輪のサッカー準決勝のチケット持ってましたが、無観客になっちゃいましたね いやー、もし再抽選で当たってたら行く行かないで迷っていたと思うので、自分はこれでよかったと思います。
さて、今回は先日作成したLambda関数をAPI Gatewayを通してAPIとして使えるようにしようと思います。
先日作成したLambda巻子はこちら
API Gatewayを使ってLambda関数を実行する
1. APIの作成
APIの作成
からAPIを作成します。
API名
はお好みで大丈夫です。URLに含まれたりはしません。
2. リソースの作成
アクション
プルダウンメニューからリソースの作成
を押下。
3. メソッド作成
2と同様にプルダウンメニューからメソッドの作成
を選択しGET
メソッドの設定を行います。
使用したいLambda関数名のページから関数のARN
をコピペします。
ここで、Lambdaプロキシ統合の使用
にチェックを入れるとクエリパラメータやパスパラメータなどをLambda側に渡すことができます。
4. APIのデプロイ
2と同様にプルダウンメニューからAPIのデプロイ
を選択し以下を参考にデプロイを行います。
デプロイ完了後APIアクセスのURLが表示されますが、まだアクセスしません
5. Lambda関数編集
Lambda関数がAPI Gatewayで返却できるレスポンス形式になっていないため(私の場合)その確認と編集を行います。
前述のLambdaでスクレイピングする記事のコードを以下のように編集します。
デプロイもお忘れなく
from selenium import webdriver
+ import json
def lambda_handler(event, context):
...
...
...
- return title
+ response = {
+ 'title': title
+ }
+ return {
+ 'statusCode': 200,
+ 'body': json.dumps(response)
+ }
6. Lambda上でテストする
Lambdaのテストのタブで、新しいイベント
からAmazon API Gateway Proxy
を選択します。
お好みで名前を付けて保存し、テストを実行します。
7. APIを叩いてみる
4で出力されたAPIのURLを叩いてみて、6と同じ結果が表示されれば完了です
おわりに
5をしないとエラーを吐き、つまづきポイントだと思います。
エラー出た際は、Lambda側でテストで通るかどうか試してみてください、ログも出ますので読めなり、ググるなりすればわかると思いますので
それでは!