Amazon QuickSight でカスタム SQL データソースを使用しようとしたところ、"データベースにより SQL 例外が生成されました" というエラーメッセージが発生します。
簡単な説明
QuickSight が SQL データソースをクエリまたは更新する際に、次のエラーメッセージが表示されます。
"データベースにより SQL 例外が発生しました。クエリのタイムアウト、リソースの制約、予期しない DDL の変更がクエリの前またはクエリ中に発生したか、その他のデータベースエラーが原因である可能性があります。データベースとクエリの設定を確認してから再試行してください。"
上記のエラーメッセージは、次の理由で発生する場合があります。
- クエリのタイムアウト。
- データソースへの仮想プライベートクラウド (VPC) 接続に問題がある。
- QuickSight アカウントにデータへのアクセス許可がない。
- QuickSight サービスロールが、AWS managed Key Management Service (AWS KMS) へのアクセスを許可されていない。
- サポートされていないデータ型または関数を使用した。
エラーの原因の詳細については、エラーメッセージの下にある [詳細を表示] を選択すると確認できます。
データセットの更新時に上記のエラーメッセージが発生した場合は、データセットの [概要] でエラーに関する詳細を確認できます。[インポート失敗ステータス] を選択すると、詳細を取得できます。
上記のエラーメッセージがダッシュボードに表示されている場合は、[基盤分析] に移動し、[関連するビジュアル] を選択します。分析の左側のペインにあるデータセットを書き留めた後、データの [概要] を確認します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
クエリのタイムアウト
カスタム SQL クエリがタイムアウトした場合は、クエリを簡素化して実行時間を最適化します。その他のクエリタイムアウトの解決策については、「QuickSight でのクエリタイムアウトの問題を解決する方法を教えてください」を参照してください。
データソースへの VPC 接続に問題がある
次のエラーメッセージのいずれかが表示されます。
"通信のリンクエラー。最後のサーバーからの正常なパケット受信: nnnn ミリ秒前。最後のサーバーへの正常なパケット送信: nnnn ミリ秒前。"
または、
"通信のリンクエラー。最後のサーバーへの正常なパケット送信: 0 ミリ秒前。ドライバーはサーバーからパケットを受信しませんでした。"
データソースへの VPC 接続の問題が発生した場合は、リソースに関連付けられている VPC のネットワークセキュリティグループを確認してください。詳細については、「Amazon QuickSight による VPC への接続」を参照してください。
QuickSight アカウントがデータへのアクセスを許可されていない
AWS サービスのデータにアクセスしようとしたときに SQL 例外エラーが発生した場合は、QuickSight のセキュリティとアクセス許可の設定を確認してください。
次の手順を実行します。
- QuickSight コンソールを開きます。
- [QuickSight の管理] を選択します。
- [セキュリティとアクセス許可] を選択します。
- 使用するサポート対象データソースへのアクセスを設定します。
AWS Organizations を使用している場合、必要なサービスコントロールポリシー (SCP) が割り当てられていない場合にエラーが発生します。Organizations 管理者に、SCP 設定で割り当てられているアクセス許可の検証を依頼してください。
お客様自身が Organizations 管理者である場合は、「サービスコントロールポリシーを更新する」を参照してください。
QuickSight サービスロールが、AWS マネージド KMS キーへのアクセスを許可されていない。
次のエラーが発生します。
"KMS キーでクエリ結果を暗号化する場合は、KMS キーへのアクセスが許可されていることを確認してください。"
QuickSight サービスロールに正しい AWS KMS キーのアクセス許可があることを確認するには、次の手順を実行します。
- AWS Identity and Access Management (IAM) コンソールを使用して QuickSight サービスロールの ARN を特定します。
- Amazon Simple Storage Service (Amazon S3) コンソールを使用して AWS KMS キー ARN を特定します。データファイルを含むバケットに移動します。[概要] タブを選択し、AWS KMS キーの ID を特定します。
- AWS CLI コマンド create-grant を実行し、QuickSight サービスロールの ARN を AWS KMS キーポリシーに追加します。
aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quicksight_role_arn --operations Decrypt
注: お使いのものでそれぞれ、aws_kms_key_arn は AWS KMS キーの ARN に、quicksight_role_arn は QuickSight サービスロールの ARN に置き換えます。
サポートされていないデータ型または関数を使用した
サポートされていないデータ型をインポートしようとしたか、サポートされていない SQL 関数を使用した場合、SQL 例外エラーが発生します。この問題を解決するには、SQL データソースをチェックして、データタイプまたは SQL 関数がサポートされているかどうかを確認してください。
サポートされているものについては、次のリソースを確認してください。
関連情報
直接 SQL クエリに対するクォータ
Amazon QuickSight からプライベートサブネットにある Amazon RDS DB インスタンスまたは Amazon Redshift クラスターへのプライベート接続を作成する方法を教えてください
Amazon QuickSight のアクション、リソース、条件キー