ウェブアプリケーションでユーザーセッションを管理するには、クッキーのみを利用する方法からサーバーローカルキャッシュを含む分散キー/値データベースに至るまで、さまざまな方法があります。特定のリクエストに応答するウェブサーバーにセッションデータを保存すると、データにアクセスしてもネットワークのレイテンシーが発生しないため、便利な方法だと思えるかもしれません。主な欠点は、各ユーザーが 1 つのサーバーでのみ対話できるように、リクエストを慎重にルーティングする必要があることです。もう 1 つの欠点は、サーバーがダウンすると、すべてのセッションデータも失われることです。分散型のインメモリキー/値データベースは、小規模のネットワークレイテンシーといった少しの代償を払って両方の問題を解決できます。ほとんどの場合、すべてのセッションデータをクッキーに保存するだけで十分です。機密データを保存する場合は、サーバー側のセッションを使用することをお勧めします。

このチュートリアルでは、Amazon ElastiCache for Redis をセッション管理用の分散キャッシュとして使用する方法を学びます。また、ElastiCache ノードを構成するためのベストプラクティスと、アプリケーションからのセッションを処理する方法についても学びます。

このチュートリアルで作成された Amazon ElastiCache ノードは、AWS 無料利用枠の対象です。

時間: 120 分

コスト: 無料利用枠の対象

使用例: セッションストア、セッションキャッシュ、スケーリング、高可用性、リアルタイムアプリケーション

製品: Amazon ElastiCache for Redis、AWS 無料利用枠、Amazon EC2

対象者: 開発者

レベル: 初心者

最終更新日: 2019 年 7 月 25 日

*この見積もりでは、ユーザーがチュートリアル全体で推奨される設定通り、2 時間以内にすべてのリソースを終了することを前提としています。

**過去 24 時間以内に作成されたアカウントは、このプロジェクトに必要なリソースへのアクセス権をまだ付与されていない可能性があります。

所要時間: 20 分

このチュートリアルでは、Python で記述された例とウェブ開発用の Flask マイクロフレームワークを使用して、いくつかのメカニズムを説明します。順調に進めば、簡単に選択した言語にコードを変換できます。

このチュートリアルを完了するには、EC2 インスタンスにアクセスする必要があります。まだ実行していない場合は、次の手順通りにプロビジョニングします。

そのインスタンスのセキュリティグループがポート 5000 での着信 TCP 接続を許可していることを確認します。

EC2 インスタンスにアクセスしたら、次のコマンドを実行します。

構文: シェル

$ sudo yum install git
$ sudo yum install python3
$ sudo pip3 install virtualenv
$ git clone https://github.com/aws-samples/amazon-elasticache-samples/
$ cd amazon-elasticache-samples/session-store
$ virtualenv venv
$ source ./venv/bin/activate
$ pip3 install -r requirements.txt
$ export FLASK_APP=example-1.py
$ export SECRET_KEY=some_secret_string
$ flask run -h 0.0.0.0 -p 5000 --reload

これにより、Flask アプリケーションがポート 5000 で起動します。サーバーがエラーを報告しない場合は、EC2 インスタンスのコマンドラインから次の行を使用してアプリケーションにアクセスできます。

構文: シェル

$ curl http://127.0.0.1:5000/

この機能により、EC2 インスタンスのパブリック IP アドレスをフェッチして、コンピュータからウェブアプリケーションにアクセスすることができます。

前提条件

ブラウザからアプリケーションにアクセスするには、EC2 インスタンスのパブリック DNS 名をコピーし、ポート番号 5000 を追加します。たとえば、スクリーンショットのアドレスを指定すると、URL は http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/ になります。

これで、チュートリアルを開始する準備が整いました。