HerokuからElastiCache(Redis)へのアクセス

既存のWebサービスでセッションストアにAWSのElastiCache(Redis)を使用しているが、それに対し新たに立ち上げるHerokuサーバからアクセスできないかを検討した。

まず第一に、ElastiCache上のRedisではパスワード認証を行うことができない。

Amazon ElastiCache よくあるご質問 | アマゾン ウェブ サービス(AWS 日本語)

そのため、セキュリティグループによって制限をかけることになる。

セキュリティグループの中でIPアドレスを指定して該当のHerokuアプリを特定できればよいが、Herokuの場合IPアドレスは定期的に変更されてしまうため、これはできない。

Heroku自体もベースはAWSであるため、該当のHerokuアプリに紐づくセキュリティグループというのが存在するのではないかと思ってしまうが、 そういったものは存在しない。Heroku全体のセキュリティグループは存在するが、それを許可してしまうとすべてのHerokuアプリからアクセスが可能になってしまう。また、Heroku全体のセキュリティグループを利用すること自体が推奨されていない。

Use of Heroku AWS security group and account id no longer recommended | Heroku Dev Center

RDSであればDB自体の設定で認証をかけることができる(暗号化も)が、Elasticache上のRedisの場合はそれができないため、Herokuのアプリから利用するのは難しいという結論になる。

もしもHerokuからRedisにアクセスしたいのであれば、HerokuのAdd-Onを使うか、自身でEC2上にRedisサーバを立ち上げるという方法になると思う。もしくはアクセスする元のサーバにHerokuを使わずにEC2を使うか。

それか、Proximo | Heroku Dev Center という有料Add-onで固定IPを利用できるので、それを使うという手もありそう。