我目前在我的Sails.js项目中使用connect-redis来利用本地安装的redis实例。将来,我想为多个服务器实例(在负载均衡器后面)使用通用redis实例,所以我一直在关注AWS Elasticache。但是,我在配置方面遇到了麻烦。
帆项目\设置\ session.js:
adapter: 'connect-redis',
host: 'primary-endpoint.xxxxxx.ng.0001.apse1.cache.amazonaws.com',
port: 6379,
ttl: <redis session TTL in seconds>,
db: 0,
pass: <redis auth password>,
prefix: 'sess:',
TTL值应该是多少? pass属性应该以某种方式指向IAM吗?
我尝试使用AmazonElastiCacheFullAccess权限在IAM中创建用户,并将其访问密钥ID放在pass
属性中,但我在服务器控制台中遇到此错误(在我的Windows框中进行测试):
C:\repos\sails-project\node_modules\connect-redis\lib\connect-redis.js:83
throw err;
^
AbortError: Redis connection lost and command aborted. It might have been processed.
at RedisClient.flush_and_error (C:\repos\sails-project\node_modules\redis\index.js:362:23)
...
关于改变什么的任何想法?
答案 0 :(得分:1)
我将假设您的“Windows框”不属于AWS。
对于Elasticache,您无法从AWS外部访问它。请参阅此处的安全部分:https://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
最常见的用例是在VPC访问中使用EC2实例并使用Elasticache服务。除此之外,Elasticache Redis服务不使用身份验证,只允许通过安全组锁定。
如果您需要与此配置不同的东西,那么您应该考虑将Redis放在EC2上,以便您可以完全控制。