

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 例: ElastiCache
<a name="customize-environment-resources-elasticache"></a>

以下のサンプルでは、Amazon ElastiCache クラスターを EC2-Classic および EC2-VPC (デフォルトおよびカスタム [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) の両方) プラットフォームに追加します。これらのプラットフォームの詳細と、EC2 がリージョンと AWS アカウントでサポートするプラットフォームを特定する方法については、「」を参照してください[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html)。このトピックの、使用しているプラットフォームに該当するセクションを参照してください。
+ [EC2-classic プラットフォーム](#customize-environment-resources-elasticache-classic)
+ [EC2-VPC (デフォルト)](#customize-environment-resources-elasticache-defaultvpc)
+ [EC2-VPC (カスタム)](#customize-environment-resources-elasticache-targetedvpc)

## EC2-classic プラットフォーム
<a name="customize-environment-resources-elasticache-classic"></a>

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

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

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

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

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

1. アプリケーションを 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
```

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::ElastiCache::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html)
+ [AWS::ElastiCache::SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html)

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

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

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

## EC2-VPC (デフォルト)
<a name="customize-environment-resources-elasticache-defaultvpc"></a>

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

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

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

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

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

1. アプリケーションを 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.t2.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"
```

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)

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

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

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

## EC2-VPC (カスタム)
<a name="customize-environment-resources-elasticache-targetedvpc"></a>

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

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

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

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

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

1. アプリケーションを 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 の詳細については、「[https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html](https://docs.aws.amazon.com/vpc/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.t2.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"
```

この設定ファイル例で使用されているリソースの詳細については、以下を参照してください。
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
+ [AWS::ElastiCache::SubnetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html)

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

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

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

このコードは、設定ファイル (この例では `options.config`) の `CacheNodeType`、`NumCacheNodes`、`Engine`、`CachePort`、`CacheSubnets`、および `VpcId` の値から `CacheNodeType`、`NumCacheNodes`、`Engine`、`CachePort`、`CacheSubnets`、および `VpcId` プロパティの値を取得するように Elastic Beanstalk に指示します。そのファイルには `aws:elasticbeanstalk:customoption` セクションが含まれており（`option_settings` に）、そこにはサンプルの値を示す名前と値のペアが含まれています。上の例では、`cache.t2.micro`、`1`、`redis`、`6379`、`subnet-1a1a1a1a`、`subnet-2b2b2b2b`、`subnet-3c3c3c3c`、および `vpc-4d4d4d4d` が値として使用されます。`Fn::GetOptionSetting` の詳細については、「[関数](ebextensions-functions.md)」を参照してください。