2017-10-17 7 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을 가리켜 야합니까?

나는 AmazonElastiCacheFullAccess 권한으로 IAM에서 사용자를 만들고 pass 속성에의 액세스 키 ID를 퍼팅 시도,하지만 난 내 서버 콘솔에서 (내 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 사용자가 여기에서 일한다고 생각하지 않습니까? AWS 사용자 이름/암호가 아닌 Elasticache 사용자 이름과 암호를 요구합니다. 2) Redis는 기본적으로 열려 있기 때문에 인증 할 필요가 없습니다 (그렇게하면 안된다고 말하는 것이 아니라 Redis 고유의 방식으로이 작업을 수행해야합니다). – d1ll1nger

+0

예, 서버와 동일한 인스턴스에서 redis를 실행할 때 구성에 자격 증명을 제공하지 않습니다. 다른 서버를 가리킬 때 인증이 필요하다고 가정합니다. 내가 말할 수있는 한, "Elasticache 사용자 이름"이없는 것처럼 보이므로, 함께 조각하는 방법에 대해 당황 스럽다. – carpiediem

+0

그래, 조금 이상합니다. 마지막으로 들었던 것은 elasticache redis 서비스가 보안 그룹에 의해 잠겨져 있어야한다는 것입니다. 추가 제어가 필요한 경우 EC2에 재발생을 생성하십시오. – d1ll1nger

답변

1

"Windows 상자"가 AWS 외부에 있다고 가정합니다.

Elasticache의 경우 AWS 외부에서 액세스 할 수 없습니다. 여기에서 보안 섹션을 참조하십시오. https://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS

가장 일반적인 사용 사례는 VPC 액세스 내에 EC2 인스턴스를 포함하고 Elasticache 서비스를 사용하는 경우입니다. 이와 함께 Elasticache Redis 서비스는 인증을 사용하지 않으며 보안 그룹을 통해서만 잠금을 허용합니다.

이 구성과 다른 점이 필요한 경우 EC2에 Redis를 설치하여 모든 권한을 가질 수 있도록해야합니다.

+0

아하, 네가 맞아! 나는 지금까지 랩탑에서만 테스트를 해왔다. 코드의 버그로 인한 것임을 알았 기 때문에 AWS에서 시도하지 않았습니다. AWS에 대한 테스트를 시도하겠습니다. – carpiediem