2017-09-29 6 views
0

내 Elasticache에서 redis 인스턴스에 연결해야합니다. 내가 Amazon Elasticache Redis cluster - Can't get Endpoint에서 알 수 있듯이, 나는 이것으로부터 끝점을 얻을 수있다. 이제 엔드 포인트가 있다고 가정하고이 엔드 포인트를 사용하여 JedisClient (Java를 사용하고 있기 때문에)를 작성한 다음 AWS IAM 권한 정보를 어떻게 제공합니까? IAM 정책을 사용하여 ElastiCache를 보호 할 예정입니다. 이 재발행에 다른 응용 프로그램이 연결되지 않도록하려면 어떻게합니까?AWS Elasticache Jedis가 자격 증명을 사용합니다.

답변

0
static AWSCredentials credentials = null; 
static { 
    try { 
     //credentials = new ProfileCredentialsProvider("default").getCredentials(); 
     credentials = new SystemPropertiesCredentialsProvider().getCredentials(); 
    } catch (Exception e) { 
     System.out.println("Got exception.........."); 
     throw new AmazonClientException("Cannot load the credentials from the credential profiles file. " 
       + "Please make sure that your credentials file is at the correct " 
       + "location (/Users/USERNAME/.aws/credentials), and is in valid format.", e); 
    }  
} 

@Bean 
public LettuceConnectionFactory redisConnectionFactory() { 
    AmazonElastiCache elasticacheClient = AmazonElastiCacheClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)).withRegion(Regions.US_EAST_1).build(); 
    DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest(); 
    dccRequest.setShowCacheNodeInfo(true); 

    DescribeCacheClustersResult clusterResult = elasticacheClient.describeCacheClusters(dccRequest); 

    List<CacheCluster> cacheClusters = clusterResult.getCacheClusters(); 
    List<String> clusterNodes = new ArrayList <String>(); 
    try { 
     for (CacheCluster cacheCluster : cacheClusters) { 
      for (CacheNode cacheNode : cacheCluster.getCacheNodes()) { 
       String addr = cacheNode.getEndpoint().getAddress(); 
       int port = cacheNode.getEndpoint().getPort(); 
       String url = addr + ":" + port; 
       if(<ReplicationGroup Name>.equalsIgnoreCase(cacheCluster.getReplicationGroupId())) 
        clusterNodes.add(url); 
      } 
     } 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }  
    LettuceConnectionFactory redisConnectionFactory = new LettuceConnectionFactory(new RedisClusterConfiguration(clusterNodes)); 
    redisConnectionFactory.setUseSsl(true); 
    redisConnectionFactory.afterPropertiesSet(); 
    return redisConnectionFactory; 
}