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, "MultiAZEnabled" : Boolean, "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。有关更多信息,请参阅使用 Redis AUTH 命令对用户进行身份验证

重要

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

密码约束:

  • 只能为可打印 ASCII 字符。

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

  • 不能包含以下任何字符:“/”、“"”或“@”。

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

必需:否

类型:字符串

Update requires: Some interruptions

AutomaticFailoverEnabled

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

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

默认值:false

必需:否

类型:布尔值

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 中启动集群,则需要先创建子网组,然后再开始创建集群。有关更多信息,请参阅 AWS::ElastiCache::SubnetGroup

必需:否

类型:字符串

Update requires: Replacement

Engine

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

必需:否

类型:字符串

Update requires: Replacement

EngineVersion

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

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

必需:否

类型:字符串

Update requires: No interruption

KmsKeyId

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

必需:否

类型:字符串

Update requires: Replacement

MultiAZEnabled

一个标记,指示您是否启用了多可用区以增强容错能力。有关更多信息,请参阅最大程度地减少停机时间:多可用区

必需:否

类型:布尔值

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 的有效值为:

  • 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 失败。对于 Redis(已禁用集群模式)复制组,请使用 PrimaryEndpointReadEndpoint 属性。

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 属性映射到地址顺序。

ReaderEndPoint.Address

Not currently supported by AWS CloudFormation.

ReaderEndPoint.Port

Not currently supported by AWS CloudFormation.

示例

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

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

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