

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

以下示例将亚马逊 ElastiCache 集群添加到 EC2-Classic 和 EC2-VPC（包括默认和自定义[亚马逊虚拟私有云](https://docs.aws.amazon.com/vpc/latest/userguide/)（亚马逊 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>

此示例将一个 Amazon ElastiCache 集群添加到一个环境中，其实例已启动到 EC2-Classic 平台。此示例中列出的所有属性是为每种资源类型必须设置的最低要求。你可以在示例中下载示[ElastiCache例](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` 的配置文件并将其放入您的 `.ebextensions` 目录。一个配置文件定义资源，另一个配置文件定义选项。

1. 将应用程序部署到 Elastic Beanstalk。

   YAML 依赖一致的缩进。当替换示例配置文件中的内容时，应匹配缩进级别，并且确保您的文本编辑器使用空格而不是字符来进行缩进。

创建定义资源的配置文件 (例如，`elasticache.config`)。在此示例中，我们通过指定 ElastiCache 群集资源的名称 (`MyElastiCache`)、声明其类型，然后配置群集的属性来创建群集。 ElastiCache 该示例引用了在此配置文件中创建和定义 ElastiCache 的安全组资源的名称。接下来，我们创建一个 ElastiCache 安全组。我们会定义这个资源的名称、声明它的类型和添加该安全组的描述。最后，我们将安全组的入口规则设置为仅允许来自 ElastiCache 安全组 (`MyCacheSecurityGroup`) 和 Elastic Beanstalk ElastiCache 安全组 () 内部的实例进行访问。`AWSEBSecurityGroup`参数名 `AWSEBSecurityGroup` 是 Elastic Beanstalk 提供的固定资源名称。您必须`AWSEBSecurityGroup`向 ElastiCache 安全组添加入口规则，这样您的 Elastic Beanstalk 应用程序才能连接到集群中的实例。 ElastiCache 

```
#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::Elasti缓存：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从配置文件（我们的示例中**CacheNodeType为 NumCacheNodes options.config）中获取、**和引擎属性的值， NumCacheNodes该**文件包含一个 option\$1settings 部分，其中有一个 aws: elasticbeanstalk: customoption 部分，其中包含包含要使用的实际值的名称-值对。**在以上示例中，这意味着 cache.m1.small、1 和 memcached 将用于这些值。有关 `Fn::GetOptionSetting` 的更多信息，请参阅 [函数](ebextensions-functions.md)。

## EC2-VPC (默认)
<a name="customize-environment-resources-elasticache-defaultvpc"></a>

此示例将 Amazon ElastiCache 集群添加到已启动到 EC2-VPC 平台的实例的环境中。具体来说，此部分中的信息适用于 EC2 在默认 VPC 中启动实例的情景。此示例中的所有属性是为每种资源类型必须设置的最低要求。有关默认的更多信息 VPCs，请参阅[您的默认 VPC 和子网](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` 的配置文件并将其放入您的 `.ebextensions` 目录。一个配置文件定义资源，另一个配置文件定义选项。

1. 将应用程序部署到 Elastic Beanstalk。

   YAML 依赖一致的缩进。当替换示例配置文件中的内容时，应匹配缩进级别，并且确保您的文本编辑器使用空格而不是字符来进行缩进。

现在将资源配置文件命名为 `elasticache.config`。要创建 ElastiCache 群集，此示例指定 ElastiCache 群集资源的名称 (`MyElastiCache`)，声明其类型，然后配置群集的属性。该示例引用在此配置文件中创建和定义的安全组资源的 ID。

接下来，我们会创建 EC2 安全组。我们定义此资源的名称，声明其类型，添加描述，并为安全组设置传入规则以便仅允许从 Elastic Beanstalk 安全组 (`AWSEBSecurityGroup`) 中的实例进行访问。（参数名称是 Elastic Beanstalk 提供的固定资源名称。`AWSEBSecurityGroup` 您必须`AWSEBSecurityGroup`向 ElastiCache 安全组添加入口规则，这样您的 Elastic Beanstalk 应用程序才能连接到集群中的实例。） ElastiCache 

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
```

这些行告知 Elastic Beanstalk 从配置文件（在我们的示例中为 `options.config`）中的 `CacheNodeType`、`NumCacheNodes`、`Engine` 和 `CachePort` 值获取 `CacheNodeType`、`NumCacheNodes`、`Engine` 和 `CachePort` 属性的值。该文件包含 `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` 的配置文件并将其放入您的 `.ebextensions` 目录。一个配置文件定义资源，另一个配置文件定义选项。

1. 将应用程序部署到 Elastic Beanstalk。

   YAML 依赖一致的缩进。当替换示例配置文件中的内容时，应匹配缩进级别，并且确保您的文本编辑器使用空格而不是字符来进行缩进。

现在将资源配置文件命名为 `elasticache.config`。要创建 ElastiCache 群集，此示例指定 ElastiCache 群集资源的名称 (`MyElastiCache`)，声明其类型，然后配置群集的属性。示例中的属性引用了 ElastiCache 集群子网组的名称以及我们在此配置文件中创建和定义的安全组资源的 ID。

接下来，我们会创建 EC2 安全组。我们定义此资源的名称，声明其类型，添加描述和 VPC ID，并为安全组设置传入规则以便仅允许从 Elastic Beanstalk 安全组 (`AWSEBSecurityGroup`) 中的实例进行访问。（参数名称是 Elastic Beanstalk 提供的固定资源名称。`AWSEBSecurityGroup` 您必须`AWSEBSecurityGroup`向 ElastiCache 安全组添加入口规则，这样您的 Elastic Beanstalk 应用程序才能连接到集群中的实例。） ElastiCache 

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
```

这些行告知 Elastic Beanstalk 从配置文件（在我们的示例中为 `options.config`）中的 `CacheNodeType`、`NumCacheNodes`、`Engine`、`CachePort`、`CacheSubnets` 和 `VpcId` 值获取 `CacheNodeType`、`NumCacheNodes`、`Engine`、`CachePort`、`CacheSubnets` 和 `VpcId` 属性的值。该文件包含 `aws:elasticbeanstalk:customoption` 节 (在 `option_settings` 下)，其中含有具有示例值的名称/值对。在以上示例中，对这些值使用 `cache.t2.micro`、`1`、`redis`、`6379`、`subnet-1a1a1a1a`、`subnet-2b2b2b2b`、`subnet-3c3c3c3c` 和 `vpc-4d4d4d4d`。有关 `Fn::GetOptionSetting` 的更多信息，请参阅 [函数](ebextensions-functions.md)。