ゆとりSEは副業がしたい

ゆとりSE

RPAやPythonをはじめとした情報系の発信やガジェットの紹介などがメインです

【API Gateway】AWS初心者がPythonのrequestsでAPI GatewayとLambdaを使ったら便利すぎた件

f:id:oichiki:20210208202014p:plain

APIを使いたい

最近Webアプリを作る学習?をしてることもあり、Python上で外部のAPIを利用することが多くなりました。

今回は、AWSAPI Gateway宛にリクエストを飛ばして、Lambdaでなんらかの処理を行い、結果を受け取るまでの流れを書き残しておきます。

px.a8.net

Lambda関数の作成

今回はAWSのユーザ設定等が完了しており、すぐに開発に取り掛かれる状態を前提として記載していきます。

マネジメントコンソールからLambdaを選択し、関数を作成します。

f:id:oichiki:20210208190754p:plain
Lambda関数を作成


f:id:oichiki:20210208190905p:plain
Lambda関数の作成


作成が完了すると、このような画面が出てきます。ここからすでにあるAPI Gatewayをトリガーに設定してもいいのですがまだ作成していないので、今回はAPI Gatewayを作成するときにLambda関数を指定してあげることで連結を行います。またLamdaの関数上でAPI Gatewayにreturnするため、送信先は特に設定しません。

f:id:oichiki:20210208191129p:plain
Lambda関数の編集画面

今回は動作確認だけなので、とくに処理は記載しません。本来は、リクエストをlambda_function.pyで受け何らかの処理を施し、API Gatewayの渡していく流れになると思います。

APIの作成

次に実際にPythonのプログラムから利用するAPIを作成します。AWSのサービスからAPI Gatewayを選択しAPIを作成をクリックします。今回はREST APIを選択します。

f:id:oichiki:20210208195422p:plain
APIの作成

次にアクションからメソッドを追加します。リソースを作成してその中にメソッドを作成するのが良いですが、今回は特に作りこむ予定はないので、直下に作成してしまいます。今回はGETで作成します。
f:id:oichiki:20210208195643p:plain
リソースの作成

セットアップは以下のようにしています。マッピング等は設定方法がイマイチわかっていないので、プロキシ統合にチェックを入れておきました。(チェックすると勝手にしてくれる?)Lambda関数は先ほど作成した、hatena_testを選択しています。
テストをして問題なくレスポンスが帰ってくることを確認したら、アクションからAPIをデプロイしておきます。
f:id:oichiki:20210208201830p:plain
APIのテスト

PythonAPIを利用する

最後にPythonから実際にAPIを利用できるかどうかを確認します。APIのエンドポイントはステージから確認できました。

f:id:oichiki:20210208200722p:plain
エンドポイント
このエンドポイントに対しrequestsのGETで呼び出しを行います。実際に利用したコードは以下になります。

import requests
res = requests.get("エンドポイントのURL")
print(res.text)


これでレスポンスのボディにある「Hello from Lambda!」が表示されます。

今回は検証のためメッセージの確認まででしたが、API GatewayとLambdaを使用すれば、様々な機能を作れるということが分かりとても勉強になりました。

おそらくこれからどんどんAWSを利用する機会は増えて来ると思いますので、積極的に利用していけるようにしたいと思います。