2017-10-17 106 views
0

我目前在我的Sails.js項目中使用connect-redis來利用本地安裝的redis實例。將來,我想爲多個服務器實例(負載均衡器後面)使用通用的Redis實例,所以我一直在關注AWS Elasticache。不過,我在配置時遇到了問題。使用AWS Elasticache Redis管理Sails.js中的會話

帆項目\設置\ 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:\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

我猜TTL是您認爲適合您的應用程序的任何內容,具體取決於您希望會話持續多長時間。 至於IAM的東西。 1)我不認爲IAM用戶會在這裏工作?它要求您提供Elasticache用戶名和密碼,而不是AWS用戶名/密碼。 2)Redis的是默認打開的,所以你不會需要驗證(這並不是說你不應該,但你應該看看Redis的土辦法做到這一點)。 – d1ll1nger

+0

是的,當我在與服務器相同的實例上運行Redis時,我不提供配置中的任何憑據。不過,我認爲指向不同服務器時需要進行身份驗證。據我所知,似乎沒有被任何「Elasticache用戶名,」雖然如此,我對如何拼湊這些疑惑起來(或者如果它甚至有可能)。 – carpiediem

+0

是的,這有點奇怪。我聽到的最後一句是彈性緩存redis服務應該被安全組鎖定,就是這樣。如果您需要進一步控制,那麼在EC2上產生redis。 – d1ll1nger

回答

1

我打算假設你的「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上,讓你有完全控制權。

+0

啊哈,你是對的!到目前爲止,我一直在測試我的筆記本電腦。我沒有嘗試過AWS,因爲我認爲這是由於代碼中的錯誤。正如你所建議的那樣,我會嘗試在AWS上進行測試。 – carpiediem

相關問題