Cassandra クエリ言語 (CQL) による Amazon Keyspaces Auto Scaling の管理 - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Cassandra クエリ言語 (CQL) による Amazon Keyspaces Auto Scaling の管理

Cassandra クエリ言語 (CQL) を使用して Amazon Keyspaces テーブルの自動スケーリング設定を作成および管理するには、 を使用できますcqlsh。このトピックでは、CQL を使用してプログラムで管理できる Auto Scaling タスクの概要を説明します。

このトピックで説明する CQL ステートメントの詳細については、「」を参照してくださいAmazon Keyspaces の DDL ステートメント (データ定義言語)

開始する前に

開始する前に、次のタスクを完了する必要があります。

のアクセス許可を設定します。

まだアクセス許可を設定していない場合は、ユーザーがオートスケーリング設定の作成と管理を行えるように、適切なアクセス許可を設定する必要があります。 AWS Identity and Access Management (IAM) では、Amazon Keyspaces スケーリングポリシーを管理するために AWS マネージドポリシーAmazonKeyspacesFullAccessが必要です。詳細なステップについては、「開始する前に: Amazon Keyspaces オートスケーリングのアクセス許可をユーザーに付与する」を参照してください。

cqlsh を設定する

まだインストールして設定していない場合は、 をインストールして設定する必要がありますcqlsh。これを行うには、「」の手順に従いますcqlsh-expansion による Amazon Keyspaces までの接続。その後、 を使用して、以下のセクションのコマンド AWS CloudShell を実行できます。

CQL を使用して自動スケーリングで新しいテーブルを作成する

新しい Amazon Keyspaces テーブルを作成すると、 CREATE TABLEステートメントでテーブルの書き込みキャパシティまたは読み取りキャパシティの自動スケーリングを自動的に有効にできます。これにより、Amazon Keyspaces はユーザーに代わって Application Auto Scaling に連絡し、テーブルをスケーラブルターゲットとして登録し、プロビジョニングされた書き込みまたは読み取り容量を調整できます。

マルチリージョンテーブルを作成し、テーブルレプリカのさまざまな Auto Scaling 設定を構成する方法の詳細については、「」を参照してくださいデフォルト設定でマルチリージョンテーブルを作成する (CQL)

注記

Amazon Keyspaces Auto Scaling では、ユーザーに代わって自動スケーリングアクションを実行するために、サービスにリンクされたロール (AWSServiceRoleForApplicationAutoScaling_CassandraTable) が必要です。このロールは自動的に作成されます。詳細については、「Amazon Keyspaces のサービスリンクロールの使用」を参照してください。

テーブルの Auto Scaling 設定をプログラムで設定するには、Amazon Keyspaces Auto Scaling のパラメータを含む AUTOSCALING_SETTINGSステートメントを使用します。パラメータは、テーブルのプロビジョニングされたスループットを調整するように Amazon Keyspaces に指示する条件と、実行する追加のオプションアクションを定義します。この例では、mytable の Auto Scaling 設定を定義します。

ポリシーには、次の要素が含まれます。

  • AUTOSCALING_SETTINGS – Amazon Keyspaces がユーザーに代わってスループットキャパシティを調整できるかどうかを指定します。以下の値が必要です。

    • provisioned_write_capacity_autoscaling_update:

      • minimum_units

      • maximum_units

    • provisioned_read_capacity_autoscaling_update:

      • minimum_units

      • maximum_units

    • scaling_policy — Amazon Keyspaces はターゲット追跡ポリシーをサポートしています。ターゲット追跡ポリシーを定義するには、次のパラメータを設定します。

      • target_value – Amazon Keyspaces Auto Scaling により、プロビジョンドキャパシティに対する消費キャパシティの比率がこの値またはその近くに留まります。target_value をパーセンテージとして定義します。

      • disableScaleIn: (オプション) テーブルに対して scale-inが無効か有効かbooleanを指定する 。このパラメータはデフォルトで無効になっています。をオンにするにはscale-inboolean値を に設定しますFALSE。つまり、ユーザーに代わってテーブルの容量が自動的にスケールダウンされます。

      • scale_out_cooldown — スケールアウトアクティビティでテーブルのプロビジョンドスループットを増加させます。スケールアウトアクティビティのクールダウン期間を追加するには、scale_out_cooldown の値を秒単位で指定します。値を指定しない場合、デフォルト値は 0 です。ターゲット追跡およびクールダウン期間の詳細については、Application Auto Scaling ユーザーガイドの「ターゲット追跡スケーリングポリシー」を参照してください。 Auto Scaling

      • scale_in_cooldown — スケールインアクティビティでテーブルのプロビジョンドスループットを減少させます。スケールインアクティビティのクールダウン期間を追加するには、scale_in_cooldown の値を秒単位で指定します。値を指定しない場合、デフォルト値は 0 です。ターゲット追跡およびクールダウン期間の詳細については、Application Auto Scaling ユーザーガイドの「ターゲット追跡スケーリングポリシー」を参照してください。 Auto Scaling

注記

target_value がどのように機能するかをさらに理解するために、書き込み容量単位が 200 で、プロビジョンされたスループット設定を持つテーブルがあるとします。このテーブルのスケーリングポリシーを作成することにしました。target_value は 70% です。

ここで、実際の書き込みスループットが 150 容量単位になるように、テーブルへの書き込みトラフィックを駆動し始めたとします。 consumed-to-provisioned 比率は現在 (150/200)、つまり 75% です。この比率はターゲットを超えているため、Auto Scaling はプロビジョニングされた書き込み容量を 215 に増やし、比率が (150/215)、69.77% になるようにします。これは、target_value可能な限り に近いですが、それを超えないようにします。

mytable の場合、読み込みキャパシティーと書き込みキャパシティーTargetValueの両方を 50% に設定します。Amazon Keyspaces Auto Scaling は、テーブルのプロビジョニングされたスループットを 5~10 キャパシティーユニットの範囲内で調整し、 consumed-to-provisioned 比率が 50% 前後になるようにします。読み込み容量については、 ScaleOutCooldownと の値を 60 ScaleInCooldown 秒に設定します。

次のステートメントを使用して、Auto Scaling を有効にした新しい Amazon Keyspaces テーブルを作成できます。

CREATE TABLE mykeyspace.mytable(pk int, ck int, PRIMARY KEY (pk, ck)) WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } } };

CQL を使用して既存のテーブルで自動スケーリングを有効にする

既存の Amazon Keyspaces テーブルでは、 ALTER TABLEステートメントを使用して、テーブルの書き込みキャパシティまたは読み取りキャパシティのオートスケーリングを有効にできます。現在オンデマンドキャパシティモードになっているテーブルを更新する場合は、 capacity_modeが必要です。テーブルがすでにプロビジョンドキャパシティモードになっている場合は、このフィールドを省略できます。

注記

Amazon Keyspaces のオートスケーリングでは、ユーザーに代わってオートスケーリングアクションを実行するサービスリンクロール (AWSServiceRoleForApplicationAutoScaling_CassandraTable) の存在が必要になります。このロールは自動的に作成されます。詳細については、「Amazon Keyspaces のサービスリンクロールの使用」を参照してください。

次の例では、 ステートメントはオンデマンドキャパシティモードのテーブル mytable を更新します。ステートメントは、自動スケーリングを有効にして、テーブルのキャパシティモードをプロビジョニングモードに変更します。

書き込みキャパシティは、5~10 キャパシティーユニットの範囲内で、ターゲット値が 50% に設定されます。読み取りキャパシティーは、5~10 キャパシティーユニットの範囲内で、ターゲット値が 50% に設定されます。読み込み容量については、 scale_out_cooldownと の値を 60 scale_in_cooldown 秒に設定します。

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES = { 'capacity_mode': { 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 1, 'write_capacity_units': 1 } } AND AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50 } } }, 'provisioned_read_capacity_autoscaling_update': { 'maximum_units': 10, 'minimum_units': 5, 'scaling_policy': { 'target_tracking_scaling_policy_configuration': { 'target_value': 50, 'scale_in_cooldown': 60, 'scale_out_cooldown': 60 } } } };

CQL を使用してテーブルの Amazon Keyspaces Auto Scaling 設定を表示する

テーブルの Auto Scaling 設定の詳細を表示するには、次のコマンドを使用します。

SELECT * FROM system_schema_mcs.autoscaling WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

このコマンドの出力は次のようになります。

keyspace_name | table_name | provisioned_read_capacity_autoscaling_update | provisioned_write_capacity_autoscaling_update ---------------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- mykeyspace | mytable | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 60, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 60}}} | {'minimum_units': 5, 'maximum_units': 10, 'scaling_policy': {'target_tracking_scaling_policy_configuration': {'scale_out_cooldown': 0, 'disable_scale_in': false, 'target_value': 50, 'scale_in_cooldown': 0}}}

CQL を使用してテーブルの Amazon Keyspaces Auto Scaling を無効にする

テーブルの Amazon Keyspaces Auto Scaling はいつでもオフにできます。テーブルの読み込みまたは書き込み容量をスケーリングする必要がなくなった場合は、Amazon Keyspaces がテーブルの読み込みまたは書き込み容量設定を変更し続けないように、自動スケーリングをオフにすることを検討してください。ALTER TABLE ステートメントを使用してテーブルを更新できます。

次のステートメントは、テーブル mytable の書き込みキャパシティーの Auto Scaling をオフにします。また、ユーザーに代わって作成された CloudWatch アラームも削除されます。

ALTER TABLE mykeyspace.mytable WITH AUTOSCALING_SETTINGS = { 'provisioned_write_capacity_autoscaling_update': { 'autoscaling_disabled': true } };
注記

Application Auto Scaling が使用するサービスにリンクされたロールを削除するには、すべての でアカウント内のすべてのテーブルのオートスケーリングを無効にする必要があります AWS リージョン。