我目前在 Sails.js 项目中使用 connect-redis 来利用本地安装的 redis 实例。将来,我希望对多个服务器实例(在负载均衡器后面)使用通用的 Redis 实例,因此我一直在关注 AWS Elasticache。不过,我在配置方面遇到了问题。
sails-project\config\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?
我尝试在 IAM 中创建一个具有 AmazonElastiCacheFullAccess 权限的用户,并将其访问 key 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)
...
关于改变什么有什么想法吗?
最佳答案
我假设您的“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 上,以便您拥有完全的控制权。
关于redis - 使用 AWS Elasticache Redis 管理 Sails.js 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46788393/