メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

DAX クラスターの管理

このセクションでは、DAX クラスターの一般的な管理タスクの一部を紹介します。

DAX クラスターを管理するための IAM アクセス権限

AWS マネジメントコンソール または AWS CLI を使用して DAX クラスターを管理する場合は、ユーザーが実行できるアクションの範囲を絞り込むことを強くお勧めします。そうすることで、最小権限の原則に従って、リスクを緩和できます。

次の説明は、DAX 管理 API のアクセスコントロールに焦点を当てます (Amazon DynamoDB API Reference の Amazon DynamoDB アクセラレーターを参照してください)。

注記

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

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

DAX 管理 API と DAX データプレーン API の両方を包括する単一の包括 IAM ポリシーを作成する場合は、ポリシードキュメントに 2 つの異なるステートメントを含めることをお勧めします。これらのステートメントの 1 つが DAX データプレーン API に対応し、もう 1 つのステートメントが 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 クラスターを作成する場合、次のデフォルト設定が使用されます。

  • キャッシュの自動削除が 5 分の TTL で有効になっています

  • アベイラビリティーゾーンの指定はありません

  • メンテナンスウィンドウの指定はありません

  • 通知は無効になっています

現在実行している DAX クラスターでは、これらの設定を変更できません。ただし、新しいクラスターの場合は、作成時に設定をカスタマイズできます。AWS マネジメントコンソールでこれを行うには、[Use default settings] の選択を解除して以下の設定を変更します。

  • Network and Security — 個別の DAX クラスターノードを、現在の AWS リージョン内の異なるアベイラビリティーゾーンで実行できます。[No Preference] を選択すると、ノードが自動的に AZ 内に分散されます。

  • Parameter Group — クラスター内の各ノードに適用される指定のパラメータのセット。パラメータグループを使用してキャッシュ有効期限 (TTL) の動作を指定できます。

  • Maintenance Window — ソフトウェアのアップグレードやパッチをクラスター内のノードに適用する間隔 (週)。メンテナンスウィンドウの開始日、開始時刻、および所要時間を選択できます。[No Preference] を選択すると、メンテナンスウィンドウはリージョンごとに 8 時間の時間ブロックからランダムに選択されます。(詳しくは、メンテナンス時間 を参照してください)。

メンテナンスイベントが発生した場合、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 クラスターのスケーリングには 2 つのオプションを使用できます。第 1 のオプションは読み取りスケーリングです。クラスターにリードレプリカを追加します。第 2 のオプションは、別のノードタイプを選択することです。

読み込みのスケーリング

読み取りスケーリングでは、クラスターにリードレプリカを追加することで、スループットを改善できます。1 つの DAX クラスターで最大 9 個のリードレプリカをサポートし、レプリカはクラスターの実行中に追加または削除できます。

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

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 クラスターのノードタイプを変更することはできません。代わりに、目的のノードタイプの新しいクラスターを作成する必要があります。サポートされているノードタイプについては、「ノード」を参照してください。

新しい DAX クラスターは、AWS マネジメントコンソールまたは AWS CLI を使用して作成できます。(後者の場合、--node-type パラメータを使用してノードタイプを指定します。)

TTL 設定の構成

DAX は、DynamoDB から読み込むデータを 2 つのキャッシュに保持します。

  • 項目キャッシュ — 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 のタグ付けサポート

DynamoDB を含む多くの AWS のサービスでは、タグ付けがサポートされています。これはリソースにユーザー定義名をラベル付けする機能です。DAX クラスターにタグを割り当てて、同じタグを持つすべての AWS リソースをすばやく識別したり、割り当てたタグ別に AWS の請求書を分類したりできます。

注記

詳細については、「DynamoDB のタグ付け」を参照してください。

AWS マネジメントコンソール の使用

DAX クラスタータグを管理するには

  1. https://console.aws.amazon.com/dynamodb/ にある 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 クラスターは削除する必要があります。

DAX クラスターは、AWS マネジメントコンソールまたは AWS CLI から削除できます。例を示します。

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