Amazon QuickSight でカスタム SQL データソースを使用しようとしていますが、「Your database generated a SQL exception.」(データベースが SQL 例外を生成しました。) というエラーが発生します。 これを解決するにはどうすればよいですか?
簡単な説明
Amazon QuickSight が SQL データソースをクエリまたは更新しているときに、次のエラーメッセージが表示されます。
"Your database generated a SQL exception. This can be caused by query timeouts, resource constraints, unexpected DDL alterations before or during a query, and other database errors. Check your database settings and your query, and try again."
エラーの原因に関する詳細情報を表示するには、エラーメッセージの下にある [Show Details] (詳細を表示) を選択します。
エラーメッセージが表示される一般的な理由は次のとおりです。
- クエリがタイムアウトする。
- データソースへの VPC 接続に問題がある。
- データにアクセスするための許可が QuickSight アカウントに付与されていない。
- AWS マネージド Key Management Service (AWS KMS) キーにアクセスするための許可が QuickSight サービスロールに付与されていない。
- サポートされていないデータ型または関数を使用している。
解決方法
AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、
AWS CLI の最新バージョンを使用するようにしてください。
クエリがタイムアウトする
カスタム SQL クエリがタイムアウトする場合は、クエリを簡略化してランタイムを最適化します。クエリのタイムアウトに関する他の解決方法については、「QuickSight でクエリタイムアウトの問題を解決する方法を教えてください」を参照してください。
データソースへの VPC 接続に問題がある
エラーメッセージの詳細には次が含まれます。
Communications link failure The last packet successfully received from the server was nnnn milliseconds ago. The last packet sent successfully to the server was nnnn milliseconds ago.
Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
データソースへの VPC 接続の問題が発生している場合は、リソースに関連付けられている VPC のネットワークセキュリティグループを確認します。詳細については、「Connecting to a VPC with Amazon QuickSight」(Amazon QuickSight で VPC に接続する) を参照してください。
データにアクセスするための許可が QuickSight アカウントに付与されていない
AWS のサービスのデータにアクセスしようとしたときに SQL 例外エラーが発生した場合は、QuickSight のセキュリティと許可の設定を確認してください。
- Amazon QuickSight コンソールを開きます。
- [Manage QuickSight] (QuickSight を管理) を選択します。
- [Security & Permissions] (セキュリティと許可) を選択します。
- 使用するサポート対象サービスへのアクセスを設定します。
AWS Organizations を使用している場合、必要なサービスコントロールポリシー (SCP) が割り当てられていないときにエラーが表示されることがあります。割り当てられている許可を確認するために、AWS Organizations の管理者に問い合わせて SCP 設定を確認してください。AWS Organizations の管理者は、「Creating, updating, and deleting service control policies」(サービスコントロールポリシーの作成、更新、削除) を参照してください。
AWS マネージド KMS キーにアクセスするための許可が QuickSight サービスロールに付与されていない
次のエラーが表示されます。
If you are encrypting query results with KMS key, please ensure you are allowed to access your KMS key.
QuickSight のサービスロールに正しい AWS KMS キー許可が付与されていることを確認します。
- AWS Identity and Access Management (IAM) コンソールを使用して、QuickSight のサービスロールの ARN を見つけます。
- Amazon Simple Storage Service (Amazon S3) コンソールを使用して、AWS KMS キーの ARN を見つけます。
データファイルを含むバケットに移動します。
[Overview] (概要) タブを選択し、[KMS key ID] (KMS キー ID) を見つけます。
- QuickSight のサービスロールの ARN を KMS キーポリシーに追加します。
AWS CLI の create-grant コマンドを実行します。
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 関数がサポートされているかどうかを判断します。
サポート対象を確認するには、次のリソースを確認してください。
関連情報
Quotas for direct SQL queries (直接 SQL クエリのクォータ)
Amazon QuickSight から Amazon Redshift クラスターまたはプライベートサブネットにある Amazon Relational Database Service (Amazon RDS) DB インスタンスへのプライベート接続を作成する方法を教えてください
Actions, resources, and condition keys for Amazon QuickSight (Amazon QuickSight のアクション、リソース、および条件キー)