

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

# Amazon Keyspaces のデータ定義言語エラーのトラブルシューティング
<a name="troubleshooting.cql"></a>

リソースの作成に問題がありますか。以下は、一般的なシナリオとその解決方法です。

## データ定義言語エラー
<a name="troubleshooting-cql"></a>

Amazon Keyspaces では、キースペースとテーブルの非同期的な作成や削除など、データ定義言語 (DDL) オペレーションが同期なしで実行されます。アプリケーションの準備が整っていない時点でアプリケーションによりリソースの使用が試行されると、そのオペレーションは失敗します。

で新しいキースペースとテーブルの作成ステータスをモニタリングできます。これは AWS マネジメントコンソール、キースペースまたはテーブルが保留中またはアクティブであることを示します。システムスキーマテーブルのクエリを実行して、新しいキースペースまたはテーブルの作成ステータスをプログラムにより監視することもできます。キースペースまたはテーブルは、使用可能な状態になると、システムスキーマに表示されます。

**注記**  
を使用してキースペースの作成を最適化するには CloudFormation、このユーティリティを使用して CQL スクリプトを CloudFormation テンプレートに変換します。このツールは [GitHub リポジトリ](https://github.com/aws/amazon-keyspaces-cql-to-cfn-converter)から入手できます。

**Topics**
+ [キースペース作成エラー](#troubleshooting.cql.keyspace)
+ [テーブル作成エラー](#troubleshooting.cql.table)
+ [Amazon Keyspaces ポイントインタイムリカバリ (PITR、point-in-time recovery) を使用してテーブルを復元することができない](#troubleshooting.cql.pitr)
+ [INSERT/UPDATE を使用してカスタム有効期限 (TTL) 設定を編集しようとすると、オペレーションが失敗する](#troubleshooting.cql.ttl)
+ [列数の超過](#troubleshooting.cql.upload)
+ [削除範囲エラー](#troubleshooting.cql.rangedelete)

### 新しいキースペースを作成したが、表示またはアクセスできない
<a name="troubleshooting.cql.keyspace"></a>

**新しいキースペースへのアクセスを試行しているアプリケーションからエラーが送られてきた。**

非同期的作成中である新規の Amazon Keyspaces キースペースにアクセスしようとすると、エラーが発生します。以下にエラーの例を示します。

```
InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured keyspace mykeyspace"
```

新しいキースペースが使用可能な状態になるタイミングをチェックするための推奨設計パターンとは、Amazon Keyspaces のシステムスキーマテーブル (system\$1schema\$1mcs.\$1) のポーリングです。

詳細については、「[Amazon Keyspaces でキースペースの作成ステータスを確認する](keyspaces-create.md)」を参照してください。

### 新しいテーブルを作成したが、表示またはアクセスできない
<a name="troubleshooting.cql.table"></a>

**新しいテーブルへのアクセスを試行しているアプリケーションからエラーが送られてきました。**

非同期的作成中である新規の Amazon Keyspaces テーブルにアクセスしようとすると、エラーが発生します。例えば、まだ使用できる状態ではないテーブルをクエリしようとすると失敗して `unconfigured table` というエラーが表示されます。

```
InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured table mykeyspace.mytable"
```

`sync_table()` でテーブルを表示しようとすると失敗して `KeyError` が表示されます。

```
KeyError: 'mytable'
```

新しいテーブルが使用可能な状態になるタイミングをチェックするための推奨設計パターンとは、Amazon Keyspaces のシステムスキーマテーブル (system\$1schema\$1mcs.\$1) のポーリングです。

これは作成中のテーブルの出力例です。

```
user-at-123@cqlsh:system_schema_mcs> select table_name,status from system_schema_mcs.tables where keyspace_name='example_keyspace' and table_name='example_table';

table_name | status

------------+----------

example_table | CREATING

(1 rows)
```

これはアクティブなテーブルの出力例です。

```
user-at-123@cqlsh:system_schema_mcs> select table_name,status from system_schema_mcs.tables where keyspace_name='example_keyspace' and table_name='example_table';

table_name | status

------------+----------

example_table | ACTIVE

(1 rows)
```

詳細については、「[Amazon Keyspaces でテーブルの作成ステータスを確認する](tables-create.md)」を参照してください。

### Amazon Keyspaces ポイントインタイムリカバリ (PITR、point-in-time recovery) を使用してテーブルを復元することができない
<a name="troubleshooting.cql.pitr"></a>

ポイントインタイムリカバリ (PITR) を使用して Amazon Keyspaces テーブルの復元を試みた際に、復元プロセスが開始しても正常に完了しない場合は、この特定のテーブルの復元プロセスに必要なアクセス許可の一部が設定されていない可能性があります。

Amazon Keyspaces では、ユーザーアクセス許可に加えて、復元プロセス中にプリンシパルに代わってアクションを実行するためのアクセス許可が必要になる場合があります。これは、テーブルがカスタマーマネージドキーで暗号化されている場合や、着信トラフィックを制限する IAM ポリシーを使用している場合です。

例えば、IAM ポリシーで条件キーを使用してソーストラフィックを特定のエンドポイントまたは IP 範囲に制限している場合、復元オペレーションは失敗します。プリンシパルの代わりに Amazon Keyspaces によってテーブルの復元オペレーションが実行されるようにするには、IAM ポリシーに `aws:ViaAWSService` グローバル条件キーを追加する必要があります。

テーブルを復元するためのアクセス許可の詳細については、「[Amazon Keyspaces PITR のテーブル復元用の IAM アクセス許可を設定する](howitworks_restore_permissions.md)」を参照してください。

### INSERT/UPDATE を使用してカスタム有効期限 (TTL) 設定を編集しようとすると、オペレーションが失敗する
<a name="troubleshooting.cql.ttl"></a>

カスタム TTL 値を挿入または更新しようとすると、次のエラーが発生してオペレーションが失敗することがあります。

```
TTL is not yet supported.
```

`INSERT` または `UPDATE` のオペレーションを使用して行または列のカスタム TTL 値を指定するには、まずそのテーブルの TTL を有効にする必要があります。`ttl` カスタムプロパティを使用すればテーブルの TTL を有効にすることができます。

テーブルのカスタム TTL 設定を有効にする方法の詳細については、「[カスタムの有効期限 (TTL) でテーブルを更新する](TTL-how-to-enable-custom-alter.md)」を参照してください。

### Amazon Keyspaces テーブルにデータをアップロードしようとすると、列数の超過に関するエラーが発生する
<a name="troubleshooting.cql.upload"></a>

**データをアップロードしていて、同時に更新できる列数を超過した。**

このエラーは、テーブルスキーマが最大サイズの 350 KB を超えた場合に発生します。詳細については、「[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md)」を参照してください。

### Amazon Keyspaces テーブルのデータを削除しようとすると、その範囲のために削除が失敗する
<a name="troubleshooting.cql.rangedelete"></a>

**パーティションキーでデータを削除しようとすると、削除範囲エラーが表示されます。**

このエラーは、1 回の削除オペレーションで 1,000 行以上を削除しようとしたときに発生します。

```
Range delete requests are limited by the amount of items that can be deleted in a single range.
```

詳細については、「[範囲削除](functional-differences.md#functional-differences.range-delete)」を参照してください。

1 つのパーティション内で 1,000 行以上を削除する場合は、次のオプションを検討してください。
+ パーティションごとの削除 — パーティションの大部分が 1,000 行未満の場合は、パーティションごとにデータを削除できます。パーティションに含まれている行が 1,000 行以上である場合は、代わりにクラスタリング列ごとに削除してください。
+ クラスタリング列ごとの削除 — モデルに複数のクラスタリング列が含まれている場合、列階層を使用して複数の行を削除できます。クラスタリング列はネスト構造であり、最上位の列に対してオペレーションを行うことで、多くの行を削除できます。
+ 行ごとの削除 — 行を繰り返し処理し、そのフルプライマリキーで各行を削除できます (パーティション列とクラスタリング列)。
+ ベストプラクティスとして、パーティション間での行の分割を検討してください。Amazon Keyspaces では、テーブルパーティション間でスループットを分散させることをお勧めします。これにより、物理リソース間でデータとアクセスが均等に分散され、最高のスループットが得られます。詳細については、「[データモデリングのベストプラクティス: データモデル設計時の推奨事項](data-modeling.md)」を参照してください。

高いワークロードに対して削除オペレーションを計画する場合は、次の推奨事項も考慮してください。
+ Amazon Keyspaces では、パーティションに含めることができる行数は事実上無制限です。これにより、従来の Cassandra ガイダンスである 100 MB よりも「広く」パーティションのスケールを調整できます。時系列や台帳については、時間の経過とともにデータをギガバイト単位で増加させることは珍しくありません。
+ Amazon Keyspaces では、高いワークロードの削除オペレーションを実行する必要がある場合に考慮すべき圧縮戦略やトゥームストーンはありません。読み取りパフォーマンスに影響を与えることなく、必要な数のデータを削除できます。