4
3

More than 3 years have passed since last update.

lambdaでAPI Gateway経由のquerystringを取得する(Python)

Last updated at Posted at 2020-06-02

はじめに

AWS Lambdaを初めて触ってみました。
QueryStringを取得して、レスポンスを返すことがあっという間にできたのでメモです。

環境

最初は使っているWindowsにすでにインストールされているバージョンに合わせるためにPython3.6を使用しました。
ですが、Lambdaだとローカルでテストが不要なのでバージョンを合わせる必要はありませんでした。
AWS上で現時点でサポートされる最新のバージョンを使っていいと思います。
(処理がシンプルすぎるので当たり前ですが、Python 3.8で作り直してもうまく動きました。)

まとめ

event['queryStringParameters']['name'] でできます。

構築

AWS アカウント取得

なんと、ほぼ触ったことがなかったのでアカウント作成からやりました。

課金時の通知

課金されたら知りたいので、予算を登録して、$1で通知が来るように設定しました。
課金されてないので、通知が来るようになっているのかどうかよくわかりません。

Lambda の作成

サービスからLambdaを開きます。
お試しなのでサクッと作成します。
1.PNG

harowa できました。
2.PNG

API Gateway の作成

トリガーを追加をクリックして、さささーっと作ります。
3.PNG

REST APIにすると、POST,PATCH,DELETEとかを受け取れるんですかね。
やったことないのでわかりません!

出来ました。
4.PNG

もうインターネット上に乗ってることを確認する

ここで一度API GatewayとLambdaが連携できてることを実感しましょう。
API GatewayAPIエンドポイントにあるURLをクリックします。
5.PNG
どこがインターネット上に公開しちゃいけない情報なのかわからなかったので、よくわかんない情報は塗りつぶしました。

ブラウザ上に"Hello from Lambda!"って表示されたかと思います。
はやーって感じですね。

QueryStringを出力するように変更

Lambdaを開きます。
すると、下に関数のエディターが開きます。
6.PNG

ここで以下のようにソースをいじります。

querystring_sample
import json

def lambda_handler(event, context):
    # TODO implemen
    name = event['queryStringParameters']['name']
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!' + name)
    }

変更したら、Save!!
以下、変更点です。

  • name = event['queryStringParameters']['name']を追加
  • 'body':~のところに+ nameを追加しています。

eventの構造については、こちらのページを参考にしました。
他のサービスで AWS Lambda を使用する

あとは、API GatewayのAPIエンドポイントのURLの末尾に?name=wakoitと追加してアクセスすればOK!
ブラウザに"Hello from Lambda!wakoit"と表示されました!

その他

querystringを指定されなかった場合に、Internal Server Errorになってしまうので、実際に使う場合は例外処理などをきちんと入れる必要がありますね。

Lambdaのfunctionのテストを何も考えずに作るとエラーで機能しなくなるので、querystringを渡すようなテストを作る等の対応が必要そうです。
(そこまで試していません)

まとめ

サーバーレス楽しいですね。
インフラエンジニアとしては、ちょっと怖いですけど。
データベースプロキシの機能を使って、データベースに書き込むこともできそうなので、お手軽にAPIサーバーを建てることができそうですごいですね!

悪意のあるアクセスがいっぱい来て、Lambdaの無料枠消化されたら怖いのでfunctionは削除しましたとさ^^

4
3
1

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
4
3