

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

# 管理集群
<a name="clusters"></a>

大多数 MemoryDB 操作在集群级别上执行。可以使用特定数量的节点和一个控制各个节点属性的参数组来设置集群。一个集群中的所有节点都应该是相同的节点类型，具有相同的参数和安全组设置。

每个集群必须有一个集群标识符。集群标识符是用户为集群提供的名称。此标识符指定了一个在与 MemoryDB API 和 AWS CLI 命令互动时的特殊集群。该客户在一个 AWS 区域中的集群标识符必须是唯一的。

MemoryDB 集群旨在通过 Amazon EC2 实例进行访问。您只能根据 Amazon VPC 服务在虚拟私有云（VPC）中启动 MemoryDB 集群，但是您可以从 AWS外部进行访问。有关更多信息，请参阅 [从外部 AWS 访问 MemoryDB 资源](accessing-memorydb.md#access-from-outside-aws)。

# 数据分层
<a name="data-tiering"></a>

使用 r6gd 系列节点类型的集群将在内存和本地 SSD（固态硬盘）存储之间进行数据分层。借助数据分层功能，除可在内存中存储数据外，还可以在每个集群节点中使用成本更低的固态硬盘（SSD），从而为 Valkey 和 Redis OSS 工作负载提供新的高性价比选择。类似于其他节点类型，写入 r6gd 节点的数据持久存储在多可用区事务日志中。数据分层非常适合经常访问的数据不超过总体数据集的 20% 的工作负载，以及能够容忍访问 SSD 中数据时所出现的额外延迟的应用程序。

对于启用了数据分层功能的集群，MemoryDB 会监控集群所存储每个项目的最近访问时间。当可用内存（DRAM）耗尽时，MemoryDB 将使用最近最少使用（LRU）算法，自动将不频繁访问的项目从内存移动到 SSD 中。随后访问 SSD 上的数据时，MemoryDB 会在处理请求之前自动异步将其移回内存中。如果您的工作负载只会经常访问部分数据，则数据分层将是经济高效地扩缩容量的极佳方法。

请注意，使用数据分层时，键本身始终保留在内存中，而 LRU 将控制值在内存和磁盘上的位置。通常，在使用数据分层时，我们建议您的键大小小于值。

数据分层旨在将对应用程序工作负载的性能影响降至最低。例如，假设 500 字节的字符串值，与读取请求存储在内存中的数据相比，读取请求存储在 SSD 上的数据通常预计增加 450 微秒的延迟。

如果使用最大型号的数据分层节点（db.r6gd.8xlarge），您可以在单个 500 节点集群中存储最高 \$1500TB 的数据（使用 1 个只读副本时 250TB）。对于数据分层，请 MemoryDB 为每个节点预留 19% 的（DRAM）内存用于非数据目的。数据分层功能兼容 MemoryDB 中支持的所有 Valkey 和 Redis OSS 命令和数据结构。使用此功能无需任何客户端更改。

**Topics**
+ [最佳实践](data-tiering-best-practices.md)
+ [数据分层限制](data-tiering-prerequisites.md)
+ [数据分层定价](data-tiering-pricing.md)
+ [数据分层监控](data-tiering-monitoring.md)
+ [数据分层功能的使用](data-tiering-enabling.md)
+ [将数据从快照还原到集群](data-tiering-enabling-snapshots.md)

# 最佳实践
<a name="data-tiering-best-practices"></a>

我们建议您遵循以下最佳实践：
+ 数据分层非常适合经常访问的数据不超过总体数据集的 20% 的工作负载，以及能够容忍访问 SSD 中数据时所出现的额外延迟的应用程序。
+ 在数据分层节点上使用可用的 SSD 容量时，我们建议值大小大于键。值大小不能大于 128MB；否则无法将其移动到磁盘。在 DRAM 和 SSD 之间移动项目时，键将始终保留在内存中，并且只有值会移动到 SSD 层。

# 数据分层限制
<a name="data-tiering-prerequisites"></a>

数据分层功能存在以下限制：
+ 您使用的节点类型必须属于 r6gd 系列，目前可在以下区域使用：`us-east-2`、`us-east-1`、`us-west-2`、`us-west-1`、`eu-west-1`、`eu-west-3`、`eu-central-1`、`ap-northeast-1`、`ap-southeast-1`、`ap-southeast-2`、`ap-south-1`、`ca-central-1` 和 `sa-east-1`。
+ 除非两个集群都为 r6gd 集群，否则不能将 r6gd 集群的快照还原到其他集群。
+ 不能将使用数据分层功能的集群快照导出到 Amazon S3。
+ 不支持无分支保存。
+ 不支持将使用数据分层功能的集群（例如，使用 r6gd 节点类型的集群）扩缩至不使用数据分层功能的集群（例如，使用 r6g 节点类型的集群）。
+ 数据分层仅支持 `volatile-lru`、`allkeys-lru` 和 `noeviction` maxmemory 策略。
+ 大于 128MiB 的项目不会移动到 SSD。

# 数据分层定价
<a name="data-tiering-pricing"></a>

与 R6g 节点（仅内存）相比，R6gd 节点的总存储容量（内存 \$1 SSD）提高了 5 倍，以最大利用率运行时可帮助实现超过 60% 的存储成本节省。有关更多信息，请参阅 [MemoryDB 定价](https://aws.amazon.com/memorydb/pricing/)。

# 数据分层监控
<a name="data-tiering-monitoring"></a>

MemoryDB 提供了若干专用于监控使用数据分层功能的高性能集群的指标。要监控 DRAM 中项目与 SSD 中项目的比率，您可以在 [MemoryDB 的指标](metrics.memorydb.md) 使用 `CurrItems` 指标。您可以按以下方式计算百分比：`(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter)`。

 如果配置的驱逐策略允许，则当内存中项目的百分比降至 5% 以下时，MemoryDB 将开始驱逐项目。在配置了 noeviction 策略的节点上，写入操作将收到内存不足错误。

 当内存中项目的百分比降至 5% 以下时，仍建议您考虑 [扩展 MemoryDB 集群](scaling-cluster.md)。有关更多信息，请参阅 [MemoryDB 的指标](metrics.memorydb.md) 中的*适用于使用数据分层功能的 MemoryDB 集群的指标*。

# 数据分层功能的使用
<a name="data-tiering-enabling"></a>

## 通过 AWS 管理控制台使用数据分层功能
<a name="data-tiering-enabling-console"></a>

您可在创建集群时选择 r6gd 系列的节点类型（例如 *db.r6gd.xlarge*），从而使用数据分层功能。选择该节点类型将会自动启用数据分层功能。

有关创建集群的更多信息，请参阅[步骤 2：创建集群](getting-started.md#getting-started.createcluster)。

## 通过 AWS CLI 启用数据分层
<a name="data-tiering-enabling-cli"></a>

您可在使用 AWS CLI 创建集群时选择 r6gd 系列的节点类型（例如 *db.r6gd.xlarge*）并设置 `--data-tiering` 参数，从而使用数据分层功能。

选择 r6gd 系列的节点类型时，您将不能选择停止使用数据分层功能。如果您设置 `--no-data-tiering` 参数，操作将会失败。

对于 Linux、macOS 或 Unix：

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey  \
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering
```

对于 Windows：

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg
   --data-tiering
```

运行此操作后，您将会看到一条与以下类似的响应：

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",        
        "ACLName": "my-acl",
        "DataTiering":"true",
        "AutoMinorVersionUpgrade": true
    }
}
```

# 将数据从快照还原到集群
<a name="data-tiering-enabling-snapshots"></a>

您可以通过（控制台）、（AWS CLI）或 （MemoryDB API）将数据从快照还原到启用数据分层的新集群。当您使用 r6gd 系列的节点类型创建集群时，系统会启用数据分层。

## 将数据从快照还原到启用数据分层的集群（控制台）
<a name="data-tiering-enabling-snapshots-console"></a>

要将快照还原到启用数据分层的新集群（控制台），请按照 [从快照还原（控制台）](snapshots-restoring.md#snapshots-restoring-CON) 中的步骤操作

请注意，如要启用数据分层，需要选择 r6gd 系列的节点类型。

## 将数据从快照还原到启用数据分层的集群（AWS CLI）
<a name="data-tiering-enabling-snapshots-cli"></a>

使用 AWS CLI 创建集群时，选择 r6gd 系列的节点类型（例如 *db.r6gd.xlarge*）并设置 `--data-tiering` 参数后，系统会默认启用数据分层。

选择 r6gd 系列的节点类型时，您将不能选择停止使用数据分层功能。如果您设置 `--no-data-tiering` 参数，操作将会失败。

对于 Linux、macOS 或 Unix：

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey 
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering \
   --snapshot-name my-snapshot
```

对于 Windows：

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg ^
   --data-tiering ^
   --snapshot-name my-snapshot
```

运行此操作后，您将会看到一条与以下类似的响应：

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",
        "ACLName": "my-acl",       
        "DataTiering": "true"
}
```

# 准备集群
<a name="clusters.prepare"></a>

接下来，可找到有关使用 MemoryDB 控制台、 AWS CLI或 MemoryDB API 创建集群的说明。

每当创建集群时，最好做一些准备工作，这样就无需立即升级或进行更改。

**Topics**
+ [确定要求](cluster-create-determine-requirements.md)

# 确定要求
<a name="cluster-create-determine-requirements"></a>

**准备**  
了解以下问题的答案有助于使集群的创建更加流畅：
+ 开始创建集群之前，请确保同一 VPC 中创建一个子网组。或者使用提供的默认子网组。有关更多信息，请参阅 [子网和子网组](subnetgroups.md)。

  MemoryDB 专为 AWS 使用 Amazon EC2 从内部访问而设计。但是，如果根据 Amazon VPC 在 VPC 中启动，则可以提供从 AWS外部进行访问的权限。有关更多信息，请参阅 [从外部 AWS 访问 MemoryDB 资源](accessing-memorydb.md#access-from-outside-aws)。
+ 您是否需要自定义任何参数值？

  如果这样做，请创建自定义参数组。有关更多信息，请参阅 [创建参数组](parametergroups.creating.md)。
+ 您是否需要创建 VPC 安全组？ 

  有关更多信息，请参阅[您的 VPC 的安全性](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)。
+ 您想如何实现容错？

  有关更多信息，请参阅 [缓解故障](faulttolerance.md)。

**Topics**
+ [内存和处理器要求](#cluster-create-determine-requirements-memory)
+ [MemoryDB 集群配置](#cluster-configuration)
+ [增强的 I/O 多路复用](#cluster-create-determine-requirements-multiplexing)
+ [扩展要求](#cluster-create-determine-requirements-scaling)
+ [访问要求](#cluster-create-determine-requirements-access)
+ [区域和可用区](#cluster-create-determine-requirements-region)

## 内存和处理器要求
<a name="cluster-create-determine-requirements-memory"></a>

MemoryDB 的基本构建模块是节点。节点在分片中配置以形成集群。在确定用于集群的节点类型时，请考虑集群的节点配置以及必须存储的数据量。

## MemoryDB 集群配置
<a name="cluster-configuration"></a>

MemoryDB 集群由 1 到 500 个分片组成。MemoryDB 集群中的数据在集群的分片间分区。您的应用程序使用称为端点的网络地址与 MemoryDB 集群连接。除了节点端点外，MemoryDB 集群本身还具有一个称为*集群端点*的端点。您的应用程序可以使用此端点来读取或写入集群，从而由 MemoryDB 决定要读取或写入的节点。

## 增强的 I/O 多路复用
<a name="cluster-create-determine-requirements-multiplexing"></a>

如果您运行的是 Valkey 或 Redis OSS 7.0 或更高版本，则通过增强的 I/O 多路复用将获得额外的加速，其中每个专用的网络 IO 利用高效地批量处理命令的能力，将来自多个客户端的命令线程化到引擎中。有关更多信息，请参阅[超快性能](https://aws.amazon.com/memorydb/features/#Ultra-fast_performance)和 [受支持的节点类型](nodes.supportedtypes.md)。

## 扩展要求
<a name="cluster-create-determine-requirements-scaling"></a>

所有集群都可以纵向扩展为更大的节点类型。纵向扩展 MemoryDB 集群时，您可以联机操作，以确保集群保持可用，也可以从快照为新集群做种，以免新集群启动时为空。

有关更多信息，请参阅本指南中的[扩展](scaling.md)。

## 访问要求
<a name="cluster-create-determine-requirements-access"></a>

根据设计，MemoryDB 集群可通过 Amazon EC2 实例进行访问。对 MemoryDB 集群的网络访问限制为创建该集群的账户。因此，必须先授权对集群的输入，然后您才能从 Amazon EC2 实例访问集群。有关详细说明，请参阅本指南中的 [步骤 3：授予对集群的访问权限](getting-started.md#getting-started.authorizeaccess)。

## 区域和可用区
<a name="cluster-create-determine-requirements-region"></a>

通过将 MemoryDB 集群放置在靠近应用程序的 AWS 区域中，可以减少延迟。如果集群有多个节点，将节点放置在不同的可用区可减少故障对集群的影响。

有关更多信息，请参阅下列内容：
+ [选择区域和可用区](regionsandazs.md)
+ [缓解故障](faulttolerance.md)

# 创建集群
<a name="cluster.create"></a>

MemoryDB 提供了三种创建集群的方法。有关更多信息，请参阅 [步骤 2：创建集群](getting-started.md#getting-started.createcluster)。

# 查看集群的详细信息
<a name="clusters.viewdetails"></a>

您可以使用 MemoryDB 控制台或 MemoryDB API 查看有关一个或多个集群的详细信息。 AWS CLI

## 查看 MemoryDB 集群的详细信息（控制台）
<a name="clusters.viewdetails.con"></a>

以下过程详细说明了如何使用 MemoryDB 控制台查看 MemoryDB 集群的详细信息。

****

1. 登录 AWS 管理控制台 并打开 MemoryDB 控制台，网址为。[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)

1. 要查看集群的详细信息，请选择集群名称左侧的单选按钮，然后选择**查看详细信息**。您还可以直接单击集群查看集群详细信息页面。

   **集群详细信息**页面显示集群的详细信息，包括集群端点。您可以使用**集群详细信息**页面中的多个选项卡查看更多详细信息。

1. 要查看集群分片的列表及每个分片的节点数量，请选择**分片和节点**选项卡。

1. 要查看有关节点的特定信息，请展开下表中的分片。或者使用搜索框搜索分片。

   这样做会显示有关每个节点的信息，包括其可用 slots/keyspaces 区和状态。

1. 选择**指标**选项卡监控各指标的进程，例如 **CPU 利用率**和**引擎 CPU 利用率**。有关更多信息，请参阅 [MemoryDB 的指标](metrics.memorydb.md)。

1. 选择**网络和安全性**选项卡查看子网组和安全组的详细信息。

   1. 在**子网组**中，可以查看子网组名称、子网所属 VPC 的链接以及子网组的 Amazon 资源名称（ARN）。

   1. 在**安全组**中，可以查看安全组 ID、名称和描述。

1. 选择**维护和快照**选项卡查看快照设置的详细信息。

   1. 在**快照**中，可以查看是否启用了自动快照、快照保留期和快照时段。

   1. 在**快照**中，可以查看该集群的所有快照列表，包括快照名称、大小、分片数量和状态。

   有关更多信息，请参阅 [快照和还原](snapshots.md)。

1. 选择**维护和快照**选项卡查看维护时段的详细信息以及所有待处理的 ACL、重新分片或服务更新。有关更多信息，请参阅 [管理维护](maintenance-window.md)。

1. 选择**服务更新**选项卡查看适用于此集群的任何服务更新的详细信息。有关更多信息，请参阅 [MemoryDB 中的服务更新](service-updates.md)。

1. 选择**标签**选项卡查看与此集群关联的任何资源或成本分配标签的详细信息。有关更多信息，请参阅 [标记快照](snapshots-tagging.md)。

## 查看集群的详细信息 (AWS CLI)
<a name="clusters.viewdetails.cli"></a>

您可以使用 AWS CLI `describe-clusters`命令查看集群的详细信息。如果省略 `--cluster-name` 参数，则会返回多个集群（最多 `--max-results` 个）的详细信息。如果包含 `--cluster-name` 参数，则将返回指定的集群的详细信息。您可以使用 `--max-results` 参数限制返回的记录数。

以下代码列出了 `my-cluster` 的详细信息。

```
aws memorydb describe-clusters --cluster-name my-cluster
```

以下代码列出了最多 25 个集群的详细信息。

```
aws memorydb describe-clusters --max-results 25
```

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws memorydb describe-clusters \
    --cluster-name my-cluster \
    --show-shard-details
```
对于 Windows：  

```
aws memorydb describe-clusters ^
    --cluster-name my-cluster ^
    --show-shard-details
```
以下 JSON 输出显示响应：  

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Description": "my cluster",
            "Status": "available",
            "NumberOfShards": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0001-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": 1629230643.961,
                            "Endpoint": {
                                "Address": "my-cluster-0001-001.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0001-002",
                            "Status": "available",
                            "CreateTime": 1629230644.025,
       	       	       	    "Endpoint":	{
       	       	       	       	"Address": "my-cluster-0001-002.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
       	       	       	       	"Port":	6379
       	       	       	    }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "default",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:000000000:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "sat:06:30-sat:07:30",
            "SnapshotWindow": "04:00-05:00",
            "ACLName": "open-access",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true,            
        }
```

有关更多信息，请参阅 for MemoryDB 主题。 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html)

## 查看集群的详细信息（MemoryDB API）
<a name="clusters.viewdetails.api"></a>

您可以使用 MemoryDB API `DescribeClusters` 操作查看集群的详细信息。如果包含 `ClusterName` 参数，则将返回指定的集群的详细信息。如果省略 `ClusterName` 参数，则会返回最多 `MaxResults` 个（默认 100 个）集群的详细信息。`MaxResults` 的值不能小于 20 或大于 100。

以下代码列出了 `my-cluster` 的详细信息。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeClusters
   &ClusterName=my-cluster
   &Version=2021-01-01
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```

以下代码列出了最多 25 个集群的详细信息。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeClusters
   &MaxResults=25
   &Version=2021-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```

有关更多信息，请参阅 MemoryDB API 参考主题 [https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html)。

# 修改 MemoryDB 集群
<a name="clusters.modify"></a>

除了对集群添加或移除节点外，有时您可能还需要对现有集群做出其他更改，如添加安全组、更改维护时段或参数组。

我们建议您将维护时段设置在使用率最低的时间内。因此，维护时段需要不时进行修改。

当您更改集群的参数时，更改会立即应用到集群。无论您是更改集群的参数组本身，还是更改集群参数组内的参数值，都是如此。

您还可以更新集群的引擎版本。例如，您可以选择新的引擎次要版本，MemoryDB 将立即开始更新集群。

## 使用 AWS 管理控制台
<a name="clusters.modifyclusters.viewdetails"></a>

**修改集群**

1. 登录 AWS 管理控制台 并打开 MemoryDB 控制台，网址为。[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)

1. 从右上角的列表中，选择要修改的集群所在的 AWS 区域。

1. 在左侧导航栏中，转到**集群**。在**集群的详细信息**中，使用单选按钮选择集群，并转到**操作**，然后选择**修改**。

1. 此时会显示**修改**页面。

1. 在**修改**窗口中，根据需要做出修改。选项包括：
   + 说明
   + 子网组
   + VPC 安全组
   + 节点类型
**注意**  
如果集群使用 r6gd 系列的节点类型，则只能选择该系列中的不同节点大小。如果您选择 r6gd 系列的节点类型，则系统会自动启用数据分层。有关更多信息，请参阅 [数据分层](data-tiering.md)。
   + Valkey 或 Redis OSS 版本兼容性
   + 启用自动快照
   + 快照保留期
   + 快照窗口
   + 维护窗口
   + SNS 通知的主题

1. 选择**保存更改**。

您还可以转到**集群详细信息**页面，然后单击**修改**对集群进行修改。如果要修改集群的特定章节，请转到**集群详细信息**页面中的相应选项卡，然后单击**修改**。

## 使用 AWS CLI
<a name="clusters.modify.cli"></a>

您可以使用 AWS CLI `update-cluster`操作修改现有集群。要修改集群的配置值，请指定集群的 ID、要更改的参数和此参数的新值。以下示例更改名为 `my-cluster` 的集群的维护时段，并立即应用此更改。

对于 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --preferred-maintenance-window sun:23:00-mon:02:00
```

对于 Windows：

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --preferred-maintenance-window sun:23:00-mon:02:00
```

有关更多信息，请参阅《命令参考》中的 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。 AWS CLI 

## 使用 MemoryDB API
<a name="clusters.modify.api"></a>

您可以使用 MemoryDB API [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)操作修改现有集群。要修改集群的配置值，请指定集群的 ID、要更改的参数和此参数的新值。以下示例更改名为 `my-cluster` 的集群的维护时段，并立即应用此更改。

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=UpdateCluster
    &ClusterName=my-cluster
    &PreferredMaintenanceWindow=sun:23:00-mon:02:00
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210801T220302Z
    &X-Amz-Algorithm=Amazon4-HMAC-SHA256
    &X-Amz-Date=20210802T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20210801T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

## 如何触发从 Redis OSS 到 Valkey 的跨引擎升级
<a name="clusters.modifyclusters.cross-engine"></a>

您可以使用控制台、API 或 CLI 将现有 Redis OSS 集群升级到 Valkey 引擎。

如果您有一个使用默认参数组的现有 Redis OSS 集群，则可以通过使用 update-cluster API 指定新的引擎和引擎版本来升级到 Valkey。

对于 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
   --cluster-name myCluster \
   --engine valkey \
   --engine-version 7.2
```

对于 Windows：

```
aws memorydb update-cluster ^
   --cluster-name myCluster ^
   --engine valkey ^
   --engine-version 7.2
```

如果您对要升级的现有 Redis OSS 集群应用了自定义参数组，则还需要在请求中传递自定义 Valkey 参数组。输入 Valkey 自定义参数组必须具有与现有 Redis OSS 自定义参数组相同的 Redis OSS 静态参数值。

对于 Linux、macOS 或 Unix：

```
aws memorydb update-cluster \
   --cluster-name myCluster \
   --engine valkey \
   --engine-version 7.2 \
   --parameter-group-name myParamGroup
```

对于 Windows：

```
aws memorydb update-cluster ^
   --cluster-name myCluster ^
   --engine valkey ^
   --engine-version 7.2 ^
   --parameter-group-name myParamGroup
```

# 从集群中添加/移除节点
<a name="clusters.deletenode"></a>

您可以使用 AWS 管理控制台、或 MemoryDB API 在集群中 AWS CLI添加或移除节点。

## 使用 AWS 管理控制台
<a name="clusters.deletenodeclusters.viewdetails"></a>

****

1. 登录 AWS 管理控制台 并打开 MemoryDB 控制台，网址为。[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)

1. 从集群列表中，选择要从中添加或删除节点的集群的名称。

1. 在**分片和节点**选项卡下，选择**添加/删除节点**

1. 在**节点数**中，输入所需的节点数。

1. 选择**确认**。
**重要**  
如果您将节点数量设为 1，则无法再启动多可用区。您还可以选择启用**自动失效转移**。

## 使用 AWS CLI
<a name="clusters.deletenode.cli"></a>

1. 确定要删除的节点的名称。有关更多信息，请参阅 [查看集群的详细信息](clusters.viewdetails.md)。

1. 将 `update-cluster` CLI 操作与要删除的节点列表一起使用，如下例所示。

   要使用命令行界面从集群中移除节点，请结合以下参数使用命令 `update-cluster`：
   + `--cluster-name` 要从其中删除节点的集群的 ID。
   + `--replica-configuration` – 允许您设置副本的数量：
     + `ReplicaCount` – 设置此属性指定想要的副本节点数量。
   + `--region`指定要从中移除节点的集群 AWS 区域。

   对于 Linux、macOS 或 Unix：

   ```
   aws memorydb update-cluster \
       --cluster-name my-cluster \
       --replica-configuration \
           ReplicaCount=1 \
       --region us-east-1
   ```

   对于 Windows：

   ```
   aws memorydb update-cluster ^
       --cluster-name my-cluster ^
       --replica-configuration ^
           ReplicaCount=1 ^
       --region us-east-1
   ```

有关更多信息，请参阅 AWS CLI 主题[https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)。

## 使用 MemoryDB API
<a name="clusters.deletenode.api"></a>

要使用 MemoryDB API 删除节点，请使用集群名称和要删除节点的列表调用 `UpdateCluster` API 操作，如下所示：
+ `ClusterName` 要从其中删除节点的集群的 ID。
+ `ReplicaConfiguration` – 允许您设置副本的数量：
  + `ReplicaCount` – 设置此属性指定想要的副本节点数量。
+ `Region`指定要从中移除节点的集群 AWS 区域。

有关更多信息，请参阅 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)。

# 访问您的集群
<a name="accessing-memorydb"></a>

MemoryDB 实例设计为通过 Amazon EC2 实例对其进行访问。

您可以从同一 Amazon VPC 中的 Amazon EC2 实例访问 MemoryDB 节点。或者，通过使用 VPC 对等连接，您可以从不同 Amazon VPC 中的 Amazon EC2 访问您的 MemoryDB 节点。

**Topics**
+ [授予对集群的访问权限](#grant-access)
+ [从外部 AWS 访问 MemoryDB 资源](#access-from-outside-aws)

## 授予对集群的访问权限
<a name="grant-access"></a>

您只能从正在同一 Amazon VPC 中运行的 Amazon EC2 实例连接到您的 MemoryDB 集群。在此情况下，您需要向集群授予网络进入。

**授予从 Amazon VPC 安全组到集群的网络入口**

1. 登录到 AWS 管理控制台 并打开 Amazon EC2 控制台（[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)）。

1. 在左侧导航窗格中的**网络和安全**下，选择**安全组**。

1. 从安全组列表中，为 Amazon VPC 选择安全组。除非创建安全组供 MemoryDB 使用，否则此安全组将命名为*默认*。

1. 选择 **Inbound** 选项卡，然后执行以下操作：

   1. 选择 **Edit**（编辑）。

   1. 选择**添加规则**。

   1. 在 **Type** 列中，选择 **Custom TCP rule**。

   1. 在 **Port range** 框中，为您的集群节点键入端口号。此端口号必须与启动集群时指定的端口号相同。Valkey 和 Redis OSS 的默认端口均为 **6379**。

   1. 在**源**框中，选择端口范围为（0.0.0.0/0）的**任何位置**，以便从 Amazon VPC 中启动的任何 Amazon EC2 实例都可以连接到您的 MemoryDB 节点。
**重要**  
向 0.0.0.0/0 公开 MemoryDB 集群时，不会在互联网上公开集群，因为它没有公有 IP 地址，因此无法从 VPC 外部访问。但是，默认安全组可以应用到客户账户中的其他 Amazon EC2 实例，这些实例可能具有公有 IP 地址。如果这些实例碰巧在默认端口上运行某些内容，则该服务可能会意外暴露。因此，我们建议创建将由 MemoryDB 独占使用的 VPC 安全组。有关更多信息，请参阅[自定义安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups)。

   1. 选择**保存**。

当您将 Amazon EC2 实例启动到您的 Amazon VPC 中时，该实例将能够连接到您的 MemoryDB 集群。

## 从外部 AWS 访问 MemoryDB 资源
<a name="access-from-outside-aws"></a>

MemoryDB 是一项设计为在 VPC 内部使用的服务。由于 Internet 流量的延迟以及安全问题，不鼓励外部访问。但是，如果出于测试或开发目的需要对 MemoryDB 进行外部访问，则可以通过 VPN 完成。

使用 AWS 客户端 VPN，您允许对 MemoryDB 节点进行外部访问且具有以下优势：
+ 限制访问获得批准的用户或身份验证密钥；
+ VPN 客户端与 AWS VPN 端点之间的加密流量；
+ 对特定子网或节点的限制访问；
+ 轻松撤消对用户或身份验证密钥的访问；
+ 审核连接；

以下过程演示如何：

**Topics**
+ [创建证书颁发机构](#create-cert)
+ [配置 AWS 客户端 VPN 组件](#configure-vpn-components)
+ [配置 VPN 客户端](#configure-vpn-client)

### 创建证书颁发机构
<a name="create-cert"></a>

可以使用不同的技术或工具创建证书颁发机构（CA）。我们建议使用 [OpenVPN](https://openvpn.net/community-resources/openvpn-project/) 项目提供的 easy-rsa 实用程序。无论您选择哪种选项，请确保密钥安全。以下过程下载 easy-rsa 脚本，创建证书颁发机构和用于验证第一个 VPN 客户端的密钥：
+ 要创建初始证书，请打开终端并执行以下操作：
  + `git clone` [https://github.com/OpenVPN/easy-rsa](https://github.com/OpenVPN/easy-rsa)
  + `cd easy-rsa`
  + `./easyrsa3/easyrsa init-pki`
  + `./easyrsa3/easyrsa build-ca nopass`
  + `./easyrsa3/easyrsa build-server-full server nopass`
  + `./easyrsa3/easyrsa build-client-full client1.domain.tld nopass`

  **pki** 子目录包含将在 **easy-rsa** 下创建的证书。
+ 将服务器证书提交给 AWS Certificate Manager（ACM）：
  + 在 ACM 控制台上，选择 **Certificate Manager**。
  + 选择**导入证书**。
  + 将 `easy-rsa/pki/issued/server.crt` 文件中提供的公有密钥证书输入到**证书文本**字段中。
  + 在 **Certificate private key（证书私有密钥）**中 `easy-rsa/pki/private/server.key` 的粘贴可用私有密钥。确保选择 `BEGIN AND END PRIVATE KEY` 之间的所有行（包括 `BEGIN` 和 `END` 行）。
  + 将 `easy-rsa/pki/ca.crt` 文件中提供的 CA 公用密钥粘贴到**证书链**字段中。
  + 选择**查看并导入**。
  + 选择**导入**。

  要使用 AWS CLI 将服务器的证书提交给 ACM，请运行以下命令：`aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region`

  请记下证书 ARN 以供将来使用。

### 配置 AWS 客户端 VPN 组件
<a name="configure-vpn-components"></a>

**使用 AWS 控制台**

在 AWS 控制台上，选择 **Services（服务）**，然后选择 **VPC**。

在**虚拟专用网**下，选择**客户端 VPN 终端节点**并执行以下操作：

**配置 AWS Client VPN 组件**
+ 选择**创建客户端 VPN 端点**。
+ 指定以下选项：
  + **客户端 IPv4 CIDR**：使用具有至少 /22 范围的网络掩码的专用网络。确保所选子网与 VPC 网络的地址不冲突。示例：10.0.0.0/22。
  + 在**服务器证书 ARN** 中，选择之前导入的证书的 ARN。
  + 选择**使用双向身份验证**。
  + 在**客户端证书 ARN** 中，选择之前导入的证书的 ARN。
  + 选择**创建客户端 VPN 端点**。

**使用 AWS CLI**

运行以下命令：

`aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false `

输出示例：

`"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" } `

**将目标网络关联到 VPN 终端节点**
+ 选择新的 VPN 终端节点，然后选择**关联**选项卡。
+ 选择**关联**并指定以下选项。
  + **VPC**：选择 MemoryDB 集群的 VPC。
  + 选择其中一个 MemoryDB 集群的网络。如果有疑问，请在 MemoryDB 控制面板上查看**子网组** 中的网络。
  + 选择**关联**。如有必要，请为其余网络重复执行这些步骤。

**使用 AWS CLI**

运行以下命令：

`aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef`

输出示例：

`"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" } `

**查看 VPN 安全组**

VPN 终端节点将自动采用 VPC 的默认安全组。检查入站和出站规则，并确认安全组是否允许从 VPN 网络（在 VPN 端点设置中定义）到服务端口上的 MemoryDB 网络的流量（默认情况下，对于 Redis 为 6379）。

如果您需要更改分配给 VPN 终端节点的安全组，请按以下步骤操作：
+ 选择当前安全组。
+ 选择**应用安全组**。
+ 选择新的安全组。

**使用 AWS CLI**

运行以下命令：

`aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef`

输出示例：

`"SecurityGroupIds": [ "sg-0123456789abdcdef" ] } `

**注意**  
MemoryDB 安全组还需要允许来自 VPN 客户端的流量。根据 VPC 网络，客户端的地址将被 VPN 终端节点地址掩盖。因此，在 MemoryDB 安全组上创建入站规则时，请考虑 VPC 网络（而不是 VPN 客户端的网络）。

**授权 VPN 访问目标网络**

在**授权**选项卡上，选择**授权入口**并指定以下内容：
+ 启用访问的目标网络：使用 0.0.0.0/0 以允许访问任何网络（包括互联网），或限制 MemoryDB 网络/主机。
+ 在**授予访问权限：**下，选择**允许访问所有用户**。
+ 选择**添加授权规则**。

**使用 AWS CLI**

运行以下命令：

`aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups`

输出示例：

`{ "Status": { "Code": "authorizing" } }`

**允许从 VPN 客户端访问 Internet**

如果您需要通过 VPN 浏览 Internet，则需要创建一个额外的路由。选择**路由表**选项卡，然后单击**创建路由**。
+ 路由目的地：0.0.0.0/0
+ **目标 VPC 子网 ID**：选择可访问 Internet 的关联子网之一。
+ 选择**创建路由**。

**使用 AWS CLI**

运行以下命令：

`aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef`

输出示例：

`{ "Status": { "Code": "creating" } } `

### 配置 VPN 客户端
<a name="configure-vpn-client"></a>

在 AWS Client VPN 控制面板上，选择最近创建的 VPN 端点，然后选择 **Download Client Configuration（下载客户端配置）**。复制配置文件，以及文件 `easy-rsa/pki/issued/client1.domain.tld.crt` 和 `easy-rsa/pki/private/client1.domain.tld.key`。编辑配置文件并更改或添加以下参数：
+ cert：添加一个新行，其参数证书指向 `client1.domain.tld.crt` 文件。使用到文件的完整路径。示例：`cert /home/user/.cert/client1.domain.tld.crt`
+ cert: key：添加一个新行，其参数键指向 `client1.domain.tld.key` 文件。使用到文件的完整路径。示例：`key /home/user/.cert/client1.domain.tld.key`

使用以下命令建立 VPN 连接：`sudo openvpn --config downloaded-client-config.ovpn`

**撤消访问权限**

如果您需要使来自特定客户端密钥的访问失效，则需要在 CA 中撤消该密钥。然后，将吊销列表提交到 AWS Client VPN。

使用 easy-rsa 撤消密钥：
+ `cd easy-rsa`
+ `./easyrsa3/easyrsa revoke client1.domain.tld`
+ 输入“是” 以继续，或输入任何其他输入以中止。

  `Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl`
+ 已创建更新的 CRL。CRL 文件：`/home/user/easy-rsa/pki/crl.pem`

将吊销列表导入到 AWS Client VPN：
+ 在 AWS 管理控制台 上，选择**服务**，然后选择 **VPC**。
+ 选择**客户端 VPN 端点**。
+ 选择客户端 VPN 端点，然后选择**操作** -> **导入客户端证书 CRL**。
+ 查看 `crl.pem` 文件的内容。

**使用 AWS CLI**

运行以下命令：

`aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg `

输出示例：

`Example output: { "Return": true } `

# 查找连接端点
<a name="endpoints"></a>

您的应用程序使用端点连接到集群。端点是集群的唯一的地址。使用该集群的*集群端点*进行所有操作。

以下部分将引导您发现所需的端点。

## 查找 MemoryDB 集群（AWS 管理控制台）的端点
<a name="endpoints.find.console"></a>

**查找 MemoryDB 集群的端点**

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 从导航窗格中，选择**集群**。

   集群屏幕随即出现，其中显示集群的列表。选择您想要连接到的集群。

1. 要查找集群的端点，请选择集群的名称（不是单选按钮）。

1. **集群详细信息**下将显示**集群端点**。要复制它，请选择位于端点左侧的 *copy*（复制）图标。

## 查找 MemoryDB 集群的端点（AWS CLI）
<a name="endpoints.find.cli"></a>

您可以使用 `describe-clusters` API 命令来搜索集群的端点。该命令将返回集群的端点。

以下操作检索集群 `mycluster` 的端点，本例以*示例*形式表示。

返回以下 JSON 响应：

```
aws memorydb describe-clusters \
  --cluster-name mycluster
```

对于 Windows：

```
aws memorydb describe-clusters ^
   --cluster-name mycluster
```

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Status": "available",
            "NumberOfShards": 1,
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.4",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "my-sg",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:zzzexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

有关更多信息，请参阅 [describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html)。

## 查找 MemoryDB 集群的端点（MemoryDB API）
<a name="endpoints.find.api"></a>

您可以使用 MemoryDB API 来搜索集群的端点。

### 查找 MemoryDB 集群的端点（MemoryDB API）
<a name="endpoints.find.api.clusters"></a>

您可以使用 MemoryDB API，通过 `DescribeClusters` 操作查找集群的端点。该操作将返回集群的端点。

以下操作检索集群 `mycluster` 的集群端点。

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=DescribeClusters
    &ClusterName=mycluster
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210802T192317Z
    &Version=2021-01-01
    &X-Amz-Credential=<credential>
```

有关更多信息，请参阅 [DescribeClusters](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html)。

# 使用分片
<a name="shards"></a>

分片是 1 到 6 个节点的集合。您可以创建具有更多分片和更少副本的集群，每个集群最多可包含 500 个节点。此集群配置的范围可以从 500 个分片和 0 个副本到 100 个分片和 4 个副本，这是允许的最大副本数。集群的数据分配到该集群的各个分片上。如果分片包含多个节点，则该分片实现了一个节点作为读取/写入主节点且其他节点为只读副本节点的复制。

使用 AWS 管理控制台 创建 MemoryDB 集群时，您可以指定集群中的分片数和分片中的节点数。有关更多信息，请参阅 [创建 MemoryDB 集群](getting-started.md#clusters.create)。

分片中每个节点的计算、存储和内存规格均相同。通过 MemoryDB API 可以控制集群范围的属性，如节点数、安全设置和系统维护时段。

有关更多信息，请参阅[MemoryDB 的离线重新分片](cluster-resharding-offline.md)和[MemoryDB 的在线重新分片](cluster-resharding-online.md)。

## 查找分片的名称
<a name="shard-find-id"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 MemoryDB API 查找分片名称。

### 使用 AWS 管理控制台
<a name="shard-find-id-con"></a>

以下过程使用 AWS 管理控制台 来查找 MemoryDB 集群的分片名称。

****

1. 登录到 AWS 管理控制台 并打开 MemoryDB 控制台，网址：[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/)。

1. 在左侧导航窗格中，选择**集群**。

1. 在**名称**下，选择要查找其分片名称的集群。

1. 在**分片和节点**选项卡下，在**名称**下查看分片列表。您还可以展开每项以查看这些节点的详细信息。

### 使用 AWS CLI
<a name="shard-find-id-cli"></a>

要查找 MemoryDB 集群的分片（分片）名称，请使用带有以下可选参数的 AWS CLI 操作 `describe-clusters`。
+ ** `--cluster-name` **——用来将输出限制为指定集群的详细信息的可选参数。如果忽略此参数，将返回最多 100 个集群的详细信息。
+ **`--show-shard-details`**——返回分片详细信息，包括分片名称。

此命令将返回 `my-cluster` 的详细信息。

对于 Linux、macOS 或 Unix：

```
aws memorydb describe-clusters \
    --cluster-name my-cluster
    --show-shard-details
```

对于 Windows：

```
aws memorydb describe-clusters ^
    --cluster-name my-cluster
    --show-shard-details
```

返回以下 JSON 响应：

添加换行符以便于阅读。

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Status": "available",
            "NumberOfShards": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0001-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-21T20:22:12.405000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0001-002",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1b",
                            "CreateTime": "2021-08-21T20:22:12.405000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "my-sg",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:xxxxxexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

### 使用 MemoryDB API
<a name="shard-find-id-api"></a>

要查找 MemoryDB 集群的分片 ID，请使用带有以下可选参数的 API 操作 `DescribeClusters`。
+ ** `ClusterName` **——用来将输出限制为指定集群的详细信息的可选参数。如果忽略此参数，将返回最多 100 个集群的详细信息。
+ **`ShowShardDetails`**——返回分片详细信息，包括分片名称。

**Example**  
此命令将返回 `my-cluster` 的详细信息。  
对于 Linux、macOS 或 Unix：  

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeClusters
   &ClusterName=sample-cluster
   &ShowShardDetails=true
   &Version=2021-01-01
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```