Przyjęta odpowiedź jest świetna, jeśli używasz ElastiCache (jak RDS, ale dla Memcached lub Redis). Ale jeśli próbujesz powiedzieć EB, aby udostępnił Redis do instancji EC2, w której rozkręca twoją aplikację, potrzebujesz innego pliku konfiguracyjnego, czegoś takiego:
Pakietypackages:
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
WAŻNE: Polecenia są wykonywane w kolejności alfabetycznej według nazwy, więc jeśli wybierzesz inne nazwy niż redis_build
, redis_config_xxx
, redis_server
, upewnij się, że działają tak, jak oczekujesz.
Inną opcją jest konteneryzacja aplikacji za pomocą Redis za pomocą Dockera, a następnie wdrożenie aplikacji jako pewnej liczby kontenerów Dockera, zamiast dowolnego języka, w którym została napisana. Sposób robienia tego dla aplikacji Flask opisano tutaj.
Możesz umieścić to wszystko w jednym kontenerze i wdrożyć w ten sposób, co jest łatwiejsze, ale nie skaluje się dobrze, lub możesz użyć wdrożeń wielokontenerowych Elastic Beanstalk AWS. Jeśli użyłeś docker-compose
, możesz użyć tego narzędzia do przekształcenia pliku docker-compose.yml
w formularzu, którego chce AWS, Dockerrun.aws.json
.