A resposta aceita é ótima se você estiver usando o ElastiCache (como RDS, mas para Memcached ou Redis). Mas, se o que você está tentando fazer é dizer ao EB para provisionar o Redis na instância do EC2 na qual ele ativa seu aplicativo, você deseja um arquivo de configuração diferente, algo como este gist:
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: Os comandos são executados em ordem alfabética por nome, portanto, se você escolher nomes diferentes de
redis_build
, redis_config_xxx
, redis_server
, certifique-se de que eles sejam executados da maneira que você espera. Sua outra opção é colocar seu aplicativo em contêiner com o Redis usando o Docker e, em seguida, implantar seu aplicativo como alguns contêineres do Docker, em vez de qualquer idioma em que você o escreveu. Fazer isso para um aplicativo Flask é descrito aqui.
Você pode agrupar tudo em um contêiner e implantar dessa maneira, o que é mais fácil, mas não dimensiona bem, ou pode usar as implantações de vários contêineres do Elastic Beanstalk da AWS. Se você usou
docker-compose
, você pode usar esta ferramenta para transformar um docker-compose.yml
no formato que a AWS deseja, Dockerrun.aws.json
.