AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

代码段示例:ElastiCache

下列示例将一个 Amazon ElastiCache 集群分别添加到 EC2-Classic 和 EC2-VPC(默认和自定义 Amazon Virtual Private Cloud (Amazon VPC))平台。有关这些平台以及如何确定对于您的区域和 AWS 账户 EC2 支持哪些平台的更多信息,请参阅https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-supported-platforms.html。然后请参阅本主题中适用于您的平台的部分。

EC2-Classic 平台

此示例将一个 Amazon ElastiCache 集群添加到在 EC2-Classic 平台中启动实例的环境。此示例中列出的所有属性是为每种资源类型必须设置的最低要求。您可以在 ElastiCache 示例下载该示例。

注意

本示例将创建 AWS 资源,您可能要为其付费。有关 AWS 定价的更多信息,请参阅 http://www.amazonaws.cn/pricing/。某些服务是 AWS 免费使用套餐的一部分。如果您是新客户,则可免费试用这些服务。参阅 http://www.amazonaws.cn/free/ 了解更多信息。

要使用此示例,请执行下列操作:

  1. 在源包的顶级目录中创建 .ebextensions 目录。

  2. 创建两个扩展名为 .config 的配置文件并将其放入您的 .ebextensions 目录。一个配置文件定义资源,另一个配置文件定义选项。

  3. 将您的应用程序部署到 Elastic Beanstalk。

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

创建定义资源的配置文件 (例如,elasticache.config)。在此示例中,我们通过指定 ElastiCache 集群资源的名称 (MyElastiCache),声明它的类型,然后配置集群的属性,从而创建 ElastiCache 集群。该示例引用在此配置文件中创建和定义的 ElastiCache 安全组资源的名称。接下来,我们会创建 ElastiCache 安全组。我们会定义这个资源的名称、声明它的类型和添加该安全组的描述。最后,我们设置 ElastiCache 安全组的进入规则,以便仅为 ElastiCache 安全组 (MyCacheSecurityGroup) 和 Elastic Beanstalk 安全组 (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

有关此示例配置文件中使用的资源的更多信息,请参阅以下参考:

创建名为 options.config 的单独配置文件,并定义自定义选项设置。

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

这些行会指示 Elastic Beanstalk 从配置文件(本示例中为 options.config)的 CacheNodeType、NumCacheNodes 和 Engine 值中获取 CacheNodeType、NumCacheNodes 和 Engine 属性的值,该配置文件的 option_settings 部分带有 aws:elasticbeanstalk:customoption 部分,后者的名称-值对中包含了实际要使用的值。在以上示例中,这意味着 cache.m1.small、1 和 memcached 将用于这些值。有关 Fn::GetOptionSetting 的更多信息,请参阅函数

EC2-VPC (默认)

此示例将一个 Amazon ElastiCache 集群添加到在 EC2-VPC 平台中启动实例的环境。具体来说,此部分中的信息适用于 EC2 在默认 VPC 中启动实例的情景。此示例中的所有属性是为每种资源类型必须设置的最低要求。有关默认 VPC 的更多信息,请参阅您的默认 VPC 和子网

注意

本示例将创建 AWS 资源,您可能要为其付费。有关 AWS 定价的更多信息,请参阅 http://www.amazonaws.cn/pricing/。某些服务是 AWS 免费使用套餐的一部分。如果您是新客户,则可免费试用这些服务。参阅 http://www.amazonaws.cn/free/ 了解更多信息。

要使用此示例,请执行下列操作:

  1. 在源包的顶级目录中创建 .ebextensions 目录。

  2. 创建两个扩展名为 .config 的配置文件并将其放入您的 .ebextensions 目录。一个配置文件定义资源,另一个配置文件定义选项。

  3. 将您的应用程序部署到 Elastic Beanstalk。

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

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

接下来,我们会创建 EC2 安全组。我们定义此资源的名称,声明其类型,添加描述,并为安全组设置传入规则以便仅允许从 Elastic Beanstalk 安全组 (AWSEBSecurityGroup) 中的实例进行访问。(参数名称 AWSEBSecurityGroup 是 Elastic Beanstalk 提供的固定资源名称。您必须将 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.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

这些行指示 Elastic Beanstalk 从配置文件(在我们的示例中为 options.config)中的 CacheNodeTypeNumCacheNodesEngineCachePort 值获取 CacheNodeTypeNumCacheNodesEngineCachePort 属性的值。该文件包含 aws:elasticbeanstalk:customoption 节 (在 option_settings 下),其中含有要使用的实际值的名称/值对。在前面的示例中,会对这些值使用 cache.t1.micro1redis6379。有关 Fn::GetOptionSetting 的更多信息,请参阅函数

EC2-VPC (自定义)

如果您在 EC2-VPC 平台上创建自定义 VPC 并将它指定为 EC2 在其中启动实例的 VPC,则向环境添加 Amazon ElastiCache 集群的过程与默认 VPC 的过程不同。主要区别在于您必须为 ElastiCache 集群创建子网组。此示例中的所有属性是为每种资源类型必须设置的最低要求。

注意

本示例将创建 AWS 资源,您可能要为其付费。有关 AWS 定价的更多信息,请参阅 http://www.amazonaws.cn/pricing/。某些服务是 AWS 免费使用套餐的一部分。如果您是新客户,则可免费试用这些服务。参阅 http://www.amazonaws.cn/free/ 了解更多信息。

要使用此示例,请执行下列操作:

  1. 在源包的顶级目录中创建 .ebextensions 目录。

  2. 创建两个扩展名为 .config 的配置文件并将其放入您的 .ebextensions 目录。一个配置文件定义资源,另一个配置文件定义选项。

  3. 将您的应用程序部署到 Elastic Beanstalk。

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

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

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

EC2 安全组的传入规则还定义缓存节点可以用于接受连接的 IP 协议和端口号。对于 Redis,默认端口号是 6379。最后,此示例为 ElastiCache 集群创建子网组。我们定义此资源的名称,声明其类型,并在子网组中添加子网的描述和 ID。

注意

我们建议您对 ElastiCache 集群使用私有子网。有关具有私有子网的 VPC 的更多信息,请参阅https://docs.amazonaws.cn/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,然后定义自定义选项设置。

注意

在以下示例中,将示例 CacheSubnetsVpcId 值替换为自己的子网和 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

这些行指示 Elastic Beanstalk 从配置文件(在我们的示例中为 options.config)中的 CacheNodeTypeNumCacheNodesEngineCachePortCacheSubnetsVpcId 值获取 CacheNodeTypeNumCacheNodesEngineCachePortCacheSubnetsVpcId 属性的值。该文件包含 aws:elasticbeanstalk:customoption 节 (在 option_settings 下),其中含有具有示例值的名称/值对。在以上示例中,对这些值使用 cache.t1.micro1redis6379subnet-1a1a1a1asubnet-2b2b2b2bsubnet-3c3c3c3cvpc-4d4d4d4d。有关 Fn::GetOptionSetting 的更多信息,请参阅 函数