Claude Skills Guide

Claude Code for ElastiCache Cluster Workflow

Amazon ElastiCache is a critical infrastructure component for applications requiring high-performance caching. Managing ElastiCache clusters—whether Redis or Memcached—involves careful configuration, security considerations, and operational best practices. Claude Code can significantly streamline your ElastiCache workflows, from initial cluster provisioning to day-to-day operations and troubleshooting.

This guide covers practical approaches for using Claude Code in your ElastiCache cluster management tasks.

Setting Up ElastiCache Clusters with Claude Code

When provisioning new ElastiCache clusters, Claude Code can help you generate proper infrastructure-as-code configurations and ensure best practices are followed from the start.

Terraform Configuration

Claude Code excels at generating Terraform configurations for ElastiCache clusters. Here’s how to approach this:

# ElastiCache Redis Cluster Configuration
resource "aws_elasticache_replication_group" "redis_cluster" {
  replication_group_id       = "my-redis-cluster"
  replication_group_description = "Production Redis Cluster"
  
  engine               = "redis"
  engine_version       = "7.0"
  node_type            = "cache.r6g.xlarge"
  number_cache_clusters = 3
  
  port                 = 6379
  parameter_group_name  = "default.redis7"
  
  automatic_failover_enabled = true
  multi_az_enabled          = true
  
  at_rest_encryption_enabled = true
  transit_encryption_enabled = true
  
  auth_token_enabled          = true
  auth_token                 = aws_secretsmanager_secret.redis_auth.token
  
  snapshot_retention_limit   = 7
  snapshot_window            = "03:00-05:00"
  maintenance_window         = "mon:05:00-mon:07:00"
  
  log_delivery_configuration {
    destination      = aws_cloudwatch_log_group.redis_slow.name
    destination_type = "cloudwatch-logs"
    log_format       = "json"
    log_type         = "slow-log"
  }
  
  tags = {
    Environment = "production"
    ManagedBy   = "terraform"
  }
}

When working with Claude Code, provide context about your existing infrastructure and specify requirements like node type, replication strategy, and security requirements. The more specific you are about your use case, the more accurate the generated configuration will be.

Security Considerations

ElastiCache security involves multiple layers. Claude Code can help you implement:

Here’s an example IAM policy Claude Code might help generate:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticache:DescribeReplicationGroups",
        "elasticache:DescribeCacheClusters",
        "elasticache:DescribeCacheSubnetGroups"
      ],
      "Resource": "arn:aws:elasticache:us-east-1:123456789012:replicationgroup:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticache:Connect"
      ],
      "Resource": "arn:aws:elasticache:us-east-1:123456789012:replicationgroup:my-redis-cluster"
    }
  ]
}

Connecting Applications to ElastiCache

Claude Code can help you write application code that properly connects to your ElastiCache cluster with connection pooling, error handling, and best practices.

Node.js Example with Redis

const Redis = require('ioredis');

class ElastiCacheClient {
  constructor(config) {
    this.client = new Redis.Cluster([
      { host: config.primaryEndpoint, port: 6379 },
      { host: config.readerEndpoint, port: 6379 },
    ], {
      maxRetriesPerRequest: 3,
      retryDelayOnFailover: 100,
      enableReadyCheck: true,
      lazyConnect: true,
      
      // Security: use TLS for encrypted connections
      tls: {
        rejectUnauthorized: true
      },
      
      // Connection pool settings
      family: 4,
      keepAlive: true,
      connectTimeout: 10000,
      commandTimeout: 5000,
    });

    this.setupEventHandlers();
  }

  setupEventHandlers() {
    this.client.on('error', (err) => {
      console.error('Redis connection error:', err.message);
    });

    this.client.on('connect', () => {
      console.log('Connected to ElastiCache cluster');
    });
  }

  async connect() {
    await this.client.connect();
  }

  async getCached(key) {
    try {
      const value = await this.client.get(key);
      return value ? JSON.parse(value) : null;
    } catch (error) {
      console.error('Cache get error:', error);
      return null;
    }
  }

  async setCached(key, value, ttlSeconds = 3600) {
    try {
      await this.client.setex(key, ttlSeconds, JSON.stringify(value));
      return true;
    } catch (error) {
      console.error('Cache set error:', error);
      return false;
    }
  }
}

Python Example with Redis

import redis
from redis.cluster import RedisCluster

class ElastiCacheManager:
    def __init__(self, endpoints, ssl=True, decode_responses=True):
        self.endpoints = endpoints
        self.client = RedisCluster(
            startup_nodes=endpoints,
            skip_full_coverage_check=True,
            decode_responses=decode_responses,
            ssl=ssl,
            socket_connect_timeout=5,
            socket_timeout=5,
            retry_on_timeout=True,
            max_connections=50
        )
    
    def get(self, key):
        try:
            value = self.client.get(key)
            return value
        except redis.RedisError as e:
            print(f"Cache error: {e}")
            return None
    
    def set(self, key, value, expiry=3600):
        try:
            return self.client.setex(key, expiry, value)
        except redis.RedisError as e:
            print(f"Cache error: {e}")
            return False
    
    def delete(self, *keys):
        try:
            return self.client.delete(*keys)
        except redis.RedisError as e:
            print(f"Cache error: {e}")
            return 0

Monitoring and Operations

Claude Code can help you set up proper monitoring and alerting for ElastiCache clusters, ensuring you can quickly identify and respond to issues.

CloudWatch Metrics to Monitor

Key metrics Claude Code might help you create dashboards for:

Metric Description Threshold
CPUUtilization CPU usage of cluster nodes > 75%
MemoryUsage Memory utilization > 80%
Evictions Number of evicted keys > 1000/min
CurrConnections Current connections Spike detection
ReplicationLag Seconds behind primary > 30s
CacheHitRate Hit ratio percentage < 80%

Setting Up Alerts

# CloudWatch Alarm for ElastiCache CPU
resource "aws_cloudwatch_metric_alarm" "redis_cpu" {
  alarm_name          = "redis-cpu-high"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = "2"
  metric_name         = "CPUUtilization"
  namespace           = "AWS/ElastiCache"
  period              = "300"
  statistic           = "Average"
  threshold           = "75"
  
  dimensions = {
    ReplicationGroupId = aws_elasticache_replication_group.redis_cluster.id
  }
  
  alarm_actions = [aws_sns_topic.alerts.arn]
  ok_actions    = [aws_sns_topic.alerts.arn]
  
  tags = {
    Environment = "production"
  }
}

Troubleshooting Common Issues

Claude Code can assist with diagnosing and resolving common ElastiCache problems.

High Memory Usage

When experiencing memory pressure:

  1. Check eviction policies: Verify maxmemory-policy setting
  2. Analyze key patterns: Look for unbounded key growth
  3. Review TTL settings: Ensure temporary keys expire properly
  4. Consider scaling: Evaluate node type upgrades or read replicas

Claude Code can help you generate scripts to analyze key patterns:

# Sample Redis memory analysis
redis-cli -h $ENDPOINT --no-auth-warning INFO memory | grep used_memory
redis-cli -h $ENDPOINT --no-auth-warning --bigkeys
redis-cli -h $ENDPOINT --no-auth-warning INFO stats | grep evicted

Replication Lag

For Redis replication issues:

# Check replication status
redis-cli -h $ENDPOINT INFO replication

# Monitor lag in real-time
watch -n 1 'redis-cli -h $ENDPOINT INFO replication | grep -i lag'

Best Practices Summary

When working with ElastiCache and Claude Code:

Claude Code accelerates all these workflows by generating configurations, code samples, and scripts based on your specific requirements. The key is providing clear context about your existing infrastructure, security requirements, and performance needs.


Would you like me to elaborate on any specific aspect of ElastiCache cluster management with Claude Code?

Built by theluckystrike — More at zovo.one