

# Aurora DSQL の問題のトラブルシューティング
<a name="troubleshooting"></a>

**注記**  
以下のトピックでは、Aurora DSQL の使用時に発生する可能性のあるエラーや問題のトラブルシューティングに関するアドバイスを提供します。こちらに記載されていない問題が見つかった場合は、AWS サポートにお問い合わせください。

**Topics**
+ [接続エラーのトラブルシューティング](#troubleshooting-connections)
+ [認証エラーのトラブルシューティング](#troubleshooting-authentication)
+ [認可エラーのトラブルシューティング](#troubleshooting-authorization)
+ [SQL エラーのトラブルシューティング](#troubleshooting-sql)
+ [同時実行制御レスポンスのトラブルシューティング](#troubleshooting-occ)
+ [SSL/TLS 接続のトラブルシューティング](#troubleshooting-ssl-tls)

## 接続エラーのトラブルシューティング
<a name="troubleshooting-connections"></a>

**error: unrecognized SSL error code: 6** または **unable to accept connection, sni was not received**

Server Name Indication (SNI) をサポートしていない[バージョン 14](https://www.postgresql.org/docs/release/14.0/) より前の psql バージョンを使用している可能性があります。SNI は Aurora DSQL に接続するときに必要です。

クライアントのバージョンは `psql --version` で確認できます。

**error: NetworkUnreachable**

接続試行中の `NetworkUnreachable` エラーは、実際のネットワーク問題を示すのではなく、クライアントが IPv6 接続をサポートしていないことを示している可能性があります。このエラーは、PostgreSQL クライアントがデュアルスタック接続を処理する方法が原因で、一般的に IPv4 のみのインスタンスで発生します。サーバーがデュアルスタックモードをサポートしている場合、これらのクライアントはまずホスト名を IPv4 アドレスと IPv6 アドレスの両方に解決します。最初に IPv4 接続を試み、最初の接続が失敗した場合は IPv6 を試みます。システムが IPv6 をサポートしていない場合は、明確な「IPv6 はサポートされていません」というメッセージの代わりに一般的な `NetworkUnreachable` エラーが表示されます。

## 認証エラーのトラブルシューティング
<a name="troubleshooting-authentication"></a>

**IAM authentication failed for user "..."**

Aurora DSQL IAM 認証トークンを生成する場合、設定できる最大期間は 1 週間です。1 週間後、そのトークンで認証することはできません。

さらに、引き受けたロールの有効期限が切れている場合、Aurora DSQL は接続リクエストを拒否します。例えば、認証トークンの有効期限が切れていない場合でも、一時的な IAM ロールに接続しようとすると、Aurora DSQL は接続リクエストを拒否します。

IAM と Aurora DSQL の連携の詳細については、「[Understanding authentication and authorization for Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/authentication-authorization.html)」および「[AWS Identity and Access Management in Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam.html)」を参照してください。

**An error occurred (InvalidAccessKeyId) when calling the GetObject operation: The AWS Access Key ID you provided does not exist in our records**

IAM がリクエストを拒否しました。詳細については、「[リクエストに署名する理由](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html#why-requests-are-signed)」を参照してください。

**IAM role <role> does not exist**

Aurora DSQL は IAM ロールを見つけることができませんでした。詳細については、「[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)」を参照してください。

**IAM role must look like an IAM ARN**

詳細については、「[IAM ID - IAM ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)」を参照してください。

**ユーザーとアクションのマッピングが正しくない**

このエラーは、認証トークンタイプがデータベースロールと一致しない場合に発生します。Aurora DSQL は、`admin` ロール用の `DbConnectAdmin` とカスタムデータベースロール用の `DbConnect` という 2 つのトークンタイプを使用します。
+ `Wrong user to action mapping. user: admin, action: DbConnect` が表示された場合は、`generate-db-connect-admin-auth-token` を `generate-db-connect-auth-token` の代わりに使用します。
+ `Wrong user to action mapping. user: {{myusername}}, action: DbConnectAdmin` が表示された場合は、`generate-db-connect-auth-token` を `generate-db-connect-admin-auth-token` の代わりに使用します。

## 認可エラーのトラブルシューティング
<a name="troubleshooting-authorization"></a>

**Role <role> not supported**

Aurora DSQL は `GRANT` オペレーションをサポートしていません。「[Aurora DSQL でサポートされている SQL コマンドのサブセット](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-sql-subsets.html)」を参照してください。

**Cannot establish trust with role <role>**

Aurora DSQL は `GRANT` オペレーションをサポートしていません。「[Aurora DSQL でサポートされている SQL コマンドのサブセット](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-sql-subsets.html)」を参照してください。

**Role <role> does not exist**

Aurora DSQL は、指定されたデータベースユーザーを見つけることができませんでした。「[Authorize custom database roles to connect to a cluster](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/using-database-and-iam-roles.html#using-database-and-iam-roles-custom-database-roles)」を参照してください。

**ERROR: permission denied to grant IAM trust with role <role>**

データベースロールへのアクセスを許可するには、管理者ロールを使用してクラスターに接続している必要があります。詳細については、「[Authorize database roles to use SQL in a database](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/using-database-and-iam-roles.html#using-database-and-iam-roles-custom-database-roles-sql)」を参照してください。

**ERROR: role <role> must have the LOGIN attribute**

作成するデータベースロールには、`LOGIN` アクセス許可が必要です。

このエラーに対処するには、`LOGIN` アクセス許可を持つ PostgreSQL ロールが作成されていることを確認してください。詳細については、「PostgreSQL のドキュメント」の「[CREATE ROLE](https://www.postgresql.org/docs/current/sql-createrole.html)」および「[ALTER ROLE](https://www.postgresql.org/docs/current/sql-alterrole.html)」を参照してください。

**ERROR: role <role> cannot be dropped because some objects depend on it**

`AWS IAM REVOKE` を使用して関係を取り消すまで、IAM 関係を持つデータベースロールを削除すると、Aurora DSQL はエラーを返します。詳細については、「[Revoking authorization](authentication-authorization.md#authentication-authorization-revoke)」を参照してください。

## SQL エラーのトラブルシューティング
<a name="troubleshooting-sql"></a>

**Error: Not supported**

Aurora DSQL は、すべての PostgreSQL ベースのダイアレクトをサポートしているわけではありません。サポートされている機能については、「[Supported PostgreSQL features in Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-sql-features.html)」を参照してください。

**Error: use `CREATE INDEX ASYNC` instead**

既存の行を持つテーブルにインデックスを作成するには、`CREATE INDEX ASYNC` コマンドを使用する必要があります。詳細については、「[Creating indexes asynchronously in Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-create-index-async.html)」を参照してください。

## 同時実行制御レスポンスのトラブルシューティング
<a name="troubleshooting-occ"></a>

**OC000 “ERROR: change conflicts with another transaction (OC000)”**

このトランザクションは、別の同時実行トランザクションと同じタプルを変更しようとしました。これは、変更されたタプルの競合を示します。詳細については、「[Aurora DSQL の同時実行制御](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-concurrency-control.html)」を参照してください。

**OC001 “ERROR: schema has been updated by another transaction (OC001)”**

セッションには、バージョン V1 のスキーマカタログのキャッシュされたコピーがあり、時間 T1 にロードされました。

別のトランザクションでは、時刻 T2 にカタログがバージョン V2 に更新されました。

時間 T3 で、セッションがクエリを実行すると、カタログが古いことが検出され、新しいカタログの変更へのリベースを試みます。状況によっては、リベースが成功せず、Aurora DSQL が `40001` OC001 レスポンスを返す場合があります。クエリプロセッサは、プロアクティブ更新を受信するのではなく、カタログの変更を事後的に検出するため、T2 と T3 の間の時間は数ミリ秒から数分の範囲になります。

同じセッションから再試行すると、Aurora DSQL はカタログキャッシュを更新します。再試行されたトランザクションはカタログ V2 を使用し、T2 以降にカタログの変更が発生していない限り、成功します。

## SSL/TLS 接続のトラブルシューティング
<a name="troubleshooting-ssl-tls"></a>

**SSL エラー: 証明書の検証に失敗しました**

このエラーは、クライアントがサーバーの証明書を検証できないことを示します。以下を確認してください。

1. Amazon ルート CA 1 証明書が正しくインストールされていること。この証明書を検証してインストールする方法については、「[Aurora DSQL 接続用の SSL/TLS 証明書の設定](configure-root-certificates.md)」を参照してください。

1. `PGSSLROOTCERT` 環境変数は、正しい証明書ファイルを指します。

1. 証明書ファイルには正しいアクセス許可があります。

**認識されない SSL エラーコード: 6**

このエラーは、バージョン 14 未満の PostgreSQL クライアントで発生します。この問題を解決するには、PostgreSQL クライアントをバージョン 17 にアップグレードします。

**SSL エラー: 未登録スキーム (Windows)**

これは、システム証明書を使用する場合の Windows psql クライアントの既知の問題です。「[Windows からの接続](configure-root-certificates.md#connect-windows)」の手順で説明されているダウンロードした証明書ファイルメソッドを使用します。