Die akzeptierte Antwort ist großartig, wenn Sie ElastiCache verwenden (wie RDS, aber für Memcached oder Redis). Wenn Sie jedoch versuchen, EB anzuweisen, Redis in der EC2-Instanz bereitzustellen, in der es Ihre App hochfährt, möchten Sie eine andere Konfigurationsdatei, etwa wie folgt:
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
WICHTIG: Die Befehle werden in alphabetischer Reihenfolge nach Namen ausgeführt, wenn Sie also andere Namen als redis_build
wählen , redis_config_xxx
, redis_server
, stellen Sie sicher, dass sie so ausgeführt werden, wie Sie es erwarten.
Ihre andere Möglichkeit besteht darin, Ihre App mithilfe von Docker mit Redis zu containerisieren und Ihre App dann als eine Reihe von Docker-Containern bereitzustellen, anstatt in der Sprache, in der Sie sie geschrieben haben. Wie Sie dies für eine Flask-App tun, wird hier beschrieben.
Sie können alles in einen Container stauen und auf diese Weise bereitstellen, was einfacher ist, aber nicht gut skaliert, oder Sie können die Elastic Beanstalk Multi-Container-Bereitstellungen von AWS verwenden. Wenn Sie docker-compose
verwendet haben , können Sie dieses Tool verwenden, um eine docker-compose.yml
umzuwandeln in die von AWS gewünschte Form, Dockerrun.aws.json
.