AWS::ElastiCache::ReplicationGroup - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::ElastiCache::ReplicationGroup

AWS::ElastiCache::ReplicationGroup 资源创建 Amazon ElastiCache Redis 复制组。复制组是缓存集群的集合,其中一个集群是主读/写集群,其他集群是只读副本。

语法

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

JSON

{ "Type" : "AWS::ElastiCache::ReplicationGroup", "Properties" : { "AtRestEncryptionEnabled" : Boolean, "AuthToken" : String, "AutomaticFailoverEnabled" : Boolean, "AutoMinorVersionUpgrade" : Boolean, "CacheNodeType" : String, "CacheParameterGroupName" : String, "CacheSecurityGroupNames" : [ String, ... ], "CacheSubnetGroupName" : String, "Engine" : String, "EngineVersion" : String, "KmsKeyId" : String, "NodeGroupConfiguration" : [ NodeGroupConfiguration, ... ], "NotificationTopicArn" : String, "NumCacheClusters" : Integer, "NumNodeGroups" : Integer, "Port" : Integer, "PreferredCacheClusterAZs" : [ String, ... ], "PreferredMaintenanceWindow" : String, "PrimaryClusterId" : String, "ReplicasPerNodeGroup" : Integer, "ReplicationGroupDescription" : String, "ReplicationGroupId" : String, "SecurityGroupIds" : [ String, ... ], "SnapshotArns" : [ String, ... ], "SnapshotName" : String, "SnapshotRetentionLimit" : Integer, "SnapshottingClusterId" : String, "SnapshotWindow" : String, "Tags" : [ Tag, ... ], "TransitEncryptionEnabled" : Boolean } }

属性

AtRestEncryptionEnabled

在设置为 true 时可启用静态加密的标记。

创建复制组后,无法修改 AtRestEncryptionEnabled 的值。要对复制组启用静态加密,您必须在创建复制组时将 AtRestEncryptionEnabled 设置为 true

必需:仅当使用 Redis 版本 3.2.64.x 及更高版本在 Amazon VPC 中创建复制组时可用。

默认值:false

必需:否

类型:布尔值

Update requires: Replacement

AuthToken

预留参数。 用于访问受密码保护的服务器的密码。

只能在 TransitEncryptionEnabledtrue 的复制组上指定 AuthToken

重要

对于 HIPAA 合规性,您必须将 TransitEncryptionEnabled 指定为 true,并指定 AuthTokenCacheSubnetGroup

密码约束:

  • 只能为可打印 ASCII 字符。

  • 长度必须至少为 16 个字符,且不能超过 128 个字符。

  • 唯一允许的可打印特殊字符是 !、&、#、$、^、<、> 和 -。其他的可打印特殊字符不能用于 AUTH 令牌中。

有关更多信息,请参阅 AUTH 密码,网址为 http://redis.io/commands/AUTH。

必需:否

类型:字符串

Update requires: Some interruptions

AutomaticFailoverEnabled

指定在现有主集群失败的情况下,是否将只读副本自动提升为读/写主集群。

如果为 true,则为此复制组启用多可用区。如果为 false,则为此复制组禁用多可用区。

必须为 Redis(已启用集群模式)复制组启用 AutomaticFailoverEnabled

默认值:false

Amazon ElastiCache for Redis 不支持以下各项上的具有自动故障转移功能的多可用区:

  • 低于 2.8.6 的 Redis 版本。

  • Redis(已禁用集群模式):T1 节点类型。

  • Redis(已启用集群模式):T1 节点类型。

必需:否

类型:布尔值

Update requires: No interruption

AutoMinorVersionUpgrade

当前已禁用此参数。

必需:否

类型:布尔值

Update requires: No interruption

CacheNodeType

节点组(分片)中的节点的计算和内存容量。

ElastiCache 支持以下节点类型。一般而言,与其上一代类型对应项相比,最新一代类型以更低的成本提供了更多内存和计算能力。

当前不支持更改 Memcached 实例的 CacheNodeType。如果您需要使用 Memcached 进行扩展,我们建议您通过更改资源的 LogicalResourceId 来强制替换更新。

  • 通用型:

    • 最新一代:

      M5 节点类型:cache.m5.largecache.m5.xlargecache.m5.2xlargecache.m5.4xlargecache.m5.12xlargecache.m5.24xlarge

      M4 节点类型:cache.m4.largecache.m4.xlargecache.m4.2xlargecache.m4.4xlargecache.m4.10xlarge

      T3 节点类型:cache.t3.microcache.t3.smallcache.t3.medium

      T2 节点类型:cache.t2.microcache.t2.smallcache.t2.medium

    • 上一代:(不推荐)

      T1 节点类型:cache.t1.micro

      M1 节点类型:cache.m1.smallcache.m1.mediumcache.m1.largecache.m1.xlarge

      M3 节点类型:cache.m3.mediumcache.m3.largecache.m3.xlargecache.m3.2xlarge

  • 计算优化:

    • 上一代:(不推荐)

      C1 节点类型:cache.c1.xlarge

  • 内存优化:

    • 最新一代:

      R5 节点类型:cache.r5.largecache.r5.xlargecache.r5.2xlargecache.r5.4xlargecache.r5.12xlargecache.r5.24xlarge

      R4 节点类型:cache.r4.largecache.r4.xlargecache.r4.2xlargecache.r4.4xlargecache.r4.8xlargecache.r4.16xlarge

    • 上一代:(不推荐)

      M2 节点类型:cache.m2.xlargecache.m2.2xlargecache.m2.4xlarge

      R3 节点类型:cache.r3.largecache.r3.xlargecache.r3.2xlargecache.r3.4xlargecache.r3.8xlarge

必需:否

类型:字符串

Update requires: No interruption

CacheParameterGroupName

要与此复制组关联的参数组的名称。如果省略此参数,则使用指定引擎的默认缓存参数组。

注意

如果要还原到与原始版本不同的引擎版本,则必须指定该版本的默认版本。例如:CacheParameterGroupName=default.redis4.0

如果您运行的是 Redis 版本 3.2.4 或更高版本,只有一个节点组(分片),并且想使用默认参数组,我们建议您按名称指定参数组。

  • 要创建 Redis(已禁用集群模式)复制组,请使用 CacheParameterGroupName=default.redis3.2

  • 要创建 Redis(已启用集群模式)复制组,请使用 CacheParameterGroupName=default.redis3.2.cluster.on

必需:否

类型:字符串

Update requires: No interruption

CacheSecurityGroupNames

要与此复制组关联的缓存安全组名称的列表。

必需:否

类型:字符串列表

Update requires: No interruption

CacheSubnetGroupName

要用于复制组的缓存子网组的名称。

重要

如果您打算在 Amazon VPC 中启动集群,则需要先创建子网组,然后再开始创建集群。有关更多信息,请参阅子网和子网组

必需:否

类型:字符串

Update requires: Replacement

Engine

要用于此复制组中的集群的缓存引擎的名称。

必需:否

类型:字符串

Update requires: Replacement

EngineVersion

要用于此复制组中的集群的缓存引擎的版本号。要查看受支持的缓存引擎版本,请使用 DescribeCacheEngineVersions 操作。

重要提示:您可以升级到较新的引擎版本(请参阅 ElastiCache 用户指南 中的选择缓存引擎和版本),但不能降级到较早的引擎版本。要使用较早的引擎版本,必须删除现有的集群或复制组,并使用较早的引擎版本重新创建。

必需:否

类型:字符串

Update requires: No interruption

KmsKeyId

用于对群集上的磁盘进行加密的 KMS 密钥 ID。

必需:否

类型:字符串

Update requires: Replacement

NodeGroupConfiguration

NodeGroupConfiguration AWS::ElastiCache::ReplicationGroup 资源的属性,该资源配置 Amazon ElastiCache (ElastiCache) Redis 集群节点组。

如果您将 UseOnlineResharding 设置为 true,您可以更新 NodeGroupConfiguration 而不会造成中断。如果未指定 UseOnlineResharding 或设置为 false,更新 NodeGroupConfiguration 将导致替换

必需:否

类型NodeGroupConfiguration列表

Update requires: Some interruptions

NotificationTopicArn

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

注意

Amazon SNS 主题拥有者与集群拥有者必须是同一人。

必需:否

类型:字符串

Update requires: No interruption

NumCacheClusters

此复制组最初具有的集群的数目。

如果有多个节点组(分片),则不使用此参数。您应改用 ReplicasPerNodeGroup

如果 AutomaticFailoverEnabledtrue,则此参数的值必须至少为 2。如果 AutomaticFailoverEnabledfalse,则可以省略此参数(默认为 1),也可以将它显式设置为介于 2 和 6 之间的值。

NumCacheClusters 的最大允许值为 6(1 个主集群加上 5 个副本)。

必需:否

类型:整数

Update requires: No interruption

NumNodeGroups

一个可选参数,用于指定此 Redis(已启用集群模式)复制组的节点组(分片)数。对于 Redis(已禁用集群模式),可以省略此参数或将它设置为 1。

如果您将 UseOnlineResharding 设置为 true,您可以更新 NumNodeGroups 而不会造成中断。如果未指定 UseOnlineResharding 或设置为 false,更新 NumNodeGroups 将导致替换

默认值:1

必需:否

类型:整数

Update requires: Some interruptions

Port

复制组的每个成员在其上接受连接的端口号。

必需:否

类型:整数

Update requires: Replacement

PreferredCacheClusterAZs

在其中创建复制组的集群的 EC2 可用区的列表。列表中的可用区顺序是分配集群的顺序。在列表中的第一个可用区中创建主集群。

如果有多个节点组(分片),则不使用此参数。您应改用 NodeGroupConfiguration

注意

如果您在 Amazon VPC 中创建复制组(推荐),则只能在与所选子网组的子网关联的可用区中查找集群。

列出的可用区的数量必须等于 NumCacheClusters 的值。

默认值:系统选择的可用区。

必需:否

类型:字符串列表

Update requires: Replacement

PreferredMaintenanceWindow

指定每周执行集群维护的时间范围。它被指定为 ddd:hh24:mi-ddd:hh24:mi 格式(24 小时制 UTC)的范围。最短维护时段是 60 分钟。ddd 的有效值为:

指定每周执行集群维护的时间范围。它被指定为 ddd:hh24:mi-ddd:hh24:mi 格式(24 小时制 UTC)的范围。最短维护时段是 60 分钟。

ddd 的有效值为:

  • sun

  • mon

  • tue

  • wed

  • thu

  • fri

  • sat

示例:sun:23:00-mon:01:30

必需:否

类型:字符串

Update requires: No interruption

PrimaryClusterId

用作此复制组的主集群的集群的标识符。该集群必须已存在且状态为 available

如果指定了 NumCacheClustersNumNodeGroupsReplicasPerNodeGroup,则不需要此参数。

必需:否

类型:字符串

Update requires: No interruption

ReplicasPerNodeGroup

一个可选参数,用于指定每个节点组(分片)中的副本节点数。有效值为 0 到 5。

必需:否

类型:整数

Update requires: Replacement

ReplicationGroupDescription

复制组的用户创建的描述。

必需:是

类型:字符串

Update requires: No interruption

ReplicationGroupId

复制组标识符。该参数作为一个小写字符串存储。

约束:

  • 名称必须包含 1 到 40 个字母数字字符或连字符。

  • 第一个字符必须是字母。

  • 名称不能以连字符结束或包含两个连续连字符。

必需:否

类型:字符串

Update requires: Replacement

SecurityGroupIds

与此复制组关联的一个或多个 Amazon VPC 安全组。

仅当在 Amazon Virtual Private Cloud (Amazon VPC) 中创建复制组时,使用此参数。

必需:否

类型:字符串列表

Update requires: No interruption

SnapshotArns

用于唯一标识存储在 Amazon S3 中的 Redis RDB 快照文件的 Amazon 资源名称 (ARN)。快照文件用于填充新的复制组。ARN 中的 Amazon S3 对象名称不能包含逗号。新复制组将具有由参数 NumNodeGroups 指定的节点组(控制台:分片)数或由 NodeGroupConfiguration 配置的节点组数,而不管此处指定的 ARN 的数量如何。

Amazon S3 ARN 的示例:arn:aws:s3:::my_bucket/snapshot1.rdb

必需:否

类型:字符串列表

Update requires: Replacement

SnapshotName

一个快照的名称,可通过该快照将数据还原到新复制组中。创建新复制组(分片)时,快照状态将更改为 restoring

必需:否

类型:字符串

Update requires: Replacement

SnapshotRetentionLimit

ElastiCache 在删除自动快照之前保留这些快照的天数。例如,如果将 SnapshotRetentionLimit 设置为 5,则今天拍摄的快照将在保留 5 天后删除。

默认值:0(即对此集群禁用自动备份)。

必需:否

类型:整数

Update requires: No interruption

SnapshottingClusterId

用作复制组的日常快照源的集群 ID。不能为 Redis(已启用集群模式)复制组设置此参数。

必需:否

类型:字符串

Update requires: No interruption

SnapshotWindow

ElastiCache 将开始获取节点组(分片)的每日快照的日常时间范围 (UTC)。

示例:05:00-09:00

如果您不指定此参数,ElastiCache 会自动选择适当的时间范围。

必需:否

类型:字符串

Update requires: No interruption

Tags

要添加到此资源的成本分配标签的列表。标签是逗号分隔的键/值对(例如,键=myKey,值=myKeyValue)。您可以包含多个标签,如下所示:键=myKey,值=myKeyValue;键=mySecondKey,值=mySecondKeyValue

必需:否

类型Tag 的列表

Update requires: No interruption

TransitEncryptionEnabled

在设置为 true 时可启用传输中加密的标记。

创建集群后,无法修改 TransitEncryptionEnabled 的值。要对集群启用传输中加密,必须在创建集群时将 TransitEncryptionEnabled 设置为 true

此参数仅在以下情况下有效:Engine 参数为 redisEngineVersion 参数为 3.2.64.x5.x,并且正在 Amazon VPC 中创建集群。

如果启用传输中加密,还必须为 CacheSubnetGroup 指定值。

必需:仅当使用 Redis 版本 3.2.64.x 及更高版本在 Amazon VPC 中创建复制组时可用。

默认值:false

重要

对于 HIPAA 合规性,您必须将 TransitEncryptionEnabled 指定为 true,并指定 AuthTokenCacheSubnetGroup

必需:否

类型:布尔值

Update requires: Replacement

返回值

Ref

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

有关使用 Ref 函数的更多信息,请参阅 Ref

Fn::GetAtt

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

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

ConfigurationEndPoint.Address

缓存节点的 DNS 主机名。

注意

Redis(已禁用集群模式)复制组没有该属性。因此,仅在复制组集群化时,Fn::GetAtt 返回该属性的值。否则,Fn::GetAtt 失败。

ConfigurationEndPoint.Port

缓存引擎正在侦听的端口号。

PrimaryEndPoint.Address

主要读/写缓存节点的 DNS 地址。

PrimaryEndPoint.Port

主要读/写缓存引擎正在侦听的端口的编号。

ReadEndPoint.Addresses

包含主副本和只读副本的终端节点列表的字符串。地址顺序从 ReadEndPoint.Ports 属性映射到端口顺序。

ReadEndPoint.Addresses.List

包含只读副本的终端节点列表的字符串。地址顺序从 ReadEndPoint.Ports 属性映射到端口顺序。

ReadEndPoint.Ports

包含只读副本的端口列表的字符串。端口顺序从 ReadEndPoint.Addresses 属性映射到地址顺序。

ReadEndPoint.Ports.List

包含只读副本的端口列表的字符串。端口顺序从 ReadEndPoint.Addresses 属性映射到地址顺序。

示例

声明具有两个节点的复制组

以下示例声明一个具有两个节点且已启用自动故障转移的复制组。

JSON

{ "myReplicationGroup": { "Type": "AWS::ElastiCache::ReplicationGroup", "Properties": { "ReplicationGroupDescription": "my description", "NumCacheClusters": "2", "Engine": "redis", "CacheNodeType": "cache.m3.medium", "AutoMinorVersionUpgrade": "true", "AutomaticFailoverEnabled": "true", "CacheSubnetGroupName": "subnetgroup", "EngineVersion": "2.8.6", "PreferredMaintenanceWindow": "wed:09:25-wed:22:30", "SnapshotRetentionLimit": "4", "SnapshotWindow": "03:30-05:30" } } }

YAML

myReplicationGroup: Type: 'AWS::ElastiCache::ReplicationGroup' Properties: ReplicationGroupDescription: my description NumCacheClusters: '2' Engine: redis CacheNodeType: cache.m3.medium AutoMinorVersionUpgrade: 'true' AutomaticFailoverEnabled: 'true' CacheSubnetGroupName: subnetgroup EngineVersion: 2.8.6 PreferredMaintenanceWindow: 'wed:09:25-wed:22:30' SnapshotRetentionLimit: '4' SnapshotWindow: '03:30-05:30'

声明具有两个节点组的复制组

以下示例声明了一个复制组,该组具有两个节点组(分区),每个组中有三个副本。

JSON

{ "BasicReplicationGroup": { "Type": "AWS::ElastiCache::ReplicationGroup", "Properties": { "AutomaticFailoverEnabled": true, "AutoMinorVersionUpgrade": true, "CacheNodeType": "cache.r3.large", "CacheSubnetGroupName": { "Ref": "CacheSubnetGroup" }, "Engine": "redis", "EngineVersion": "3.2", "NumNodeGroups": "2", "ReplicasPerNodeGroup": "3", "Port": 6379, "PreferredMaintenanceWindow": "sun:05:00-sun:09:00", "ReplicationGroupDescription": "A sample replication group", "SecurityGroupIds": [ { "Ref": "ReplicationGroupSG" } ], "SnapshotRetentionLimit": 5, "SnapshotWindow": "10:00-12:00" } } }

YAML

BasicReplicationGroup: Type: 'AWS::ElastiCache::ReplicationGroup' Properties: AutomaticFailoverEnabled: true AutoMinorVersionUpgrade: true CacheNodeType: cache.r3.large CacheSubnetGroupName: !Ref CacheSubnetGroup Engine: redis EngineVersion: '3.2' NumNodeGroups: '2' ReplicasPerNodeGroup: '3' Port: 6379 PreferredMaintenanceWindow: 'sun:05:00-sun:09:00' ReplicationGroupDescription: A sample replication group SecurityGroupIds: - !Ref ReplicationGroupSG SnapshotRetentionLimit: 5 SnapshotWindow: '10:00-12:00'

另请参阅

Amazon ElastiCache API 参考指南 中的 CreateReplicationGroup