

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

# Amazon Keyspaces 自動スケーリングでスループットキャパシティを自動的に管理する
<a name="autoscaling"></a>

多くのデータベースワークロードは本質的に循環的なものであり、そうでない場合は前もって予測することは困難です。例えば、日中の時間帯に大部分のユーザーがアクティブなソーシャルネットワーキングアプリがあるとします。データベースは日中のアクティビティを処理できる必要がありますが、夜間のスループットに同じレベルは必要ありません。

別の例としては、急速に導入された新しいモバイルゲームアプリが挙げられます。ゲームの人気があまりに高まると、利用可能なデータベースリソースを超過し、パフォーマンスが低下して顧客が不満を感じるようになります。この種のワークロードでは多くの場合、手動介入によってデータベースリソースを使用レベルに応じて上下させる必要があります。

Amazon Keyspaces (Apache Cassandra 向け) は、実際のアプリケーショントラフィックに応じてスループットキャパシティを自動的に調整するので、可変ワークロードに対するスループットキャパシティの効率的なプロビジョニングに役立ちます。Amazon Keyspaces では、Applicatino Auto Scaling サービスを使用して、ユーザーに代わってテーブルの読み取りキャパシティと書き込みキャパシティの増減を行います。アプリケーションオートスケーリングの詳細については、[「Application Auto Scaling User Guide」](https://docs.aws.amazon.com/autoscaling/application/userguide/)(アプリケーションオートスケーリングユーザーガイド) を参照してください。

**注記**  
Amazon Keyspaces のオートスケーリングの簡単な使用方法については「[Amazon Keyspaces の自動スケーリングポリシーを設定および更新する](autoscaling.configure.md)」を参照してください。

## Amazon Keyspaces オートスケーリングの仕組み
<a name="autoscaling.HowItWorks"></a>

次の図は、Amazon Keyspaces オートスケーリングによるテーブルのスループットキャパシティ管理の管理方法について、高レベルの概要を示しています。

![\[ユーザーが Amazon Keyspaces のテーブルに変更を加えたときに関係するさまざまなサービスを示した図。該当するサービスは Amazon CloudWatch、Amazon SNS、Application Auto Scaling です。Application Auto Scaling が ALTER TABLE ステートメントを発行して、ユーザーの読み取りまたは書き込みの使用量に基づいてキャパシティを変更します。\]](http://docs.aws.amazon.com/ja_jp/keyspaces/latest/devguide/images/keyspaces_auto-scaling.png)




テーブルのオートスケーリングを有効にするには、*スケーリングポリシー*を作成します。スケーリングポリシーは、テーブルの読み込みキャパシティと書き込みキャパシティ (またはそのいずれか) およびプロビジョンドキャパシティユニット設定をスケーリングするかどうかを指定するものです。

スケーリングポリシーにより*ターゲット使用率*も定義されます。ターゲット使用率は、プロビジョンドキャパシティユニットに対する消費キャパシティユニットの割合をパーセンテージで示したものです。オートスケーリングでは、*ターゲット追跡*アルゴリズムを使用して、実際のワークロードに応じてテーブルのプロビジョンドスループットを上下に調整します。これにより実際のキャパシティ使用率が、ターゲット使用率またはその付近で維持されます。

 読み取りおよび書き込みキャパシティに対して、オートスケーリングのターゲット使用率の値を 20%～90% の範囲で設定できます。ターゲット使用率のデフォルト値は 70% です。トラフィックが急速に変化し、キャパシティのスケールアップをすばやく開始したい場合は、ターゲット使用率の値を低く設定できます。アプリケーショントラフィックの変化が遅く、スループットのコストを削減したい場合は、ターゲット使用率の値を高く設定することもできます。

自動スケーリングポリシーの詳細については、「[Application Auto Scaling ユーザーガイド**](https://docs.aws.amazon.com/autoscaling/application/userguide/)」の「[Target tracking scaling policies for Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。

スケーリングポリシーを作成すると、Amazon Keyspaces が自動的に Amazon CloudWatch アラームのペアを 2 つ作成します。各ペアは、プロビジョンドスループット設定と消費スループット設定の上下の境界を示します。CloudWatch アラームは、テーブルの実際の使用率が一定期間ターゲット使用率を逸脱したときにトリガーされます。Amazon CloudWatch の詳細については、[「Amazon CloudWatch ユーザーガイド」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)を参照してください。

いずれかの CloudWatch アラームがトリガーされると、Amazon Simple Notification Service (Amazon SNS) により通知が送信されます (有効にしている場合)。次に、CloudWatch アラームにより アプリケーションオートスケーリングが呼び出されてスケーリングポリシーが評価されます。これにより、Amazon Keyspaces に Alter Table リクエストが発行されて、テーブルのプロビジョンドキャパシティが必要に応じて調整されます。Amazon SNS 通知の詳細については、[「Setting up Amazon SNS notifications」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)(Amazon SNS 通知の設定) を参照してください。

Amazon Keyspaces は Alter Table リクエストを処理してテーブルのプロビジョンドスループット性能を動的に増減し、ターゲット使用率に近づけます。

**注記**  
Amazon Keyspaces の自動スケーリングは、プロビジョニング済みスループットの設定を、実際のワークロードが上回った (または下回った) 状態が数分間続いた場合にのみ変更します。 ターゲットトラッキングアルゴリズムはターゲット使用率を選択した値の付近に長期に渡って維持しようとします。アクティビティの急激かつ短時間の上昇は、テーブルに組み込まれたバーストキャパシティで対応されます。

## マルチリージョンテーブルに対する自動スケーリングの仕組み
<a name="autoscaling.multi-region"></a>

プロビジョンドキャパシティモードのすべての AWS リージョン マルチリージョンテーブルで、すべてのテーブルレプリカに十分な読み取りおよび書き込みキャパシティを常に確保するには、Amazon Keyspaces 自動スケーリングを設定することをお勧めします。

プロビジョンドモードのマルチリージョンテーブルで自動スケーリングを使用する場合、テーブルレプリカ単体の自動スケーリングを無効にすることはできません。ただし、テーブルの読み取りの自動スケーリング設定はリージョンごとに調整できます。例えば、テーブルのレプリケート先のリージョンごとに、読み取りキャパシティと読み取り自動スケーリングの設定を変えることができます。

指定したリージョンのテーブルレプリカに対して設定した読み取り自動スケーリング設定は、テーブル全般の自動スケーリング設定よりも優先されます。一方で、書き込みキャパシティは、すべてのリージョンで書き込みをレプリケートするのに十分なキャパシティを確保するため、すべてのテーブルレプリカ間で同期させておく必要があります。

Amazon Keyspaces の自動スケーリングでは、各 AWS リージョン のテーブルにプロビジョニングされたキャパシティを、そのリージョンの使用実績に応じて個別に更新します。その結果、自動スケーリングが有効になっている場合は、マルチリージョンテーブルのリージョンごとに、プロビジョニング済みキャパシティが異なる可能性があります。

マルチリージョンテーブルとそのレプリカの自動スケーリング設定は、Amazon Keyspaces コンソール、API AWS CLI、または CQL を使用して設定できます。マルチリージョンテーブルの自動スケーリング設定を作成および更新する方法については、「[Amazon Keyspaces でマルチリージョンテーブルのプロビジョンドキャパシティと自動スケーリングの設定を更新する](tables-mrr-autoscaling.md)」を参照してください。

**注記**  
マルチリージョンテーブルで自動スケーリングを使用する場合は、常に Amazon Keyspaces API オペレーションを使用して自動スケーリングを設定する必要があります。Application Auto Scaling API オペレーションを直接使用して自動スケーリング設定を構成する場合、マルチリージョンテーブル AWS リージョン の を指定することはできません。そのため、サポート対象外の設定になってしまうおそれがあります。

## 使用に関する注意事項
<a name="autoscaling.UsageNotes"></a>

Amazon Keyspaces オートスケーリングの使用を開始する前に、以下を確認する必要があります。
+ Amazon Keyspaces 自動スケーリングは、中東 (UAE) リージョンでは利用できません。
+ Amazon Keyspaces オートスケーリングでは、スケーリングポリシーに従って、読み込みキャパシティや書き込みキャパシティを必要に応じて増加させることができます。[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md) で説明されているように、すべての Amazon Keyspaces クォータは有効です。
+ Amazon Keyspaces オートスケーリングにより、プロビジョンドスループット設定を手動で変更できなくなることはありません。これらの手動調整は、スケーリングポリシーにアタッチされている既存の CloudWatch アラームに影響しません。
+ コンソールを使用してプロビジョンドスループット性能でテーブルを作成する場合、Amazon Keyspaces オートスケーリングはデフォルトで有効になります。オートスケーリングの設定はいつでも変更できます。詳細については、「[テーブルの Amazon Keyspaces 自動スケーリングを無効にする](autoscaling.turnoff.md)」を参照してください。
+  CloudFormation を使用してスケーリングポリシーを作成する場合は、スタックがスタックテンプレートと同期 CloudFormation するように、 からスケーリングポリシーを管理する必要があります。Amazon Keyspaces からスケーリングポリシーを変更すると、 CloudFormation スタックがリセットされると、スタックテンプレートの元の値で上書きされます。
+ CloudTrail を使用して Amazon Keyspaces のオートスケーリングを監視する場合、設定検証プロセスの一部として、アプリケーションオートスケーリングによって行われたコールのアラートが表示されることがあります。検証チェックのための `application-autoscaling.amazonaws.com` が含まれている `invokedBy` フィールドを使用すれば、これらのアラートを除外できます。

# Amazon Keyspaces の自動スケーリングポリシーを設定および更新する
<a name="autoscaling.configure"></a>

コンソール、CQL、または AWS Command Line Interface (AWS CLI) を使用して、新規および既存のテーブルの Amazon Keyspaces 自動スケーリングを設定できます。自動スケーリングの設定変更や無効化を行うこともできます。

 スケールインおよびスケールアウトのクールダウン時間の設定など、より高度な機能については、CQL または AWS CLI を使用して Amazon Keyspaces スケーリングポリシーを管理することをお勧めします。

**Topics**
+ [Amazon Keyspaces の自動スケーリング用のアクセス許可を設定する](autoscaling.permissions.md)
+ [自動スケーリングを有効にして新規テーブルを作成する](autoscaling.createTable.md)
+ [既存のテーブルに対して自動スケーリングを設定する](autoscaling.configureTable.md)
+ [テーブルの Amazon Keyspaces 自動スケーリングの設定を表示する](autoscaling.viewPolicy.md)
+ [テーブルの Amazon Keyspaces 自動スケーリングを無効にする](autoscaling.turnoff.md)
+ [Amazon CloudWatch で Amazon Keyspaces テーブルの自動スケーリングアクティビティを表示する](autoscaling.activity.md)

# Amazon Keyspaces の自動スケーリング用のアクセス許可を設定する
<a name="autoscaling.permissions"></a>

まず、自動スケーリング設定を作成し、管理するための適切なアクセス許可がプリンシパルに与えられていることを確認してください。 AWS Identity and Access Management (IAM) では、Amazon Keyspaces スケーリングポリシーを管理するために AWS マネージドポリシー`AmazonKeyspacesFullAccess`が必要です。

**重要**  
 テーブルの自動スケーリングを無効にするには、`application-autoscaling:*` アクセス許可が必要です。テーブルを削除するには、その前にテーブルの自動スケーリングを無効にしておく必要があります。

Amazon Keyspaces コンソールへのアクセスと Amazon Keyspaces の自動スケーリングで使用する IAM ユーザーまたはロールを設定するには、次のポリシーを追加します。

**`AmazonKeyspacesFullAccess` ポリシーをアタッチするには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. IAM コンソールダッシュボードで **[ユーザー]** を選択して、リストから IAM ユーザーまたはロールを選択します。

1. [**Summary (概要)**] ページで、[**Add permissions (許可の追加)**] を選択します。

1. **[Attach existing policies directly (既存のポリシーを直接アタッチする)**] を選択します。

1. ポリシーリストから [**AmazonKeyspacesFullAccess**] を選択し、次に [**Next: Review (次へ: 確認)**] を選択します。

1. [**Add permissions (許可の追加)**] を選択します。

# 自動スケーリングを有効にして新規テーブルを作成する
<a name="autoscaling.createTable"></a>

新しい Amazon Keyspaces テーブルの作成時に、テーブルの書き込みキャパシティまたは読み取りキャパシティの自動スケーリングを自動的に有効にすることができます。その場合は、Amazon Keyspaces が自動的に Application Auto Scaling と通信してテーブルをスケーラブルターゲットとして登録し、プロビジョニング済みの書き込みキャパシティまたは読み取りキャパシティを調整します。

マルチリージョンテーブルを作成し、テーブルのレプリカごとに異なる自動スケーリング設定を行う方法については、「[Amazon Keyspaces で自動スケーリングが有効なプロビジョンドモードのマルチリージョンテーブルを作成する](tables-mrr-create-provisioned.md)」を参照してください。

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

------
#### [ Console ]

**自動スケーリングが有効な新規テーブルをコンソールで作成する**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. ナビゲーションペインで [**Tables]** (テーブル) を選択して、[**Create table (テーブルの作成)**] を選択します。

1. [**Table details (テーブルの詳細)**] セクションの [**Create table (テーブルの作成)**] ページで、キースペースを選択し、新しいテーブルに名前を付けます。

1. **[列]** セクションで、テーブルのスキーマを作成します。

1. **[プライマリキー]** セクションで、テーブルのプライマリキーを定義し、オプションでクラスタリング列を選択します。

1. [**Table settings (テーブルの設定)**] セクションで、[**Customize settings (設定のカスタマイズ)**] を選択します。

1. [**Read/write capacity settings (読み取り/書き込みキャパシティの設定)**] に進みます。

1. [**Capacity mode (キャパシティモード)**] で、[**Provisioned (プロビジョン)**] を選択します。

1. [**Read capacity]** (読み取りキャパシティ) セクションで、[**Scale automatically (自動スケーリング)**] が選択されているか確認します。

   このステップでは、テーブルの読み取りキャパシティユニットの最小値と最大値、およびターゲット使用率を選択します。
   + **最小キャパシティユニット** — テーブルをいつでもすぐにサポートできる状態にするために、最小レベルのスループット値を入力します。この値は、1 から、アカウントの秒単位の最大スループットクォータ (デフォルトは 40,000) までの範囲でなければなりません。
   + **最大キャパシティユニット** — テーブルに対してプロビジョニングするスループットの最大量を入力します。この値は、1 から、アカウントの秒単位の最大スループットクォータ (デフォルトは 40,000) までの範囲でなければなりません。
   + **ターゲット使用率**— ターゲット使用率を 20%～90% の範囲で入力します。定義したターゲット使用率をトラフィックが上回ると、キャパシティが自動的に増加されます。定義したターゲットをトラフィックが下回ると、再び容量が自動的に減少されます。
**注記**  
アカウントのデフォルトクォータの詳細およびクォータを引き上げる方法については、「[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md)」を参照してください。

1. **[書き込みキャパシティ]** セクションで、前の手順で定義した読み取りキャパシティと同じ設定を選択するか、またはキャパシティの値を手動で設定します。

1. [**Create table (テーブルの作成)**] を選択します。指定した自動スケーリングパラメータを使用してテーブルが作成されます。

------
#### [ Cassandra Query Language (CQL) ]

**Amazon Keyspaces の自動スケーリングが有効な新規テーブルを CQL を使用して作成する**

テーブルの自動スケーリング設定をプログラムによって行うには、`AUTOSCALING_SETTINGS` ステートメントに Amazon Keyspaces 自動スケーリングのパラメータを指定します。これらのパラメータでは、テーブルのプロビジョニング済みスループットを調整するように Amazon Keyspaces に指示する条件を定義し、追加で実行するアクションがあれば、それらも任意で定義します。この例では、*mytable* の自動スケーリング設定を定義します。

ポリシーには、次の要素が含まれます。
+ `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 の自動スケーリングでは、プロビジョニング済みのキャパシティに占める実際のキャパシティ消費の割合が、この値と同じか近い値で維持されます。`target_value` をパーセンテージとして定義します。
    + `disableScaleIn`: (オプション) テーブルに対して `scale-in` が無効か有効かを指定する `boolean`。このパラメータは、デフォルトでは無効になっています。`scale-in` を有効にするには、`boolean` 値を `FALSE` に設定します。その場合は、テーブルのキャパシティが自動的にスケールダウンされます。
    + `scale_out_cooldown` — スケールアウトアクティビティでテーブルのプロビジョンドスループットを増加させます。スケールアウトアクティビティのクールダウン期間を追加するには、`scale_out_cooldown` の値を秒単位で指定します。値を指定しない場合、デフォルト値は 0 です。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。
    + `scale_in_cooldown` — スケールインアクティビティでテーブルのプロビジョンドスループットを減少させます。スケールインアクティビティのクールダウン期間を追加するには、`scale_in_cooldown` の値を秒単位で指定します。値を指定しない場合、デフォルト値は 0 です。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。

**注記**  
`target_value` がどのように機能するかをさらに理解するために、書き込み容量単位が 200 で、プロビジョンされたスループット設定を持つテーブルがあるとします。このテーブルのスケーリングポリシーを作成することにしました。`target_value` は 70% です。  
ここで、実際の書き込みスループットが 150 容量単位になるように、テーブルへの書き込みトラフィックを駆動し始めたとします。消費とプロビジョンの比率は現在 (150/200)、つまり 75% です。この割合は目標値を上回っているため、自動スケーリングはプロビジョニング済みの書き込みキャパシティを 215 に増やします。これで、割合が (150/215)、つまり 69.77% になります。これは、`target_value` に可能な限り近く、なおかつ上回らない値です。

*mytable* では、読み取りキャパシティと書き込みキャパシティの両方の `TargetValue` を 50% に設定します。Amazon Keyspaces の自動スケーリングは、テーブルのプロビジョニング済みスループットを 5～10 キャパシティユニットの範囲内で調整し、プロビジョニング済みキャパシティに占める実際のキャパシティ消費の割合が 50%、または 50% に近くなるようにします。読み取りキャパシティについては、`ScaleOutCooldown` と `ScaleInCooldown` の値を 60 秒に設定します。

次のステートメントを使用して、自動スケーリングを有効にした新しい 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
            }  
        }  
    }
};
```

------
#### [ CLI ]

**を使用して Amazon Keyspaces 自動スケーリングで新しいテーブルを作成する AWS CLI**

テーブルの自動スケーリング設定をプログラムによって行うには、`autoScalingSpecification` アクションに Amazon Keyspaces 自動スケーリングのパラメータを指定します。これらのパラメータでは、テーブルのプロビジョニング済みスループットを調整するように Amazon Keyspaces に指示する条件を定義し、追加で実行するアクションがあれば、それらも任意で定義します。この例では、*mytable* の自動スケーリング設定を定義します。

ポリシーには、次の要素が含まれます。
+ `autoScalingSpecification` – キャパシティスループットの自動調整を Amazon Keyspaces に許可するかどうかを指定します。読み取りキャパシティと書き込みキャパシティに対して別々に自動スケーリングを有効にすることができます。`autoScalingSpecification` の次のパラメータを指定する必要があります。
  + `writeCapacityAutoScaling` – 最大および最小の書き込みキャパシティユニット。
  + `readCapacityAutoScaling` – 最大および最小の読み取りキャパシティユニット。
  + `scalingPolicy` – Amazon Keyspaces はターゲット追跡ポリシーに対応しています。ターゲット追跡ポリシーを定義するには、次のパラメータを設定します。
    + `targetValue` — Amazon Keyspaces の自動スケーリングでは、プロビジョニング済みのキャパシティに占める実際のキャパシティ消費の割合が、この値と同じか近い値で維持されます。`targetValue` をパーセンテージとして定義します。
    + `disableScaleIn`: (オプション) テーブルに対して `scale-in` が無効か有効かを指定する `boolean`。このパラメータは、デフォルトでは無効になっています。`scale-in` を有効にするには、`boolean` 値を `FALSE` に設定します。その場合は、テーブルのキャパシティが自動的にスケールダウンされます。
    + `scaleOutCooldown` — スケールアウトアクティビティでテーブルのプロビジョンドスループットを増加させます。スケールアウトアクティビティのクールダウン期間を追加するには、`ScaleOutCooldown` の値を秒単位で指定します。デフォルト値は 0 です。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。
    + `scaleInCooldown` — スケールインアクティビティでテーブルのプロビジョンドスループットを減少させます。スケールインアクティビティのクールダウン期間を追加するには、`ScaleInCooldown` の値を秒単位で指定します。デフォルト値は 0 です。ターゲット追跡とクールダウン期間の詳細については、「Application Auto Scaling ユーザーガイド**」の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。

**注記**  
`TargetValue` がどのように機能するかをさらに理解するために、書き込み容量単位が 200 で、プロビジョンされたスループット設定を持つテーブルがあるとします。このテーブルのスケーリングポリシーを作成することにしました。`TargetValue` は 70% です。  
ここで、実際の書き込みスループットが 150 容量単位になるように、テーブルへの書き込みトラフィックを駆動し始めたとします。消費とプロビジョンの比率は現在 (150/200)、つまり 75% です。この割合は目標値を上回っているため、自動スケーリングはプロビジョニング済みの書き込みキャパシティを 215 に増やします。これで、割合が (150/215)、つまり 69.77% になります。これは、`TargetValue` に可能な限り近く、なおかつ上回らない値です。

*mytable* では、読み取りキャパシティと書き込みキャパシティの両方の `TargetValue` を 50% に設定します。Amazon Keyspaces の自動スケーリングは、テーブルのプロビジョニング済みスループットを 5～10 キャパシティユニットの範囲内で調整し、プロビジョニング済みキャパシティに占める実際のキャパシティ消費の割合が 50%、または 50% に近くなるようにします。読み取りキャパシティについては、`ScaleOutCooldown` と `ScaleInCooldown` の値を 60 秒に設定します。

テーブルの作成時に複雑な自動スケーリング設定を行う場合は、JSON ファイルから自動スケーリング設定を読み込むと便利です。次の例を使用するには、サンプル JSON ファイルを収録した [auto-scaling.zip](samples/auto-scaling.zip) をダウンロードし、`auto-scaling.json` を抽出します。ファイルのパスを書き留めておいてください。この例では、JSON ファイルは現在のディレクトリにあります。さまざまなファイルパスオプションについては、「[ファイルからパラメーターを読み込む方法](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html#cli-usage-parameters-file-how)」を参照してください。

```
aws keyspaces create-table --keyspace-name mykeyspace --table-name mytable 
            \ --schema-definition 'allColumns=[{name=pk,type=int},{name=ck,type=int}],partitionKeys=[{name=pk},{name=ck}]' 
            \ --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 
            \ --auto-scaling-specification file://auto-scaling.json
```

------

# 既存のテーブルに対して自動スケーリングを設定する
<a name="autoscaling.configureTable"></a>

既存の Amazon Keyspaces テーブルを更新して、そのテーブルの書き込みキャパシティまたは読み取りキャパシティに対して自動スケーリングを有効にすることができます。現時点でオンデマンドキャパシティモードのテーブルを更新する場合は、まずテーブルのキャパシティモードをプロビジョドキャパシティモードに変更する必要があります。

マルチリージョンテーブルの自動スケーリング設定を更新する方法については、「[Amazon Keyspaces でマルチリージョンテーブルのプロビジョンドキャパシティと自動スケーリングの設定を更新する](tables-mrr-autoscaling.md)」を参照してください。

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

------
#### [ Console ]

**既存のテーブルに対して Amazon Keyspaces の自動スケーリングを設定する**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. 使用するテーブルを選択してから、**[キャパシティ]** タブを選択します。

1. **[キャパシティ設定]** セクションで、**[編集]** を選択します。

1. **[キャパシティモード]** で、テーブルが **[プロビジョンド]** キャパシティモードを使用していることを確認します。

1. [**Scale automatically (自動スケーリング)**] を選択し、[自動スケーリングを有効にして新規テーブルを作成する](autoscaling.createTable.md) のステップ 6 を参照して読み取り/書き込みキャパシティを編集します。

1. 自動スケーリング設定が定義されたら、[**Save (保存)**] を選択します。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用して既存のテーブルに Amazon Keyspaces 自動スケーリングを設定する**

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

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

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

```
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
            }  
        }  
    }
};
```

------
#### [ CLI ]

**を使用して Amazon Keyspaces 自動スケーリングで既存のテーブルを設定する AWS CLI**

既存の Amazon Keyspaces テーブルに対して `UpdateTable` オペレーションを使用して、そのテーブルの書き込みキャパシティまたは読み取りキャパシティに対して自動スケーリングを有効にすることができます。

次のコマンドを使用して、既存のテーブルに対して Amazon Keyspaces の自動スケーリングを有効にすることができます。テーブルの自動スケーリング設定は JSON ファイルから読み込まれます。次の例を使用するには、サンプル JSON ファイルを収録した [auto-scaling.zip](samples/auto-scaling.zip) をダウンロードし、`auto-scaling.json` を抽出します。ファイルのパスを書き留めておいてください。この例では、JSON ファイルは現在のディレクトリにあります。さまざまなファイルパスオプションについては、「[ファイルからパラメーターを読み込む方法](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html#cli-usage-parameters-file-how)」を参照してください。

次の例で使用されている自動スケーリング設定の詳細については、「[自動スケーリングを有効にして新規テーブルを作成する](autoscaling.createTable.md)」を参照してください。

```
aws keyspaces update-table --keyspace-name mykeyspace --table-name mytable 
            \ --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=1,writeCapacityUnits=1 
            \ --auto-scaling-specification file://auto-scaling.json
```

------

# テーブルの Amazon Keyspaces 自動スケーリングの設定を表示する
<a name="autoscaling.viewPolicy"></a>

コンソール、CQL、または を使用して、テーブルの Amazon Keyspaces 自動スケーリング設定 AWS CLI を表示および更新できます。

------
#### [ Console ]

****

**コンソールを使用して自動スケーリング設定を表示する**

1. 表示対象のテーブルを選択し、**[キャパシティ]** タブに移動します。

1. **[キャパシティ設定]** セクションで、**[編集]** を選択します。**[読み込みキャパシティ]** セクションまたは **[書き込みキャパシティ]** セクションで設定を変更できます。これらの設定の詳細については、「[自動スケーリングを有効にして新規テーブルを作成する](autoscaling.createTable.md)」をご参照ください。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルの Amazon Keyspaces 自動スケーリングポリシーを表示する**

テーブルの自動スケーリング設定の詳細を表示するには、次のコマンドを使用します。

```
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}}}
```

------
#### [ CLI ]

**を使用してテーブルの Amazon Keyspaces 自動スケーリングポリシーを表示する AWS CLI**

テーブルの自動スケーリング設定を表示するには、`get-table-auto-scaling-settings` オペレーションを使用します。次の CLI コマンドは一例です。

```
aws keyspaces get-table-auto-scaling-settings --keyspace-name mykeyspace --table-name mytable
```

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

```
{
    "keyspaceName": "mykeyspace",
    "tableName": "mytable",
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable",
    "autoScalingSpecification": {
        "writeCapacityAutoScaling": {
            "autoScalingDisabled": false,
            "minimumUnits": 5,
            "maximumUnits": 10,
            "scalingPolicy": {
                "targetTrackingScalingPolicyConfiguration": {
                    "disableScaleIn": false,
                    "scaleInCooldown": 0,
                    "scaleOutCooldown": 0,
                    "targetValue": 50.0
                }
            }
        },
        "readCapacityAutoScaling": {
            "autoScalingDisabled": false,
            "minimumUnits": 5,
            "maximumUnits": 10,
            "scalingPolicy": {
                "targetTrackingScalingPolicyConfiguration": {
                    "disableScaleIn": false,
                    "scaleInCooldown": 60,
                    "scaleOutCooldown": 60,
                    "targetValue": 50.0
                }
            }
        }
    }
}
```

------

# テーブルの Amazon Keyspaces 自動スケーリングを無効にする
<a name="autoscaling.turnoff"></a>

テーブルの Amazon Keyspaces 自動スケーリングはいつでも無効にすることができます。テーブルの読み取りキャパシティまたは書き込みキャパシティのスケーリングが不要になった場合は、それ以降は Amazon Keyspaces でテーブルの読み取り/書き込みキャパシティの設定が変更されないように、自動スケーリングを無効にすることを検討してください。コンソール、CQL、または AWS CLIを使用して、テーブルを更新することができます。

自動スケーリングを無効にすると、自動的に作成された CloudWatch アラームも削除されます。

Amazon Keyspaces テーブルにアクセスのために Application Auto Scaling により使用されるサービスリンクロールを削除するには、[Amazon Keyspaces のサービスリンクロールの削除](using-service-linked-roles-app-auto-scaling.md#delete-service-linked-role-app-auto-scaling) のステップを実行します。

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

------
#### [ Console ]

**コンソールを使用してテーブルの Amazon Keyspaces 自動スケーリングを無効にする**

**Amazon Keyspaces コンソールの使用**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. 更新対象のテーブルを選択し、**[キャパシティ]** タブに移動します。

1. **[キャパシティ設定]** セクションで、**[編集]** を選択します。

1. Amazon Keyspaces の自動スケーリングを無効にするには、**[自動スケーリング]** チェックボックスの選択を解除します。自動スケーリングを無効にすると、Application Auto Scaling のスケーラブルターゲットとしてのテーブルの登録が解除されます。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルの Amazon Keyspaces 自動スケーリングを無効にする**

次のステートメントは、テーブル *mytable* の書き込みキャパシティの自動スケーリングを無効にします。

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

------
#### [ CLI ]

**を使用してテーブルの Amazon Keyspaces 自動スケーリングをオフにする AWS CLI**

次のコマンドは、テーブルの読み取りキャパシティの自動スケーリングを無効にします。また、自動的に作成された CloudWatch アラームも削除されます。

```
aws keyspaces update-table --keyspace-name mykeyspace --table-name mytable 
            \ --auto-scaling-specification readCapacityAutoScaling={autoScalingDisabled=true}
```

------

# Amazon CloudWatch で Amazon Keyspaces テーブルの自動スケーリングアクティビティを表示する
<a name="autoscaling.activity"></a>

使用状況とパフォーマンスに関するメトリクスを生成する Amazon CloudWatch を使用すれば、Amazon Keyspaces 自動スケーリングによるリソースの使用状況をモニタリングできます。『[Application Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/application/userguide/monitoring-cloudwatch.html)』のステップに従って CloudWatch ダッシュボードを作成します。