我目前正在我的 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 值应该是多少? 传递属性是否应以某种方式指向 IAM?
我尝试在 IAM 中创建具有 AmazonElastiCacheFullAccess 权限的用户,并将其访问密钥 ID 放在 pass
属性中,但我在服务器控制台中收到此错误(在我的 Windows 盒子上进行测试):
C:repossails-projectnode_modulesconnect-redislibconnect-redis.js:83
throw err;
^
AbortError: Redis connection lost and command aborted. It might have been processed.
at RedisClient.flush_and_error (C:repossails-projectnode_modulesredisindex.js:362:23)
...
关于要更改什么的任何想法?
我假设你的"Windows box"在AWS之外。
对于 Elasticache,您无法从 AWS 外部访问它。请参阅此处的安全部分:https://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
最常见的使用案例是让 VPC 中的 EC2 实例访问并使用 Elasticache 服务。除此之外,Elasticache Redis 服务不使用身份验证,只允许通过安全组锁定。
如果您需要与此配置区分开来的东西,那么您应该考虑将 Redis 放在 EC2 上,以便您拥有完全控制权。