https://a.storyblok.com/f/270183/10735/350b35d9b7/blog_microservice_lambda_1200x600.png

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

最終更新日 May 5, 2021

所要時間:6 分

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

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

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

前提条件

セットアップ方法

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

環境

名称変更 .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ヴォネージの卒業生

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