シェアする

  • このエントリーをはてなブックマークに追加





【python】【sls】【lambda】デコレータで入力チェックする

シェアする

  • このエントリーをはてなブックマークに追加
  • 0

pythonのデコレータ使ってますか??

現場で、serverless frameworkでデプロイしたAPI Gateway + lambdaなメソッドで

HTTPヘッダに特定の値が設定されているか?をチェックする必要が出てきました。

そこで今回はそのチェックをデコレータでやる方法を採用してみました。

その内容をメモメモ。

デコレータ本体

デコレータそのものはこんな感じに書く。

classで書く方法もあるみたいですが、

個人的にはメソッドで定義しちゃうほうが、その関数名がそのまま

デコレータとして使えるのでよいかなーと思います。

wrapperで呼び元の関数を引数に受けて、

functool.wrapsデコレータで実際に呼び元関数を包んでしまうんですね。

実行イメージはこんな感じ。

呼び元の引数の値は*argsに格納されているので、そこから取得可能。

また、デコレータ自体に渡された引数は、header_checkの引数をそのまま使います。

個人的にちょっとハマったのは、

org_functionを実行するとき、呼び元が何かをreturnする場合には、

return org_functionとしてあげないといけなかったってところです。

色々なサンプル記事を見ましたが、どれもvoidなメソッドに

デコレートしててうまく動作しない原因を探すのに時間がかかってしまいました。

デコレータを使う

使い方はこんな感じ。

こうするとorg_hogeの値とヘッダーに格納されたhogeの値が

一致していなければ、HTTP 500でエラーとして返却され、

正しければ、mainの関数が処理されるということになります。

まとめ

デコレータ自体は結構簡単に作れたので、

事前処理とか、共通化できそうなところがあれば積極的に作っていきたいなー。

それでは!!

ブログランキング・にほんブログ村へ
にほんブログ村


人気ブログランキング

20代前半までは東京で音楽をやりながら両手の指以上の業種でアルバイト生活をしていましたが、某大手プロバイダのテレアポのバイトでPCの知識の無さに愕然とし、コンピュータをもっと知りたい!と思ったことをきっかけに25歳の時にITの世界に未経験で飛び込みました。
紆余曲折を経て、現在は個人事業主としてお仕事させていただいており、10年ほどになります。
web制作から企業システム構築、ツール開発など、フロントエンドもバックエンドもサーバーもDBAも依頼があれば何でもやってきた雑食系エンジニアです。

今風にいうとフルスタックエンジニアということになるのかしら??

→ 詳細プロフィールというか、生い立ちはこちら

→スキルシートをご覧になる場合はこちら

→お仕事のご依頼やお見積りなどお問い合わせはこちらから!

シェアする

  • このエントリーをはてなブックマークに追加

フォローはいかがですか?