

# Amazon RDS Data API のトラブルシューティング
<a name="data-api.troubleshooting"></a>

Amazon RDS Data API (Data API) に関する問題のトラブルシューティングには、「一般的なエラーメッセージ」というタイトルの以下のセクションを使用します。

**Topics**
+ [Transaction <transaction\$1ID> isn't found](#data-api.troubleshooting.tran-id-not-found)
+ [クエリのパケットが大きすぎる](#data-api.troubleshooting.packet-too-large)
+ [データベース応答がサイズ制限を超えている](#data-api.troubleshooting.response-size-too-large)
+ [HttpEndpoint isn't enabled for cluster <cluster\$1ID>](#data-api.troubleshooting.http-endpoint-not-enabled)
+ [DatabaseErrorException: トランザクションがまだクエリを実行中です](#data-api.troubleshooting.txn-concurrent-requests-rejected)
+ [サポートされていない結果例外](#data-api.troubleshooting.unsupported-result)
+ [マルチステートメントはサポートされていない](#data-api.troubleshooting.multi-statements)
+ [スキーマパラメータはサポートされていない](#data-api.troubleshooting.schema-parameter)
+ [IPv6 接続の問題](#data-api.troubleshooting.ipv6-connectivity)

## Transaction <transaction\$1ID> isn't found
<a name="data-api.troubleshooting.tran-id-not-found"></a>

この場合、Data API 呼び出しで指定されたトランザクション ID は見つかりませんでした。この問題の原因は、エラーメッセージに追加されますが、次のいずれかであることが考えられます。
+ トランザクションの有効期限が切れている可能性があります。

  各トランザクションの呼び出しが、前のトランザクション呼び出しから 3 分以内に実行されることを確認します。

  指定されたトランザクション ID が、[BeginTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html) コールによって作成されていない可能性もあります。呼び出しに有効なトランザクション ID があることを確認します。
+ 前回の呼び出しで、トランザクションが終了しました。

  トランザクションは、お客様の `CommitTransaction` または `RollbackTransaction` コールによってすでに終了しています。
+ 前回の呼び出しのエラーにより、トランザクションが中断されました。

  以前の呼び出しで例外が発生したかどうかを確認します。

トランザクションの実行については、「[Amazon RDS Data API の呼び出し](data-api.calling.md)」を参照してください。

## クエリのパケットが大きすぎる
<a name="data-api.troubleshooting.packet-too-large"></a>

この場合、1 行に対して返った結果セットが大きすぎます。Data API のサイズ制限は、データベースから返る結果セットの 1 行あたり 64 KB です。

この問題を解決するには、結果セットの各行が 64 KB 以下であることを確認します。

## データベース応答がサイズ制限を超えている
<a name="data-api.troubleshooting.response-size-too-large"></a>

この場合、データベースから返る結果セットのサイズが大きすぎます。Data API の制限は、データベースから返る結果セットの 1 MiB です。

この問題を解決するには、Data API への呼び出しで返るデータが 1 MiB 以下になるようにします。1 MiB を超えるデータを返す必要がある場合は、クエリで`LIMIT`句を使用して、[https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html)呼び出しを複数回行います。

`LIMIT` 句の詳細については、MySQL ドキュメントの「[SELECT 構文](https://dev.mysql.com/doc/refman/8.0/en/select.html)」を参照してください。

## HttpEndpoint isn't enabled for cluster <cluster\$1ID>
<a name="data-api.troubleshooting.http-endpoint-not-enabled"></a>

この問題の原因として考えられるものとして、以下の項目を確認してください。
+ Aurora DB クラスターは Data API をサポートしていません。RDS Data API がサポートする DB クラスターのタイプについては、「[Amazon RDS Data API のリージョンとバージョンの可用性](data-api.regions.md)」を参照してください。
+ Data API が Aurora DB クラスターに対して有効になっていません。Aurora DB クラスターで Data API を使用するには、DB クラスターに対して Data API が有効になっている必要があります。Data API を有効にする方法については、「[Amazon RDS Data API の有効化](data-api.enabling.md)」を参照してください。
+ Data API が有効になった後、DB クラスターの名前が変更されました。この場合は、クラスターの データ API を一度オフにしてから、再度有効にします。
+ 指定された ARN がクラスターの ARN と正確に一致しません。別のソースから返された ARN、またはプログラムロジックによって構築された ARN が、クラスターの ARN と正確に一致していることを確認します。例えば、使用する ARN は、アルファベットの大文字と小文字がすべて一致しているかを確認します。

## DatabaseErrorException: トランザクションがまだクエリを実行中です
<a name="data-api.troubleshooting.txn-concurrent-requests-rejected"></a>

 アプリケーションがトランザクション ID を使用してリクエストを送信し、そのトランザクションが現在別のリクエストを処理している場合、Data API はすぐにこのエラーをアプリケーションに返します。この状態は、アプリケーションが Javascript で「promises」などのメカニズムを使用して非同期リクエストを行う場合に発生する可能性があります。

 この問題を解決するには、前のリクエストが終了するまで待ってから、リクエストを再試行してください。エラーが発生しなくなるか、アプリケーションが別の種類のエラーを受信するまで再試行を続けることができます。

 この状態は、Aurora Serverless v2 およびプロビジョンドインスタンスの Data API で発生する可能性があります。Aurora Serverless v1 の Data API では、同じトランザクション ID に対する後続のリクエストは、前のリクエストが終了するまで自動的に待機します。ただし、この古い動作では、前のリクエストに時間がかかりすぎるため、タイムアウトが発生する可能性があります。同時リクエストを行う古い Data API アプリケーションを移行する場合は、この新しい種類のエラーを考慮して例外処理ロジックを変更します。

## サポートされていない結果例外
<a name="data-api.troubleshooting.unsupported-result"></a>

Data API は、すべてのデータ型をサポートしているわけではありません。このエラーは、サポートされていないデータ型を返すクエリを実行したときに発生します。

この問題を回避するには、サポートされていないデータ型を `TEXT` にキャストします。例えば、次のようになります。

```
SELECT custom_type::TEXT FROM my_table;
-- OR
SELECT CAST(custom_type AS TEXT) FROM my_table;
```

## マルチステートメントはサポートされていない
<a name="data-api.troubleshooting.multi-statements"></a>

マルチステートメントは、Aurora Serverless v2 とプロビジョニングされたクラスター用の Data API ではサポートされていません。1 回の API コールで複数のステートメントを実行しようとすると、このエラーが発生します。

複数のステートメントを実行するには、別々の `ExecuteStatement` API コールを使用するか、バッチ処理用の `BatchExecuteStatement` API を使用します。

## スキーマパラメータはサポートされていない
<a name="data-api.troubleshooting.schema-parameter"></a>

Aurora Serverless v1 はスキーマパラメータを暗黙的に無視します。ただし、Aurora Serverless v2 とプロビジョニングされたクラスターは、スキーマパラメータを含む API コールを明示的に拒否します。

この問題を解決するには、Aurora Serverless v2 またはプロビジョニングされたクラスターを使用するときに、Data API へのすべてのコールからスキーマパラメータを削除します。

## IPv6 接続の問題
<a name="data-api.troubleshooting.ipv6-connectivity"></a>

IPv6 エンドポイントを使用して Data API に接続するときに問題が発生した場合は、次の潜在的な原因を確認してください。
+ **ネットワークが IPv6 をサポートしていない**: ネットワークインフラストラクチャが IPv6 をサポートし、IPv6 ルーティングが正しく設定されていることを確認します。
+ **DNS 解決の問題**: DNS リゾルバーがデュアルスタックエンドポイント (例: `rds-data.us-east-1.api.aws`) の AAAA レコードを解決できることを確認します。
+ **セキュリティグループ設定**: セキュリティグループルールを更新して、ポート 443 (HTTPS) で IPv6 トラフィックを許可します。IPv6 CIDR ブロックのルールを追加します (例: すべての IPv6 アドレスの場合は `::/0`)。
+ **ネットワーク ACL 設定**: ネットワーク ACL が必要なポートで IPv6 トラフィックを許可していることを確認します。
+ **クライアントライブラリの互換性**: HTTP クライアントライブラリと AWS SDK が IPv6 およびデュアルスタック接続をサポートしていることを確認します。
+ **VPC エンドポイント設定**: PrivateLink を使用している場合は、VPC エンドポイントが IPv6 をサポートするように設定され、関連付けられたサブネットに IPv6 CIDR ブロックが割り当てられていることを確認します。

IPv6 接続の問題をトラブルシューティングするには、以下を行います。

1. IPv4 のみのエンドポイント (`.amazonaws.com`) を使用して接続をテストし、問題が IPv6 に固有であることを確認します。

1. ネットワーク診断ツールを使用して、デュアルスタックエンドポイントへの IPv6 接続を検証します。

1. IPv6 エンドポイントを使用する際は、CloudTrail ログに認証エラーや認可エラーがないか確認してください。

1. 新しいデュアルスタックエンドポイント URL を使用するようにアプリケーションが正しく設定されていることを確認します。