Amazon RDS Data API のトラブルシューティング - Amazon Aurora

Amazon RDS Data API のトラブルシューティング

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

Transaction <transaction_ID> isn't found

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

  • トランザクションの有効期限が切れている可能性があります。

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

    指定されたトランザクション ID が、BeginTransaction コールによって作成されていない可能性もあります。呼び出しに有効なトランザクション ID があることを確認します。

  • 前回の呼び出しで、トランザクションが終了しました。

    トランザクションは、お客様の CommitTransaction または RollbackTransaction コールによってすでに終了しています。

  • 前回の呼び出しのエラーにより、トランザクションが中断されました。

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

トランザクションの実行については、「Amazon RDS Data API の呼び出し」を参照してください。

クエリのパケットが大きすぎる

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

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

データベース応答がサイズ制限を超えている

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

この問題を解決するには、Data API への呼び出しで返るデータが 1 MiB 以下になるようにします。1 MiB を超えるデータを返す必要がある場合は、クエリでLIMIT句を使用して、ExecuteStatement呼び出しを複数回行います。

LIMIT 句の詳細については、MySQL ドキュメントの「SELECT 構文」を参照してください。

HttpEndpoint isn't enabled for cluster <cluster_ID>

この問題の原因として考えられるものとして、以下の項目を確認してください。

  • Aurora DB クラスターは Data API をサポートしていません。RDS Data API がサポートする DB クラスターのタイプについては、「Amazon RDS Data API のリージョンとバージョンの可用性」を参照してください。

  • Data API が Aurora DB クラスターに対して有効になっていません。Aurora DB クラスターで Data API を使用するには、DB クラスターに対して Data API が有効になっている必要があります。Data API を有効にする方法については、「Amazon RDS Data API の有効化」を参照してください。

  • Data API が有効になった後、DB クラスターの名前が変更されました。この場合は、クラスターの データ API を一度オフにしてから、再度有効にします。

  • 指定された ARN がクラスターの ARN と正確に一致しません。別のソースから返された ARN、またはプログラムロジックによって構築された ARN が、クラスターの ARN と正確に一致していることを確認します。例えば、使用する ARN は、アルファベットの大文字と小文字がすべて一致しているかを確認します。

DatabaseErrorException: トランザクションがまだクエリを実行中です

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

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

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

サポートされていない結果例外

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

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

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

マルチステートメントはサポートされていない

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

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

スキーマパラメータはサポートされていない

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

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