AWS ElasticBeanstalkにRedisをインストールして設定するにはどうすればよいですか?それを達成するために.ebextensionスクリプトを書く方法を知っている人はいますか?
AWS Elastic Beanstalkは、.ebextensionsフォルダーを介して リソース構成 を提供します。基本的に、アプリケーションに加えてプロビジョニングしたいものをElasticBeanstalkに伝える必要があります。デフォルトのvpcにプロビジョニングする場合。必要がある
.ebextensionsフォルダーを作成します
elasticache.configファイルを追加します
以下の内容を含めてください。
Resources:
MyCacheSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Lock cache down to webserver access only"
SecurityGroupIngress :
- IpProtocol : "tcp"
FromPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
ToPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
SourceSecurityGroupName:
Ref: "AWSEBSecurityGroup"
MyElastiCache:
Type: "AWS::ElastiCache::CacheCluster"
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : "CacheNodeType"
DefaultValue : "cache.t1.micro"
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : "NumCacheNodes"
DefaultValue : "1"
Engine:
Fn::GetOptionSetting:
OptionName : "Engine"
DefaultValue : "redis"
VpcSecurityGroupIds:
-
Fn::GetAtt:
- MyCacheSecurityGroup
- GroupId
Outputs:
ElastiCache:
Description : "ID of ElastiCache Cache Cluster with Redis Engine"
Value :
Ref : "MyElastiCache"
参照元:「ElasticCacheリソースをElastic Beanstalk VPCに追加する方法」 http://docs.aws.Amazon.com/elasticbeanstalk/latest/dg/customize-environment-resources-elasticache.html
ElastiCache(RDSと同様ですが、MemcachedまたはRedis用)を使用している場合、受け入れられた答えは素晴らしいです。しかし、あなたがやろうとしていることが、アプリを起動するEC2インスタンスにRedisをプロビジョニングするようにEBに指示する場合は、 this 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
重要:コマンドは名前のアルファベット順に実行されるため、redis_build
、redis_config_xxx
、redis_server
以外の名前を選択する場合は、それらが次のようになっていることを確認してください期待どおりに実行します。
もう1つのオプションは、Dockerを使用してRedisでアプリをコンテナー化し、作成した言語ではなく、いくつかのDockerコンテナーとしてアプリをデプロイすることです。Flaskアプリについて説明します ここ 。
すべてを1つのコンテナーに詰め込んでその方法でデプロイすることができます。これは簡単ですが、拡張性が高くありません。または、AWSのElasticBeanstalkマルチコンテナーデプロイメントを使用することもできます。 docker-compose
を使用したことがある場合は、 this ツールを使用して、docker-compose.yml
をAWSが必要とする形式Dockerrun.aws.json
に変換できます。