Přijatá odpověď je skvělá, pokud používáte ElastiCache (jako RDS, ale pro Memcached nebo Redis). Ale pokud to, co se snažíte udělat, je říct EB, aby zajistil Redis do instance EC2, ve které spustí vaši aplikaci, chcete jiný konfigurační soubor, něco jako je tato podstata:
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
DŮLEŽITÉ: Příkazy se spouštějí v abecedním pořadí podle názvu, takže pokud vyberete jiné názvy než redis_build
, redis_config_xxx
, redis_server
, ujistěte se, že jsou takové, aby fungovaly způsobem, který očekáváte.
Další možností je kontejnerizovat svou aplikaci pomocí Redis pomocí Dockeru a poté aplikaci nasadit jako určitý počet kontejnerů Docker, namísto jazyka, ve kterém jste ji napsali. Postup pro aplikaci Flask je popsán zde.
Můžete to všechno zaseknout do jednoho kontejneru a nasadit tímto způsobem, což je jednodušší, ale špatně se škáluje, nebo můžete použít nasazení více kontejnerů Elastic Beanstalk od AWS. Pokud jste použili docker-compose
, můžete tento nástroj použít k otočení docker-compose.yml
do tvaru, který AWS požaduje, Dockerrun.aws.json
.