La risposta accettata è ottima se stai usando ElastiCache (come RDS, ma per Memcached o Redis). Ma, se quello che stai cercando di fare è dire a EB di eseguire il provisioning di Redis nell'istanza EC2 in cui fa girare la tua app, vuoi un file di configurazione diverso, qualcosa come questo:
packages:
yum:
gcc-c++: []
make: []
sources:
/home/ec2-user: http://download.redis.io/releases/redis-2.8.4.tar.gz
commands:
redis_build:
command: make
cwd: /home/ec2-user/redis-2.8.4
redis_config_001:
command: sed -i -e "s/daemonize no/daemonize yes/" redis.conf
cwd: /home/ec2-user/redis-2.8.4
redis_config_002:
command: sed -i -e "s/# maxmemory <bytes>/maxmemory 500MB/" redis.conf
cwd: /home/ec2-user/redis-2.8.4
redis_config_003:
command: sed -i -e "s/# maxmemory-policy volatile-lru/maxmemory-policy allkeys-lru/" redis.conf
cwd: /home/ec2-user/redis-2.8.4
redis_server:
command: src/redis-server redis.conf
cwd: /home/ec2-user/redis-2.8.4
IMPORTANTE: I comandi vengono eseguiti in ordine alfabetico per nome, quindi se scegli nomi diversi da redis_build
, redis_config_xxx
, redis_server
, assicurati che siano tali da funzionare nel modo previsto.
L'altra opzione è quella di containerizzare la tua app con Redis usando Docker, quindi distribuire la tua app come un certo numero di container Docker, invece della lingua in cui l'hai scritta. Questa operazione per un'app Flask è descritta qui.
Puoi raggruppare tutto in un contenitore e distribuire in questo modo, il che è più semplice, ma non scala bene, oppure puoi utilizzare le distribuzioni multi-container Elastic Beanstalk di AWS. Se hai usato docker-compose
, puoi utilizzare questo strumento per trasformare un docker-compose.yml
nella forma che AWS vuole, Dockerrun.aws.json
.