AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::ElastiCache::CacheCluster

类型 AWS::ElastiCache::CacheCluster 可用于创建 Amazon ElastiCache 缓存群集。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::ElastiCache::CacheCluster", "Properties" : { "AutoMinorVersionUpgrade" : Boolean, "AZMode" : String, "CacheNodeType" : String, "CacheParameterGroupName" : String, "CacheSecurityGroupNames" : [ String, ... ], "CacheSubnetGroupName" : String, "ClusterName" : String, "Engine" : String, "EngineVersion" : String, "NotificationTopicArn" : String, "NumCacheNodes" : Integer, "Port" : Integer, "PreferredAvailabilityZone" : String, "PreferredAvailabilityZones" : [String, ... ], "PreferredMaintenanceWindow" : String, "SnapshotArns" : [String, ... ], "SnapshotName" : String, "SnapshotRetentionLimit" : Integer, "SnapshotWindow" : String, "Tags" : [Resource Tag, ...], "VpcSecurityGroupIds" : [String, ...] } }

YAML

Type: "AWS::ElastiCache::CacheCluster" Properties: AutoMinorVersionUpgrade: Boolean AZMode: String CacheNodeType: String CacheParameterGroupName: String CacheSecurityGroupNames: - String CacheSubnetGroupName: String ClusterName: String Engine: String EngineVersion: String NotificationTopicArn: String NumCacheNodes: Integer Port: Integer PreferredAvailabilityZone: String PreferredAvailabilityZones: - String PreferredMaintenanceWindow: String SnapshotArns: - String SnapshotName: String SnapshotRetentionLimit: Integer SnapshotWindow: String Tags: - Resource Tag VpcSecurityGroupIds: - String

属性

有关有效值,请参阅 Amazon ElastiCache API Reference 中的 CreateCacheCluster

AutoMinorVersionUpgrade

表示在维护窗口期间,将对该缓存群集自动应用次要引擎升级。

Required: No

Type: Boolean

默认值true

更新要求无需中断

AZMode

对于 Memcached 缓存群集,指示是在单个可用区中创建节点,还是在该群集区域中的多个可用区创建节点。有关有效值,请参阅 Amazon ElastiCache API Reference 中的 CreateCacheCluster

Required: Conditional。如果在 PreferredAvailabilityZones 属性中指定多个可用区,则必须为该属性指定跨可用区。

Type: String

更新要求无需中断

CacheNodeType

缓存群集中的节点的计算和内存容量。

Required: Yes

Type: String

更新要求时而中断

CacheParameterGroupName

此缓存群集相关缓存参数组的名称。

Required: No

Type: String

更新要求时而中断

CacheSecurityGroupNames

与此缓存群集相关的缓存安全组名称列表。如果您的缓存群集在 VPC 中,请改为指定 VpcSecurityGroupIds 属性。

Required: Conditional:如果缓存群集不在 VPC 中,则必须指定此属性。

Type: List of String values

更新要求无需中断

CacheSubnetGroupName

您与缓存群集关联的缓存子网组。

Required: Conditional。如果您指定了 VpcSecurityGroupIds 属性,则必须指定该属性。

Type: String

更新要求替换

ClusterName

缓存群集的名称。如果不指定名称,则 AWS CloudFormation 生成一个唯一的物理 ID 并将该 ID 用于缓存群集。有关更多信息,请参阅 名称类型

重要

如果指定一个名称,您将无法执行需要替换此资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

名称必须包含 1 到 20 个字母数字字符或连字符。名称必须以字母开头,并且不能以连字符结束或包含两个连续的连字符。

Required: No

Type: String

更新要求替换

Engine

要用于此缓存群集的缓存引擎的名称,如 memcachedredis

Required: Yes

Type: String

更新要求替换

EngineVersion

要用于此群集的缓存引擎的版本。

Required: No

Type: String

更新要求时而中断

NotificationTopicArn

向其发送通知的目标 Amazon Simple Notification Service (SNS) 主题的 Amazon 资源名称 (ARN)。

Required: No

Type: String

更新要求无需中断

NumCacheNodes

缓存群集应该拥有的缓存节点的数量。

Required: Yes

Type: Integer

更新要求无需中断. 但是,如果此前未指定 PreferredAvailabilityZonePreferredAvailabilityZones 属性且不指定任何新值,则更新需要替换

Port

各缓存节点接受连接的端口编号。

Required: No

Type: Integer

更新要求替换

PreferredAvailabilityZone

用于创建缓存群集的 Amazon EC2 可用区。

Required: No

Type: String

更新要求替换

PreferredAvailabilityZones

对于 Memcached 缓存群集,用于创建缓存节点的可用区的列表。列出的可用区的数量必须等于缓存节点的数量。例如,如果需要在两个不同可用区中创建三个节点,则可以指定 ["us-east-1a", "us-east-1a", "us-east-1b"],这会在 us-east-1a 中创建两个节点,在 us-east-1b 中创建一个节点。

如果指定子网组并且要在 VPC 中创建缓存群集,则必须指定与已选择的子网组中的子网关联的可用区。

如果要让所有节点位于同一个可用区中,请使用 PreferredAvailabilityZone 属性或在列表中重复该可用区多次。

Required: No

Type: List of String values

如果指定此前已在模板中指定的可用区(例如,在 PreferredAvailabilityZone 属性中指定),则更新需要某些中断。此外,如果已指定 PreferredAvailabilityZones 属性并且要更新该属性的值(无论是否指定相同可用区),则更新需要某些中断

所有其他更新需要替换

PreferredMaintenanceWindow

可能进行系统维护的每周时间范围(按世界协调时间计算)。

Required: No

Type: String

更新要求无需中断

SnapshotArns

要用来为新 Redis 缓存群集做种的快照文件的 ARN。如果您在 Amazon ElastiCache 的外部管理 Redis 实例,则可使用存储在 Amazon S3 存储桶中的快照文件在 ElastiCache 中创建新缓存群集。

Required: No

Type: List of String values

更新要求替换

SnapshotName

要从中将数据还原为新的 Redis 缓存群集的快照的名称。

Required: No

Type: String

更新要求替换

SnapshotRetentionLimit

对于 Redis 缓存群集,ElastiCache 在删除自动快照之前保留这些快照的天数。例如,如果将值设置为 5,则今天获取的快照将在保留 5 天后删除。

Required: No

Type: Integer

更新要求无需中断

SnapshotWindow

对于 Redis 缓存群集,ElastiCache 将开始获取节点组的每日快照的日常时间范围 (UTC)。例如,您可以指定 05:00-09:00

Required: No

Type: String

更新要求无需中断

Tags

此缓存群集的任意标签组(键/值对)。

Required: No

Type: AWS CloudFormation 资源标签

更新要求无需中断.

VpcSecurityGroupIds

VPC 的安全组 ID 列表。如果您的缓存群集不在 VPC 中,请指定 CacheSecurityGroupNames 属性。

注意

您必须使用 AWS::EC2::SecurityGroup 资源而不是 AWS::ElastiCache::SecurityGroup 资源来指定处于 VPC 中的 ElastiCache 安全组。此外,如果对您的 AWS 账户使用默认 VPC,则必须使用 Fn::GetAtt 函数和 GroupId 属性才能检索安全组 ID(而不是使用 Ref 函数)。要查看示例模板,请参阅“模板代码段”部分。

Required: Conditional:如果缓存群集在 VPC 中,则必须指定此属性。

Type: List of String values

更新要求无需中断

返回值

Ref

当该资源的逻辑 ID 提供给 Ref内部函数时,Ref 将返回资源名称。

有关使用 Ref 功能的更多信息,请参阅参考

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

ConfigurationEndpoint.Address

Memcached 缓存群集的配置终端节点的 DNS 地址。

ConfigurationEndpoint.Port

Memcached 缓存群集的配置终端节点的端口号。

RedisEndpoint.Address

Redis 缓存群集的配置终端节点的 DNS 地址。

RedisEndpoint.Port

Redis 缓存群集的配置终端节点的端口号。

有关使用 Fn::GetAtt 的更多信息,请参见 Fn::GetAtt

模板代码段

默认 VPC 中的群集

下述代码段描述默认 VPC 中的安全组中的 ElastiCache 群集。通常,VPC 中的安全组要求指定 VPC ID。本例中不需要 VPC ID,这是因为该安全组使用默认 VPC。如果要为安全组指定 VPC,请指定其 VpcId 属性。

对于缓存群集,VpcSecurityGroupIds 属性用于将群集与安全组关联。因为 VpcSecurityGroupIds 属性需要安全组 ID(而不是安全组名称),所以模板代码段对 ElasticacheSecurityGroup 资源使用 Fn::GetAtt 函数而不是 Ref 函数。Ref 函数将返回安全组名称。如果为安全组指定 VPC ID,则 Ref 返回安全组 ID。

请注意,InstanceSecurityGroup 是指实际并未在此代码段中定义的安全组的逻辑名称。如需了解有关 SourceSecurityGroupName 属性的更多信息,请参阅 AWS::EC2::SecurityGroupIngress

JSON

"ElasticacheSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Elasticache Security Group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "11211", "ToPort": "11211", "SourceSecurityGroupName": {"Ref": "InstanceSecurityGroup"} } ] } }, "ElasticacheCluster": { "Type": "AWS::ElastiCache::CacheCluster", "Properties": { "AutoMinorVersionUpgrade": "true", "Engine": "memcached", "CacheNodeType": "cache.t2.micro", "NumCacheNodes": "1", "VpcSecurityGroupIds": [{"Fn::GetAtt": [ "ElasticacheSecurityGroup", "GroupId"]}] } }

YAML

ElasticacheSecurityGroup: Type: "AWS::EC2::SecurityGroup" Properties: GroupDescription: "Elasticache Security Group" SecurityGroupIngress: - IpProtocol: "tcp" FromPort: "11211" ToPort: "11211" SourceSecurityGroupName: Ref: "InstanceSecurityGroup" ElasticacheCluster: Type: "AWS::ElastiCache::CacheCluster" Properties: AutoMinorVersionUpgrade: "true" Engine: "memcached" CacheNodeType: "cache.t2.micro" NumCacheNodes: "1" VpcSecurityGroupIds: - Fn::GetAtt: - "ElasticacheSecurityGroup" - "GroupId"

多个可用区中的 Memcached 节点

下面的示例启动含有三个节点的缓存群集,其中两个节点是在 us-west-2a 中创建的,一个节点是在 us-west-2b 中创建的。

JSON

"myCacheCluster" : { "Type": "AWS::ElastiCache::CacheCluster", "Properties" : { "AZMode" : "cross-az", "CacheNodeType" : "cache.m3.medium", "Engine" : "memcached", "NumCacheNodes" : "3", "PreferredAvailabilityZones" : [ "us-west-2a", "us-west-2a", "us-west-2b" ] } }

YAML

myCacheCluster: Type: "AWS::ElastiCache::CacheCluster" Properties: AZMode: "cross-az" CacheNodeType: "cache.m3.medium" Engine: "memcached" NumCacheNodes: "3" PreferredAvailabilityZones: - "us-west-2a" - "us-west-2a" - "us-west-2b"

另请参阅