

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理 DAX 叢集
<a name="DAX.cluster-management"></a>

本節將介紹一些常見的 Amazon DynamoDB Accelerator (DAX) 叢集管理任務。

**Topics**
+ [管理 DAX 叢集的 IAM 許可](#DAX.cluster-management.iam-permissions)
+ [擴展 DAX 叢集](#DAX.cluster-management.scaling)
+ [自訂 DAX 叢集設定](#DAX.cluster-management.custom-settings)
+ [配置 TTL 設定](#DAX.cluster-management.custom-settings.ttl)
+ [DAX 的標記支援](#DAX.management.tagging)
+ [AWS CloudTrail 整合](#DAX.management.cloudtrail)
+ [刪除 DAX 叢集](#DAX.cluster-management.deleting)

## 管理 DAX 叢集的 IAM 許可
<a name="DAX.cluster-management.iam-permissions"></a>

當您使用 AWS 管理主控台 或 AWS Command Line Interface (AWS CLI) 管理 DAX 叢集時，強烈建議您縮小使用者可以執行的動作範圍。這樣做有利於降低風險，同時遵循最低權限。

以下的討論著重於 DAX 管理 API 的存取控制。如需更細資訊，請參閱《Amazon DynamoDB API 參考》中的 [Amazon DynamoDB Accelerator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB_Accelerator_(DAX).html)。

**注意**  
如需管理 AWS Identity and Access Management (IAM) 許可的詳細資訊，請參閱下列內容：  
IAM 和建立 DAX 叢集：[建立 DAX 叢集](DAX.create-cluster.md)。
IAM 與 DAX 資料平面操作：[DAX 存取控制](DAX.access-control.md)。

針對 DAX 管理 API，您無法將 API 動作範圍侷限於某項特定資源。`Resource` 元素必須設為 `"*"`。這與 DAX 資料平面 API 操作不同，例如 `GetItem`、`Query` 和 `Scan`。資料平面操作是透過 DAX 用戶端公開，而且這些操作的範圍*可以*侷限於特定的資源。

為了示範，請考慮以下 IAM 政策文件。

------
#### [ JSON ]

****  

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

------

假設此政策的目的是允許叢集的 DAX 管理 API 呼叫 `DAXCluster01`，且僅限該叢集。

現在假設使用者發出下列 AWS CLI 命令。

```
aws dax describe-clusters
```

此命令會因為未授權異常而失敗，因為基礎 `DescribeClusters` API 呼叫範圍無法侷限於特定叢集。即使此政策在語法上有效，命令仍會失敗，因為 `Resource` 元素必須設為 `"*"`。但若使用者執行某個程式，將 DAX 資料平面呼叫 (例如 `GetItem` 或 `Query`) 傳送至 `DAXCluster01`，則這些呼叫*會*成功。這是因為 DAX 資料平面 API 的範圍可侷限在特定的資源 (此案例中為 `DAXCluster01`)。

如果您想要撰寫單一的全方位 IAM 政策，將 DAX 管理 API 和 DAX 資料平面 API 都包含在內，建議您在政策文件中包含兩個不同的陳述式。其中一個陳述式應該處理 DAX 資料平面 API，而另一個陳述式則處理 DAX 管理 API。

以下範例政策示範這種方法。請注意 `DAXDataAPIs` 陳述式的範圍如何侷限在 `DAXCluster01` 資源範圍內，但 `DAXManagementAPIs` 的資源必須是 `"*"`。每個陳述式中顯示的動作都僅供示範使用。您可以視需要為您的應用程式自訂他們。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DAXDataAPIs",
            "Action": [
                "dax:GetItem",
                "dax:BatchGetItem",
                "dax:Query",
                "dax:Scan",
                "dax:PutItem",
                "dax:UpdateItem",
                "dax:DeleteItem",
                "dax:BatchWriteItem"
            ],
            "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 叢集
<a name="DAX.cluster-management.scaling"></a>

調整 DAX 叢集有兩種可用選項。第一個選項是 *horizontal scaling (水平擴展)*，您可在此將僅供讀取複本新增至叢集。第二個選項是 *vertical scaling (垂直擴展*)，您可在此選取不同的節點類型。如果需要如何為應用程式選擇適當叢集大小和節點類型的建議，請參閱 [DAX 叢集調整大小指南](DAX.sizing-guide.md)。

### 水平擴展
<a name="DAX.cluster-management.scaling.read-scaling"></a>

使用水平擴展，您可以將更多的唯讀複本新增至叢集，改善輸送量。單一 DAX 叢集最多支援 10 個僅供讀取複本，您可在叢集執行時新增或移除複本。

您新增節點時，必須同步來自對等節點的快取資料。因此新增時間會根據快取大小和應用程式工作負載而有所不同。我們建議的最佳實務是預先擴展叢集，以符合預期的流量峰值。如需適當調整規模的指導方針和監控建議的相關資訊，請參閱 [DAX 叢集調整大小指南](DAX.sizing-guide.md)。

下列 AWS CLI 範例示範如何增加或減少節點數量。`--new-replication-factor` 引數會指定叢集中的節點總數。其中一個節點是主節點，其他節點則是僅供讀取複本。

```
aws dax increase-replication-factor \
    --cluster-name MyNewCluster  \
    --new-replication-factor 5
```

```
aws dax decrease-replication-factor \
    --cluster-name MyNewCluster  \
    --new-replication-factor 3
```

**注意**  
當您修改複寫因素時，叢集狀態會變更為 `modifying`。當修改完成時，狀態會變更為 `available`。

### 垂直擴展
<a name="DAX.cluster-management.scaling.node-types"></a>

如果您有大型的資料工作集，您的應用程式可能得益於使用較大的節點類型。較大的節點可讓叢集在記憶體中存放更多資料、減少快取未中，改善應用程式的整體應用程式效能 (DAX 叢集中的所有節點都必須是相同的類型。)

如果 DAX 叢集的寫入操作或快取未中率很高，使用較大的節點類型應可讓您的應用程式受益。寫入操作和快取未中會消耗叢集主節點上的資源，因此，使用較大的節點類型可能會提高主節點的效能，進而為這類的操作提供較高的輸送量。

您無法在執行中的 DAX 叢集上修改節點類型。而是必須使用所需節點類型建立新的叢集。如需支援的節點類型清單，請參閱「[節點](DAX.concepts.cluster.md#DAX.concepts.nodes)」。

您可以使用 AWS 管理主控台、 AWS CLI、 或 [AWS SDK](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB_Accelerator_(DAX).html) 建立新的 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html)DAX 叢集。（對於 AWS CLI，請使用 `--node-type` 參數來指定節點類型。)

## 自訂 DAX 叢集設定
<a name="DAX.cluster-management.custom-settings"></a>

當您建立 DAX 叢集時，會使用下列預設設定：
+ 啟用自動快取移出，存留時間 (TTL) 為 5 分鐘
+ 無偏好的可用區域
+ 無偏好的維護時段
+ 停用通知

針對新的叢集，您可以在建立期間自訂設定。若要在 AWS 管理主控台中執行此作業，請清除 **Use default settings (使用預設設定)** 以修改下列設定：
+ **網路和安全性** - 可讓您在目前 AWS 區域中的不同可用區域中執行個別 DAX 叢集節點。如果您選擇 **No Preference (無偏好設定)**，節點會自動分散在可用區域中。
+ **Parameter Group** (參數群組)：套用到叢集中每個節點的一組具名參數。您可以使用參數群組指定快取 TTL 行為。您可以隨時變更參數群組中任何指定參數的數值 (預設參數群組 `default.dax.1.0` 除外)。
+ **Maintenance Window** (維護時段)：軟體更新和修補程式套用到叢集中節點的每週時間期間。您可以選擇開始日、開始時間和維護時段的持續時間。如果您選擇 **No Preference (無偏好設定)**，即會在每個區域的 8 小時時段內隨機選取維護時段。如需詳細資訊，請參閱[Maintenance window (維護時段)](DAX.concepts.cluster.md#DAX.concepts.maintenance-window)。

**注意**  
您也可以隨時在執行中的叢集上變更 **Parameter Group (參數群組)** 和 **Maintenance Window (維護視窗)**。

發生維護事件時，DAX 可以使用 Amazon Simple Notification Service (Amazon SNS) 通知您。若要設定通知，請從 **Topic for SNS notification (SNS 通知主題)** 選擇器中選擇選項。您可以建立新的 Amazon SNS 主題，或使用現有的主題。

如需設定和訂閱 Amazon SNS 主題的詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》中的 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html)。

## 配置 TTL 設定
<a name="DAX.cluster-management.custom-settings.ttl"></a>

DAX 會維護兩種從 DynamoDB 讀取的資料快取：
+ **Item cache** (項目快取)：適用於使用 `GetItem` 或 `BatchGetItem` 擷取的項目。
+ **Query cache** (查詢快取)：適用於使用 `Query` 或 `Scan` 擷取的結果集。

如需詳細資訊，請參閱 [項目快取](DAX.concepts.md#DAX.concepts.item-cache) 及 [查詢快取](DAX.concepts.md#DAX.concepts.query-cache)。

這些快取每個的預設 TTL 都是 5 分鐘。如果您想要使用不同的 TTL 設定，您可以使用自訂參數群組啟動 DAX 叢集。若要在主控台上執行此作業，請在導覽窗格中選擇 **DAX \$1 Parameter groups (DAX \$1 參數群組)**。

您也可以使用 AWS CLI執行這些任務。以下範例示範如何使用自訂參數群組啟動新的 DAX 叢集。在此範例中，項目快取的 TTL 會設為 10 分鐘，而查詢快取的 TTL 會設為 3 分鐘。

1. 建立新的參數群組。

   ```
   aws dax create-parameter-group \
       --parameter-group-name custom-ttl
   ```

1. 將項目快取 TTL 設成 10 分鐘 (600000 毫秒)。

   ```
   aws dax update-parameter-group \
       --parameter-group-name custom-ttl \
       --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
   ```

1. 將查詢快取 TTL 設成 3 分鐘 (180000 毫秒)。

   ```
   aws dax update-parameter-group \
       --parameter-group-name custom-ttl \
       --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
   ```

1. 驗證參數設定是否正確。

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

您現在可以使用此參數群組啟動新的 DAX 叢集。

```
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 叢集的參數群組。參數變更僅適用於修改後寫入的項目。現有的快取項目會保留最初寫入時的 TTL 和設定。

## DAX 的標記支援
<a name="DAX.management.tagging"></a>

包括 DynamoDB 在內的許多 AWS 服務都支援*標記* - 能夠使用使用者定義的名稱標記資源。您可以將標籤指派給 DAX 叢集，讓您可以快速識別具有相同標籤的所有 AWS 資源，或根據您指派的標籤來分類 AWS 帳單。

如需詳細資訊，請參閱[將標籤新增至 DynamoDB 中的資源](Tagging.md)。

### 使用 AWS 管理主控台
<a name="DAX.management.tagging.console"></a>

**管理 DAX 叢集標籤**

1. 請在 [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) 開啟 DynamoDB 主控台。

1. 在導覽窗格中，選擇 **DAX** 下方的 **Clusters** (叢集)。

1. 選擇您想要使用的叢集。

1. 選擇 **Tags** (標籤) 索引標籤。您可以在此新增、列出、編輯或刪除您的標籤。

   當您滿意設定後，請選擇 **Apply Changes (套用變更)**。

### 使用 AWS CLI
<a name="DAX.management.tagging.cli"></a>

當您使用 AWS CLI 管理 DAX 叢集標籤時，您必須先判斷叢集的 Amazon Resource Name (ARN)。以下範例示範如何決定名為 `MyDAXCluster` 叢集的 ARN。

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

在輸出中，ARN 看起來會如下：`arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster`

以下範例示範如何標記叢集。

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

列出叢集的所有標籤。

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

您可以指定標籤的鍵來移除標籤。

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

## AWS CloudTrail 整合
<a name="DAX.management.cloudtrail"></a>

DAX 已與 整合 AWS CloudTrail，可讓您稽核 DAX 叢集活動。您可以使用 CloudTrail 日誌來檢視在叢集層級進行的所有變更。您也可以查看對叢集元件進行的變更，例如節點、子網路群組和參數群組。如需詳細資訊，請參閱[使用 記錄 DynamoDB 操作 AWS CloudTrail](logging-using-cloudtrail.md)。

## 刪除 DAX 叢集
<a name="DAX.cluster-management.deleting"></a>

如果您不再使用 DAX 叢集，建議您刪除它，以避免支付未使用資源的費用。

您可以使用主控台或 AWS CLI來刪除 DAX 叢集。下列是 範例。

```
aws dax delete-cluster --cluster-name mydaxcluster
```