Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

管理 DAX 集群

本节介绍 DAX 集群的一些常见管理任务。

用于管理 DAX 集群的 IAM 权限

在使用 AWS 管理控制台或 AWS CLI 管理 DAX 集群时,强烈建议您缩小用户可执行的操作的范围。通过这样做,您可以帮助在遵循最小权限准则的同时降低风险。

以下讨论侧重于 DAX 管理 API 的访问控制 (请参阅 Amazon DynamoDB API Reference中的 Amazon DynamoDB Accelerator)。

注意

有关管理 IAM 权限的更多详细信息,请参阅以下内容:

对于 DAX 管理 API,您无法将 API 操作的范围限定为特定资源。Resource 元素必须设置为 "*"。(请注意,这与诸如 GetItemQueryScan 这样的 DAX 数据平面 API 操作不同。数据平面操作通过 DAX 客户端公开,并且这些操作的范围可以 限定为特定资源。)

为了说明这种情况,请考虑以下 IAM 策略文档:

Copy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }

假定此策略旨在仅允许集群 DAXCluster01 的 DAX 管理 API 调用。

现在,假定用户发出以下 AWS CLI 命令:

Copy
aws dax describe-clusters

此命令将失败,并显示“Not Authorized”异常,因为基础 DescribeClusters API 调用的范围不能限定为特定集群。即使策略在语法上是有效的,此命令也将失败,因为 Resource 元素必须设置为 "*"。不过,如果用户运行一个程序来将 DAX 数据平面调用 (如 GetItemQuery) 发送到 DAXCluster01,则这些调用 会成功。这是因为 DAX 数据平面 API 的范围可限定为特定资源 (在本示例中为 DAXCluster01)。

若要编写一个全面的 IAM 策略来涵盖 DAX 管理 API 和 DAX 数据平面 API,建议您在策略文档中包含两个不同的语句。其中一个语句用于 DAX 数据平面 API,另一个语句用于 DAX 管理 API。

以下示例策略说明了此方法。注意将 DAXDataAPIs 语句的范围限定为 DAXCluster01 资源的方式,而 DAXManagementAPIs 的资源必须为 "*"。(每个语句中显示的操作仅用于说明;您可以根据需要为您的应用程序自定义这些操作。)

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXDataAPIs", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:DefineAttributeList", "dax:DefineAttributeListId", "dax:DefineKeySchema", "dax:Endpoints" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ]}, { "Sid": "DAXManagementAPIs", "Action": [ "dax:CreateParameterGroup", "dax:CreateSubnetGroup", "dax:DecreaseReplicationFactor", "dax:DeleteCluster", "dax:DeleteParameterGroup", "dax:DeleteSubnetGroup", "dax:DescribeClusters", "dax:DescribeDefaultParameters", "dax:DescribeEvents", "dax:DescribeParameterGroups", "dax:DescribeParameters", "dax:DescribeSubnetGroups", "dax:IncreaseReplicationFactor", "dax:ListTags", "dax:RebootNode", "dax:TagResource", "dax:UntagResource", "dax:UpdateCluster", "dax:UpdateParameterGroup", "dax:UpdateSubnetGroup" ], "Effect": "Allow", "Resource": [ "*" ] } ] }

自定义 DAX 集群设置

在创建 DAX 集群时,请使用以下默认设置:

  • 启用自动缓存移出,将 TTL 设置为 5 分钟

  • 无可用区首选项

  • 无维护时段首选项

  • 已禁用通知

您无法对当前正在运行的 DAX 集群更改这些设置。但是,对于新集群,您可以在创建时自定义设置。要在 AWS 管理控制台中执行此操作,请取消选择 Use default settings 以修改以下设置:

  • Network and Security - 让您在当前 AWS 区域内的不同可用区 (AZ) 中运行各个 DAX 集群节点。如果选择了 No Preference,这些节点将自动分配到各个可用区。

  • Parameter Group - 应用于集群中的每个节点的一组命名参数。您可以使用参数组指定缓存生存时间 (TTL) 行为。

  • Maintenance Window - 每周内的一个时间段,在此期间,软件将升级,补丁将应用于集群中的节点。您可以选择维护时段的开始日期、开始时间和持续时间。如果选择了 No Preference,维护时段将随机从每个区域的 8 小时时间段中选出。(有关更多信息,请参阅 Maintenance Window。)

当发生维护事件时,DAX 可使用 Amazon Simple Notification Service (Amazon SNS) 通知您。要配置通知,请从 Topic for SNS notification 选择器中选择一个选项。您可以创建一个新 Amazon SNS 主题,也可以使用现有主题。(有关设置和订阅 Amazon SNS 主题的更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的 Amazon Simple Notification Service 入门指南。)

扩展 DAX 集群

有两个可用于扩展 DAX 集群的选项。第一个选项是读取扩展,即将只读副本添加到集群。第二个选项是选择不同的节点类型。

读取扩展

利用读取扩展,您可以将更多只读副本添加到集群,从而增加吞吐量。一个 DAX 集群最多可支持 9 个只读副本,并且您可以在集群运行时添加或删除副本。

以下 AWS CLI 示例显示如何增加或减少节点数。--new-replication-factor 参数指定集群中的节点的总数 - 其中一个节点为主节点,其他节点为只读副本。

Copy
aws dax increase-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 5
Copy
aws dax decrease-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 3

注意

当您修改重复因子时,集群状态将更改为 modifying。当状态更改为 available 时,集群便可再次使用。

节点类型

如果您有一大批正在运行的数据,您的应用程序可能会受益于使用较大的节点类型。较大的节点可让集群在内存中存储更多数据,从而减少缓存未命中数和提高应用程序的整体性能。(注意,一个 DAX 集群中的所有节点都必须属于同一类型。)

您无法修改正在运行的 DAX 集群中的节点类型。相反,您必须使用所需的节点类型创建新集群。有关受支持的节点类型的列表,请参阅节点

您可以使用 AWS 管理控制台或 AWS CLI 创建新 DAX 集群。(对于后者,请使用 --node-type 参数指定节点类型。)

配置 TTL 设置

DAX 为其从 DynamoDB 读取的数据维护两种缓存:

  • 项目缓存 - 针对使用 GetItem 或 BatchGetItem 检索到的项目。

  • 查询缓存 - 针对使用 Query 或 Scan 检索到的结果集。

有关详细信息,请参阅项目缓存查询缓存

所有这些缓存的默认生存时间 (TTL) 均为 5 分钟。如果您要使用不同的 TTL 设置,则可以使用自定义参数组启动 DAX 集群。要在 AWS 管理控制台中执行此操作,请选择导航窗格中的 DAX | Parameter groups

您还可以使用 AWS CLI 执行这些任务。以下示例显示了如何使用自定义参数组启动新 DAX 集群。在此示例中,项目缓存 TTL 将设置为 10 分钟,查询缓存 TTL 将设置为 3 分钟。

  1. 创建新的参数组。

    Copy
    aws dax create-parameter-group \ --parameter-group-name custom-ttl
  2. 将项目缓存 TTL 设置为 10 分钟 (600000 毫秒)。

    Copy
    aws dax modify-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
  3. 将查询缓存 TTL 设置为 3 分钟 (180000 毫秒)。

    Copy
    aws dax modify-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
  4. 确认已正确设置参数。

    Copy
    aws dax describe-parameters --parameter-group-name custom-ttl \ --query "Parameters[*].[ParameterName,Description,ParameterValue]"

您现在可以使用此参数组启动新 DAX 集群:

Copy
aws dax create-cluster \ --cluster-name MyNewCluster \ --node-type dax.r3.large \ --replication-factor 3 \ --iam-role-arn arn:aws:iam::123456789012:role/DAXServiceRole \ --parameter-group custom-ttl

注意

您无法修改由正在运行的 DAX 实例使用的参数组。

针对 DAX 的标记支持

许多 AWS 服务 (包括 DynamoDB) 都支持标记 - 能够使用用户定义的名称来标记资源。您可以将标签分配给 DAX 集群,这样您可以快速识别您的所有具有同一标签的 AWS 资源,或按照您分配的标签对 AWS 账单分类。

注意

有关更多信息,请参阅 DynamoDB 的标签

使用 AWS 管理控制台

管理 DAX 集群标签

  1. 通过以下网址打开 DynamoDB 控制台:https://console.amazonaws.cn/dynamodb/

  2. 在导航窗格中的 DAX 标题的下方,选择 Clusters

  3. 选择要使用的集群。

  4. 选择 Tags 选项卡。您可在此处添加、列出、编辑或删除标签。

    根据需要设置完毕后,选择 Apply Changes

AWS CLI

在使用 AWS CLI 管理 DAX 集群标签时,您必须先确定集群的 Amazon 资源名称 (ARN)。以下示例说明如何确定名为 MyDAXCluster 的集群的 ARN:

Copy
aws dax describe-clusters \ --cluster-name MyDAXCluster \ --query "Clusters[*].ClusterArn"

在输出中,ARN 与以下内容类似:arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster

以下示例说明如何为集群添加标签:

Copy
aws dax tag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tags="Key=ClusterUsage,Value=prod"

列出集群的所有标签:

Copy
aws dax list-tags \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster

要删除标签,请指定标签键:

Copy
aws dax untag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tag-keys ClusterUsage

AWS CloudTrail 集成

DAX 将与 AWS CloudTrail 集成,使您能够审计 DAX 集群活动。您可以使用 CloudTrail 日志来查看已在集群级别进行的所有更改以及对集群组件 (例如,节点、子网组和参数组) 进行的更改。有关更多信息,请参阅 使用 AWS CloudTrail 记录 DynamoDB 操作

删除 DAX 集群

如果您不再使用某个 DAX 集群,则应删除它以避免为未使用的资源付费。

您可以通过 AWS 管理控制台或从 AWS CLI 删除 DAX 集群。示例如下:

Copy
aws dax delete-cluster --cluster-name mydaxcluster