lambdaでAPI Gateway経由のquerystringを取得する(Python)
はじめに
AWS Lambdaを初めて触ってみました。
QueryStringを取得して、レスポンスを返すことがあっという間にできたのでメモです。
環境
最初は使っているWindowsにすでにインストールされているバージョンに合わせるためにPython3.6
を使用しました。
ですが、Lambdaだとローカルでテストが不要なのでバージョンを合わせる必要はありませんでした。
AWS上で現時点でサポートされる最新のバージョンを使っていいと思います。
(処理がシンプルすぎるので当たり前ですが、Python 3.8
で作り直してもうまく動きました。)
まとめ
event['queryStringParameters']['name']
でできます。
構築
AWS アカウント取得
なんと、ほぼ触ったことがなかったのでアカウント作成からやりました。
課金時の通知
課金されたら知りたいので、予算を登録して、$1で通知が来るように設定しました。
課金されてないので、通知が来るようになっているのかどうかよくわかりません。
Lambda の作成
サービスからLambdaを開きます。
お試しなのでサクッと作成します。
API Gateway の作成
REST API
にすると、POST,PATCH,DELETE
とかを受け取れるんですかね。
やったことないのでわかりません!
もうインターネット上に乗ってることを確認する
ここで一度API GatewayとLambdaが連携できてることを実感しましょう。
API Gateway
のAPIエンドポイント
にあるURLをクリックします。
どこがインターネット上に公開しちゃいけない情報なのかわからなかったので、よくわかんない情報は塗りつぶしました。
ブラウザ上に"Hello from Lambda!"
って表示されたかと思います。
はやーって感じですね。
QueryStringを出力するように変更
Lambda
を開きます。
すると、下に関数のエディターが開きます。
ここで以下のようにソースをいじります。
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は削除しましたとさ^^
Author And Source
この問題について(lambdaでAPI Gateway経由のquerystringを取得する(Python)), 我々は、より多くの情報をここで見つけました https://qiita.com/wakoit/items/1faefbadc20550578d08著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .