web-dev-qa-db-ja.com

ElasticBeanstalkにRedisをインストールして設定する方法

AWS ElasticBeanstalkにRedisをインストールして設定するにはどうすればよいですか?それを達成するために.ebextensionスクリプトを書く方法を知っている人はいますか?

12
Ecil

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

13
TerryB

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_buildredis_config_xxxredis_server以外の名前を選択する場合は、それらが次のようになっていることを確認してください期待どおりに実行します。

もう1つのオプションは、Dockerを使用してRedisでアプリをコンテナー化し、作成した言語ではなく、いくつかのDockerコンテナーとしてアプリをデプロイすることです。Flaskアプリについて説明します ここ

すべてを1つのコンテナーに詰め込んでその方法でデプロイすることができます。これは簡単ですが、拡張性が高くありません。または、AWSのElasticBeanstalkマルチコンテナーデプロイメントを使用することもできます。 docker-composeを使用したことがある場合は、 this ツールを使用して、docker-compose.ymlをAWSが必要とする形式Dockerrun.aws.jsonに変換できます。

25
Sam H.