

# 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.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 アクセラレーター](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` 要素は `"*"` に設定する必要があります。これは `GetItem`、`Query`、`Scan` などの DAX データプレーン API オペレーションとは異なります。データプレーンオペレーションは DAX のクライアントを通じて表示され、これらのオペレーションは特定のリソースを範囲に*できます*。

例として、次の IAM ポリシードキュメントについて考えます。

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

****  

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

------

このポリシーの目的は、特定のクラスター `DAXCluster01` のみの DAX 管理 API コールを許可することであるとします。

ユーザーが次の AWS CLI コマンドを発行するとします。

```
aws dax describe-clusters
```

基盤となる `DescribeClusters` API コールが特定のクラスターを範囲にできないため、このコマンドは Not Authorized (権限がありません) という例外で失敗します。ポリシーが構文としては有効であっても、このコマンドは `Resource` 要素が `"*"` に設定される必要があるため、失敗します。ただし、ユーザーが DAX データプレーンコール (`GetItem` や `Query` など) を `DAXCluster01` に送信するプログラムを実行する場合は、それらのコールは成功します。これは、DAX データプレーン API が特定のリソース (この場合は `DAXCluster01`) を範囲にできるためです。

DAX 管理 API と DAX データプレーン API の両方を包括する単一の包括 IAM ポリシーを作成する場合は、ポリシードキュメントに 2 つの異なるステートメントを含めることをお勧めします。これらのステートメントの 1 つが DAX データプレーン API に対応し、もう 1 つのステートメントが 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 クラスターのスケーリングには 2 つのオプションを使用できます。第 1 のオプションは*水平スケーリング*です。クラスターにリードレプリカを追加します。2 番目のオプションは、*垂直スケーリング* で、さまざまなノードタイプを選択します。アプリケーションに適切なクラスターサイズとノードタイプの選択方法の詳細については、「[DAX クラスターサイジングガイド](DAX.sizing-guide.md)」を参照してください。

### 水平スケーリング
<a name="DAX.cluster-management.scaling.read-scaling"></a>

水平スケーリングでは、クラスターにリードレプリカを追加することで、読み込みオペレーションのスループットを向上させることができます。1 つの DAX クラスターで最大 10 個のリードレプリカをサポートし、レプリカはクラスターの実行中に追加または削除できます。

新しいノードを追加する際は、ピアノードからキャッシュデータを同期する必要があります。そのため、追加時間はキャッシュサイズとアプリケーションのワークロードによって異なります。ベストプラクティスとして、予想されるトラフィックのピークに合わせてクラスターを事前にスケールすることをお勧めします。適切なサイズ設定のガイドラインとモニタリングの推奨事項については、「[DAX クラスターサイジングガイド](DAX.sizing-guide.md)」を参照してください。

次の AWS CLI の例で、ノードの数を増減する方法を説明します。`--new-replication-factor` 引数は、クラスター内のノードの合計数を指定します。ノードの 1 つはプライマリノードであり、他のノードはリードレプリカです。

```
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)」を参照してください。

新しい DAX クラスターを作成するには、AWS マネジメントコンソール、[CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html)、AWS CLI、または [AWS SDK](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB_Accelerator_(DAX).html) を使用します。(AWS CLI の場合、`--node-type` パラメータを使用してノードタイプを指定します。)

## DAX クラスターの設定のカスタマイズ
<a name="DAX.cluster-management.custom-settings"></a>

DAX クラスターを作成する場合、次のデフォルト設定が使用されます。
+ 5 分の有効期限 (TTL) で有効化されたキャッシュの自動削除
+ アベイラビリティーゾーンの指定なし
+ メンテナンスウィンドウの指定なし
+ 通知の無効化

新しいクラスターの場合は、作成時に設定をカスタマイズできます。AWS マネジメントコンソールでこれを行うには、[**デフォルト設定の使用**] をオフにして以下の設定を変更します。
+ **[Network and Security]** (ネットワークとセキュリティ) - 現在の AWS リージョン内の異なるアベイラビリティーゾーンで個別の DAX クラスターノードを実行できます。**[No Preference]** (指定なし) を選択すると、ノードが自動的にアベイラビリティーゾーン内に分散されます。
+ **[Parameter Group]** (パラメータグループ) - クラスター内の各ノードに適用される指定のパラメータのセット。パラメータグループを使用してキャッシュ TTL の動作を指定できます。パラメータグループ (デフォルトのパラメータグループ `default.dax.1.0` を除く) 内の任意のパラメータの値をいつでも変更できます。
+ **[Maintenance Window]** (メンテナンスウィンドウ) - ソフトウェアのアップグレードやパッチをクラスター内のノードに適用する間隔 (週)。メンテナンスウィンドウの開始日、開始時刻、および所要時間を選択できます。**[No Preference]** (指定なし) を選択すると、メンテナンスウィンドウはリージョンごとに 8 時間の時間ブロックからランダムに選択されます。詳細については、「[メンテナンスウィンドウ](DAX.concepts.cluster.md#DAX.concepts.maintenance-window)」を参照してください。

**注記**  
**[Parameter Group]** (パラメータグループ) と **[Maintenance Window]** (メンテナンスウィンドウ) も、実行中のクラスター上でいつでも変更できます。

メンテナンスイベントが発生すると、DAX から Amazon Simple Notification Service (Amazon SNS) を使用して通知が送信されます。通知を設定するには、[**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 から読み込んだデータを 2 つのキャッシュに保持します。
+ **項目キャッシュ** - `GetItem` または `BatchGetItem` を使用して取得した項目用。
+ **クエリキャッシュ** - `Query` または `Scan` を使用して取得した結果セット用。

詳細については、「[項目キャッシュ](DAX.concepts.md#DAX.concepts.item-cache)」および「[クエリキャッシュ](DAX.concepts.md#DAX.concepts.query-cache)」を参照してください。

これらのキャッシュそれぞれのデフォルトの TTL は 5 分です。異なる TTL 設定を使用する場合は、カスタムパラメータグループを使用した DAX クラスターを起動できます。コンソールでこれを行うには、ナビゲーションペインの [**DAX \| Parameter groups (DAX \| パラメータグループ)**] を選択します。

上記のタスクを 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. DynamoDB コンソール ([https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)) を開きます。

1. ナビゲーションペインの、[**DAX**] で、[**クラスター**]を選択します。

1. 作業するクラスターを選択します。

1. [**タグ**] タブを選択します。ここでタグを追加、リスト、編集、または削除できます。

   設定が希望どおりになったら、[**変更の適用**] を選択します。

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

AWS CLI を使用して DAX クラスタータグを管理している場合は、最初にクラスターの Amazon リソースネーム (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 ログを使用して、クラスターレベルで行われたすべての変更を表示できます。ノード、サブネットグループ、パラメータグループなどのクラスターコンポーネントへの変更も確認できます。詳細については、「」を参照してください[AWS CloudTrail を使用して DynamoDB オペレーションをログに記録する](logging-using-cloudtrail.md)

## クラスターを削除する
<a name="DAX.cluster-management.deleting"></a>

使用していないリソースに課金されないように、不要になった DAX クラスターを削除する必要があります。

コンソールまたは AWS CLI を使用して、DAX クラスターを削除できます。以下はその例です。

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