Jawaban yang diterima sangat bagus jika Anda menggunakan ElastiCache (seperti RDS, tetapi untuk Memcached atau Redis). Tetapi, jika yang Anda coba lakukan adalah memberi tahu EB untuk menyediakan Redis ke dalam instans EC2 di mana ia menjalankan aplikasi Anda, Anda menginginkan file konfigurasi yang berbeda, kira-kira seperti ini:
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
PENTING: Perintah dijalankan dalam urutan abjad berdasarkan nama, jadi jika Anda memilih nama yang berbeda dari redis_build
, redis_config_xxx
, redis_server
, pastikan semuanya berjalan seperti yang Anda harapkan.
Opsi Anda yang lain adalah menyimpan aplikasi Anda dengan Redis menggunakan Docker, lalu menerapkan aplikasi Anda sebagai sejumlah kontainer Docker, alih-alih bahasa apa pun yang Anda gunakan untuk menulisnya. Melakukannya untuk aplikasi Flask dijelaskan di sini.
Anda dapat memasukkan semuanya ke dalam satu wadah dan menerapkannya dengan cara itu, yang lebih mudah, tetapi tidak dapat diskalakan dengan baik, atau Anda dapat menggunakan penerapan multi-kontainer Elastic Beanstalk AWS. Jika Anda telah menggunakan docker-compose
, Anda dapat menggunakan alat ini untuk mengubah docker-compose.yml
ke dalam bentuk yang diinginkan AWS, Dockerrun.aws.json
.