https://d226lax1qjow5r.cloudfront.net/blog/blogposts/number-verification-in-python-with-aws-lambda-and-vonage/Blog_Microservice_Lambda_1200x600.png

AWS LambdaとVonageを使ったPythonによる数字の検証

最終更新日 May 5, 2021

所要時間:6 分

この投稿では Verify 2FA clientをマイクロサービスとして AWS Lambdaにデプロイします。このデプロイは Githubで利用可能なPythonアプリケーションで公開されている フラスコサーバーレス.

二要素認証(2FA)としても知られる多要素認証は、ほとんどのウェブサービスで実装されています。これは、サービスにアクセスする人が正しい人であることを確認するための、追加レベルのセキュリティを提供します。認証の追加ステップでは、ユーザーが登録したモバイル・デバイスにSMSを使ってランダムなコードを送信します。ユーザーが送信されたコードを入力すると、認証が行われる。

セキュリティーに関するあらゆることと同様、2FAは完全防止ではない。しかし、アカウントを保護するのに有効なセキュリティ・レイヤーを追加することはできる。

前提条件

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

セットアップ方法

をクローンする。 をクローンしてください。をクローンし、新しく作成したディレクトリに移動してください。

環境

名称変更 .env.default.envに変更し、値を NEXMO_API_KEYおよび NEXMO_API_SECRETに値を追加します。

使用方法

まず、プロジェクト・ルート内に virtualenvをプロジェクト・ルートに作成する。次に、以下のようにアクティベートする:

virtualenv venv --python=python3 source venv/bin/activate

次に npmを実行し、プロンプトに従ってセットアップを行う。ほとんどの場合、変更したいものがなければデフォルトを選択する。また、ServerlessとLambdaがFlaskアプリと連携できるように、npmを使って開発に必要な依存関係をいくつかインストールする。以下のコマンドを使用して、このステップを完了する。

npm init npm install --save-dev serverless-wsgi serverless-python-requirements

ここで pipから必要なPythonの依存関係をインストールします。 requirements.txtからインストールする必要があります。

pip install -r requirements.txt

ランニング・ローカル

これで virtualenvをセットアップすれば、AWS Lambdaにデプロイする前にローカルでアプリを実行し、テストすることができる。以下のコマンドでアプリを提供できる:

sls wsgi serve

デフォルトでは、システム上でローカルに実行すると、アプリは http://localhost:5000.を押すとアプリが終了する。 Ctrl+cを押すと終了します。

ラムダへのデプロイ

上記がすべて正常に終了すると サーバーレスを使ってアプリを AWS Lambda.

sls deploy

デプロイ後、API Gateway経由でアプリケーションにアクセスするために必要なURLを受け取ります。次のステップのためにURLをメモしておいてください。

重要重要: サンプルアプリケーションは、そのままでは認証や検証を行いません。配備後に提供される URL にアクセスできる人なら誰でもアクセスできます。これを行うと、Vonageアカウントに予期しない請求が発生する可能性があります。そのため、アプリをアクティブにしたままにする場合は、アプリを保護してください。

利用可能なエンドポイント

このクライアントでは、4つのURLエンドポイントが利用可能です:

  • /

    • 何のアクションも実行しないが、素早くテストする方法を提供する。

  • /request/<to_number>/<brand>

    • に送信される2FAコードを要求する。 <to_number>に送信される2FAコードを要求する。 <brand>の文字列が含まれていなければならない。

  • /check/<request_id>/<code>

    • を渡すことで、2FAコードをチェックすることができます。 <request_id><code>/checkエンドポイントに渡します。

  • /cancel/<request_id>

    • 2FAコードを紛失した場合、リクエストをキャンセルする必要が生じることがある。その場合は <request_id>エンドポイントに /cancelエンドポイントに含めることで、新しいコードを要求するための5分間の待ち時間を回避できます。

例を挙げよう:

デプロイプロセスが提供するURLにアクセスする。 Serverlessにアクセスしてください。以下に、リクエストの例をいくつか示します:

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/

エンドポイントは /エンドポイントは一般的な情報メッセージを返します。

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/request/15554443333/Vonage

エンドポイントは /requestエンドポイントは request_idを持つテキストを受け取るはずです。 code.

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/check/9807adsf0sae89fu0se87r0sf/654321

エンドポイントは /checkエンドポイントは検証成功メッセージを event_id.

ステップ /requestステップでは、5分以内に /checkリクエストすることができます。それができない場合は、次のURLで /cancelを発行することができる。

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/cancel/9807adsf0sae89fu0se87r0sf

Virtualenvの停止

を終了するには virtualenvを終了するには、必要なときに解除することができます。

deactivate

次のステップ

何か質問があったり、問題が発生した場合は、以下までご連絡ください。 までご連絡ください。にご連絡いただくか VonageコミュニティSlackチームにお問い合わせください。頑張ってください。

シェア:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam Culpヴォネージの卒業生

アダムは開発者兼コンサルタントで、ウルトラランニング、ブログ、そして指導と支援への飽くなき欲求を持ちながら、他の人々が素晴らしいことを成し遂げるためにテクノロジーを手なずけるのを助けることを楽しんでいる。