apinanyogaratnam
apinanyogaratnam

Reputation: 708

AWS Elasticache redis cluster configuration

I'm a bit new to terraform and was and needed some help on what's the issue with this. It creates the according resources but when connecting to the endpoint, I get a timeout. I noticed the security group isn't actually being created but I'm not sure why. Any help would be appreciated.

configuration:

provider "aws" {
  region = "us-west-2"
}

resource "aws_elasticache_cluster" "example" {
  cluster_id           = "cluster-example"
  engine               = "redis"
  node_type            = "cache.m4.large"
  num_cache_nodes      = 1
  parameter_group_name = "default.redis3.2"
  engine_version       = "3.2.10"
  port                 = 6379
}

resource "aws_security_group" "example" {
  name        = "example"
  description = "Used by the example Redis cluster"
  vpc_id      = "${aws_vpc.example.id}"

  ingress {
    description      = "TLS from VPC"
    from_port        = 443
    to_port          = 443
    protocol         = "tcp"
    cidr_blocks      = [aws_vpc.example.cidr_block]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
    ipv6_cidr_blocks = ["::/0"]
  }
}

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"

  tags = {
    Name = "example"
  }
}

resource "aws_subnet" "example" {
  vpc_id     = "${aws_vpc.example.id}"
  cidr_block = "10.0.0.0/20"

  tags = {
    Name = "example"
  }
}

resource "aws_elasticache_subnet_group" "example" {
  name        = "example"
  description = "Example subnet group"
  subnet_ids  = ["${aws_subnet.example.id}"]
}

connection to endpoint:

import os
import redis

ENDPOINT = os.environ.get('REDIS_HOST')

client = redis.Redis(host=ENDPOINT, port=6379, db=0)

client.ping()

(passwordless cluster)

EDIT: I call the endpoint in python on my local machine.

Upvotes: 0

Views: 1126

Answers (1)

Marcin
Marcin

Reputation: 238747

You can't access EC cluster from outside of AWS directly, as it can only be accessed from VPC. You must use VPN, Direct Connect or SSH tunnel if you want to connect from your home network.

Upvotes: 1

Related Questions