AWS java Spring

Spring BootでsessionにRedis Cluster(ElastiCache)

投稿日:

はじめに

AWS ElastiCacheのredisにセッションを格納することでステートレスな構成にすることが資格等で教科書的に紹介されることが多い印象です。実際Spring Bootでredisを使用する方法も多数紹介されています。

ただし、Spring Bootからクラスタ構成のredisへの接続に関する情報が少なかったのでサンプル(github)を作成しました。

※インフラはサンプルに含まれません。セキュリティグループ等 ネットワーク経路の確保にご注意ください。

ポイント

pom.xml

spring-session-data-redisとlettuce-coreを追加します。
サンプルではそれぞれ2.6.3と6.1.8.RELEASEを指定してます。

application.yml

Redis Clusterに関する情報を追加します。

spring.session

spring.session.store-typeにはredisを指定し、redisでのセッション管理にします。

spring.session.redis.configure-actionはnoneに設定します。ElastiCacheでconfigコマンドが禁止されていることへの対応でConfigureRedisAction.NO_OPと同意です。
参考:
【第20回】NoSQL(10)-Spring SessionとSpring Data Redisを用いたアプリケーション(1)
Spring Session Data RedisがどうやってRedis Keyspace Notificationsを有効にしているのかコードを読んでみた

spring.redis.host

spring.redis.hostにはAWSコンソール上に表示されている設定エンドポイントを入力します。
ポート番号は含めずにspring.redis.portへ記載してください

spring.redis.cluster.nodes

spring.redis.cluster.nodesにはAWSコンソール上に表示されているシャードとノードに表示される各ノードのエンドポイントを ,区切り でポート番号も含めて記載します。

spring.redis.ssl

spring.redis.sslにはsslを使用するかを指定します。「転送中の暗号化(in-transit encryption)」を有効化している場合はtrueを指定します。サンプルでは暗号化していないためfalseを指定してます。

spring.data.redis.repositories.enabled

repositoryとしては使用しないため、不具合防止のためにfalseを指定しておきます。

動作確認

サンプルの確認用エンドポイント

サンプルでは動作確認用にredisへ保存するエンドポイントと取得するエンドポイントを実装したコントローラを用意してます。

/set-session/save-valueで「save-value」をredisに保存します。

/get-sessionでredisから情報を取得します。

redisのデータ確認

redis-cliに接続できる環境を構築します。(環境構築はAWS公式手順が参考になります。)

環境構築後、前項の設定エンドポイントを指定して接続します。
※「転送中の暗号化(in-transit encryption)」を有効化している場合は「–tls」も必要です。

Keys *コマンドを発行し、データを確認します。

-AWS, java, Spring

Copyright© 若手SIerサラリーマンの独学メモ , 2022 All Rights Reserved Powered by STINGER.