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を利用できるので、それを使うという手もありそう。