メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

スニペット例: ElastiCache

EC2-Classic および EC2-(デフォルト VPC とカスタム VPC の両方)プラットフォームに Amazon ElastiCache クラスターを追加するサンプルを以下に示します。これらのプラットフォームの詳細と、EC2 がユーザーのリージョンおよび AWS アカウントに対してサポートしているプラットフォームについては、http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html にアクセスし、このトピックの、使用しているプラットフォームに該当するセクションを参照してください。

EC2-Classic プラットフォーム

このサンプルは、EC2-Classic プラットフォーム内にインスタンスが起動される環境に Amazon ElastiCache クラスターを追加します。この例で示されているすべてのプロパティは、各リソースタイプに対して設定する必要のある最低限必要なプロパティです。サンプルは、「ElastiCache Example」でダウンロードできます。

注記

この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細については、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合があります。詳細については、http://aws.amazon.com/free を参照してください。

この例を使用するには、以下を実行します。

  1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。

  2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されます。

  3. アプリケーションを Elastic Beanstalk にデプロイします。

    YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。

リソースを定義する設定ファイル(例: elasticache.config)を作成します。最初に、ElastiCache クラスターリソースの名前(MyElastiCache)を指定し、タイプを宣言し、クラスターのプロパティを設定することによって、ElastiCache クラスターを作成します。この例は、この設定ファイルで作成され、定義されている ElastiCache セキュリティグループリソースの名前を参照します。次に、ElastiCache セキュリティグループを作成します。このリソースの名前を定義し、タイプを宣言し、セキュリティグループの説明を追加します。最後に、ElastiCache セキュリティグループの入口ルールを設定し、ElastiCache セキュリティグループ(MyCacheSecurityGroup)および Elastic Beanstalk セキュリティグループ(AWSEBSecurityGroup)の内部のインスタンスからのアクセスのみを許可するようにします。パラメータ名 AWSEBSecurityGroup は、Elastic Beanstalk によって提供される固定のリソース名です。Elastic Beanstalk アプリケーションから ElastiCache クラスター内のインスタンスに接続するには、ElastiCache セキュリティグループ入口ルールに AWSEBSecurityGroup を追加する必要があります。

#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.
          
Resources:
  MyElastiCache:
    Type: AWS::ElastiCache::CacheCluster
    Properties:
      CacheNodeType: 
         Fn::GetOptionSetting:
             OptionName : CacheNodeType
             DefaultValue: cache.m1.small
      NumCacheNodes: 
           Fn::GetOptionSetting:
             OptionName : NumCacheNodes
             DefaultValue: 1
      Engine: 
           Fn::GetOptionSetting:
             OptionName : Engine
             DefaultValue: memcached
      CacheSecurityGroupNames:
        - Ref: MyCacheSecurityGroup
  MyCacheSecurityGroup:
    Type: AWS::ElastiCache::SecurityGroup
    Properties:
      Description: "Lock cache down to webserver access only"
  MyCacheSecurityGroupIngress:
    Type: AWS::ElastiCache::SecurityGroupIngress
    Properties:
      CacheSecurityGroupName: 
        Ref: MyCacheSecurityGroup
      EC2SecurityGroupName:
        Ref: AWSEBSecurityGroup

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。

options.config という名前の別の設定ファイルを作成し、カスタムオプションの設定を定義します。

option_settings:
  "aws:elasticbeanstalk:customoption":
     CacheNodeType : cache.m1.small
     NumCacheNodes : 1
     Engine : memcached

これらの行は、Elastic Beanstalk に対し、CacheNodeType、NumCacheNodes、Engine プロパティの値を、option_settings セクションと、使用する実際の値を含む名前と値のペアを含む aws:elasticbeanstalk:customoption セクションが含まれている設定ファイル(この例では options.config)の CacheNodeType、NumCacheNodes、Engine 値から取得するように指示します。上の例では、これは値として cache.m1.small、1、memcached を使用することを意味します。Fn::GetOptionSetting の詳細については、「関数」を参照してください。

EC2-VPC(デフォルト)

このサンプルは、EC2-VPC プラットフォーム内にインスタンスが起動される環境に Amazon ElastiCache クラスターを追加します。具体的には、このセクションの情報は、EC2 がデフォルト VPC 内にインスタンスを起動するシナリオに適用されます。この例のプロパティはすべて、リソースタイプごとに設定する必要のある最低限必要なプロパティです。デフォルト VPC の詳細については、Your Default VPC and Subnets を参照してください。

注記

この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細については、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合があります。詳細については、http://aws.amazon.com/free を参照してください。

この例を使用するには、以下を実行します。

  1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。

  2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されます。

  3. アプリケーションを Elastic Beanstalk にデプロイします。

    YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。

ここで、リソースの設定ファイルに elasticache.config という名前を付けます。ElastiCache クラスターを作成するため、この例は ElastiCache クラスターリソースの名前(MyElastiCache)を指定し、そのタイプを宣言してから、クラスターのプロパティを設定します。この例は、この設定ファイルで作成し、定義するセキュリティグループリソースの ID を参照します。

次に、EC2 セキュリティグループを作成します。このリソースの名前の定義、そのタイプの宣言、および説明の入力を行ってから、Elastic Beanstalk セキュリティグループ(AWSEBSecurityGroup)内のインスタンスからのアクセスのみを許可するようにセキュリティグループの入口ルールを設定します(AWSEBSecurityGroup というパラメータ名は、Elastic Beanstalk によって提供される固定されたリソース名です。Elastic Beanstalk アプリケーションから ElastiCache クラスター内のインスタンスに接続するには、ElastiCache セキュリティグループの入口ルールに AWSEBSecurityGroup を追加する必要があります)。

EC2 セキュリティグループの入口ルールは、キャッシュノードが接続を受け付けることができる IP プロトコルとポート番号も定義します。Redis の場合、デフォルトのポート番号は 6379 です。

#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

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"

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。

次に、オプションの設定ファイルに options.config という名前を付け、カスタムオプションの設定を定義します。

option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t1.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379

このコードは、設定ファイル(この例では CacheNodeType)の NumCacheNodesEngineCachePort、および CacheNodeType の値から NumCacheNodesEngineCachePort、および options.config プロパティの値を取得するように Elastic Beanstalk に指示します。そのファイルには aws:elasticbeanstalk:customoption セクションが含まれており(option_settings に)、そこには実際に使用される値を示す名前と値のペアが含まれています。前述の例では、cache.t1.micro1redis、および 6379 が値として使用されます。Fn::GetOptionSetting の詳細については、「関数」を参照してください。

EC2-VPC(カスタム)

EC2-VPC プラットフォームにカスタム VPC を作成し、EC2 がインスタンスを起動する VPC として指定する場合、ユーザーの環境に Amazon ElastiCache クラスターを追加するプロセスはデフォルト VPC の場合とは異なります。主な違いは、ElastiCache クラスター用のサブネットグループを作成する必要があることです。この例のプロパティはすべて、リソースタイプごとに設定する必要のある最低限必要なプロパティです。

注記

この例では、課金対象となる可能性のある AWS リソースを作成します。AWS の料金詳細については、http://aws.amazon.com/pricing/ を参照してください。一部のサービスは、AWS 無料利用枠の対象です。新規のお客様は、無料でこれらのサービスをテストできる場合があります。詳細については、http://aws.amazon.com/free を参照してください。

この例を使用するには、以下を実行します。

  1. ソースバンドルの最上位ディレクトリに .ebextensions ディレクトリを作成します。

  2. 拡張子が .config の設定ファイルを 2 つ作成し、.ebextensions ディレクトリに配置します。一方の設定ファイルではリソースが定義され、もう一方の設定ファイルではオプションが定義されます。

  3. アプリケーションを Elastic Beanstalk にデプロイします。

    YAML は、一貫したインデントに依存します。設定ファイルの例でコンテンツを置き換える際はインデントレベルを一致させ、テキストエディタがインデントにタブ文字ではなくスペースを使用していることを確認します。

ここで、リソースの設定ファイルに elasticache.config という名前を付けます。ElastiCache クラスターを作成するため、この例は ElastiCache クラスターリソースの名前(MyElastiCache)を指定し、そのタイプを宣言してから、クラスターのプロパティを設定します。この例のプロパティは、ElastiCache クラスター用のサブネットグループの名前だけではなく、この設定ファイルで作成し、定義したセキュリティグループリソースの ID も参照します。

次に、EC2 セキュリティグループを作成します。このリソースの名前の定義、そのタイプの宣言、説明の入力、および VPC ID の割り当てを行ってから、Elastic Beanstalk セキュリティグループ(AWSEBSecurityGroup)内のインスタンスからのアクセスのみを許可するようにセキュリティグループの入口ルールを設定します(AWSEBSecurityGroup というパラメータ名は、Elastic Beanstalk によって提供される固定されたリソース名です。Elastic Beanstalk アプリケーションから ElastiCache クラスター内のインスタンスに接続するには、ElastiCache セキュリティグループの入口ルールに AWSEBSecurityGroup を追加する必要があります)。

EC2 セキュリティグループの入口ルールは、キャッシュノードが接続を受け付けることができる IP プロトコルとポート番号も定義します。Redis の場合、デフォルトのポート番号は 6379 です。最後に、この例は ElastiCache クラスター用のサブネットグループを作成します。このリソースの名前を定義し、そのタイプを宣言して、サブネットグループのサブネットの説明と ID を追加します。

注記

ElastiCache クラスターにはプライベートサブネットを使用することが推奨されます。プライベートサブネットを使用する VPC の詳細については、http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html を参照してください。

#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  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"
      CacheSubnetGroupName:
        Ref: "MyCacheSubnets"
      VpcSecurityGroupIds:
        - Ref: "MyCacheSecurityGroup"
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      VpcId:
        Fn::GetOptionSetting:
          OptionName : "VpcId"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupId:
            Ref: "AWSEBSecurityGroup"
  MyCacheSubnets:
    Type: "AWS::ElastiCache::SubnetGroup"
    Properties:
      Description: "Subnets for ElastiCache"
      SubnetIds:
        Fn::GetOptionSetting:
          OptionName : "CacheSubnets"
Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。

次に、オプションの設定ファイルに options.config という名前を付け、カスタムオプションの設定を定義します。

注記

以下の例では、例の CacheSubnets および VpcId の値をユーザー独自のサブネットおよび VPC に置き換えます。

option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t1.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
    CacheSubnets:
      - subnet-1a1a1a1a
      - subnet-2b2b2b2b
      - subnet-3c3c3c3c
    VpcId: vpc-4d4d4d4d

このコードは、設定ファイル(この例では CacheNodeType)の NumCacheNodesEngineCachePortCacheSubnetsVpcId、および CacheNodeType の値から NumCacheNodesEngineCachePortCacheSubnetsVpcId、および options.config プロパティの値を取得するように Elastic Beanstalk に指示します。そのファイルには aws:elasticbeanstalk:customoption セクションが含まれており(option_settings に)、そこにはサンプルの値を示す名前と値のペアが含まれています。上の例では、cache.t1.micro1redis6379subnet-1a1a1a1asubnet-2b2b2b2bsubnet-3c3c3c3c、および vpc-4d4d4d4d が値として使用されます。Fn::GetOptionSetting の詳細については、「関数」を参照してください。