您可透過多種方式管理 Web 應用程式中的使用者工作階段,從僅限 Cookie 到分散式鍵值資料庫,包括伺服器到區域快取。將工作階段資料儲存於回應特定請求的 Web 伺服器中看似方便,因為存取資料不會產生網路延遲。但此方法的主要缺點在於,請求必須謹慎地路由,才能確保每個使用者僅與一個伺服器互動。另一個缺點是一旦伺服器當機,所有工作階段資料也會遺失。分散式記憶體內鍵值資料庫只需在網路延遲上付出微小的代價,即可解決這兩個問題。將所有工作階段資料儲存於 Cookie 通常已綽綽有餘;如果您計劃存放敏感資料,則使用伺服器端的工作階段更適合。

在本教學中,您將了解如何將 Amazon ElastiCache for Redis 用作工作階段管理的分散式快取,並且學習設定 ElastiCache 節點的最佳實務,以及如何處理應用程式的工作階段。

本教學中建立的 Amazon ElastiCache 節點符合 AWS 免費方案資格。

時間:120 分鐘

費用:符合免費方案資格

使用案例:工作階段存放區、工作階段快取、高可用性、即時應用程式

產品:Amazon ElastiCache for Redis、AWS 免費方案、Amazon EC2

對象:開發人員

等級:初階

上次更新日期:2019 年 7 月 25 日

*此預估費用假設您在整個教學中遵循建議的組態,並在 2 小時內終止所有資源。

**過去 24 小時內建立的帳戶可能還無法存取本專案所需的資源。

完成時間:20 分鐘

本教學結合針對 Web 開發的以 Python 和 Flask 微架構編寫的範例來說明部分機制。希望程式碼易於翻譯成您所選擇的語言。

您需要存取 EC2 執行個體以完成本教學。如果尚未執行,請遵循操作說明進行佈建。

確保執行個體的安全群組允許連接埠 5000 接收傳入的 TCP 連線。

存取 EC2 執行個體後,執行以下命令:

syntax: shell

$ 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

這會在連接埠 5000 上啟動 Flask 應用程式。若伺服器並未報告任何錯誤,則您應該能透過下列命令列,從 EC2 執行個體中的命令列瀏覽應用程式:

syntax: shell

$ curl http://127.0.0.1:5000/

命令列順利執行後,您便可擷取 EC2 執行個體的公有 IP 地址,並試著從電腦存取 Web 應用程式。

先決條件

若要從瀏覽器存取應用程式,需複製 EC2 執行個體的公有 DNS 名稱並加上連接埠號碼 5000。以螢幕擷取畫面中的地址為例,URL 為 http://ec2-54-175-201-152.compute-1.amazonaws.com:5000/。

您現在即可開始教學。