使用AWS Elasticache Redis管理Sails.js中的会话

时间:2017-10-17 10:52:07

标签: redis sails.js amazon-elasticache

我目前在我的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)
...

关于改变什么的任何想法?

1 个答案:

答案 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上,以便您可以完全控制。