Snowflakeで Snowflake Open Catalog を使用して Apache Iceberg™ テーブルを使用する際のトラブルシューティング¶
以下のシナリオは、Snowflakeで Snowflake Open Catalog を使用して Apache Iceberg™ テーブルを使用する際に発生する可能性のある問題のトラブルシューティングに役立ちます。
オープンカタログのカタログ統合が作成できない¶
このセクションでは、オープンカタログのカタログ統合を作成する際のトラブルシューティング方法について説明します。
トラブルシューティングを行うには、カタログ統合の作成に失敗したときに SQL の出力に表示されたエラーメッセージを特定します。
エラー |
SQL Execution Error: Cannot create catalog integration <catalog_integration_name> due to error: Unable to process: Unable to find
warehouse <catalog_name>. Check the REST configuration and ensure the warehouse name '<catalog_name>' matches the Polaris catalog
name.
|
---|---|
原因 |
カタログ統合の |
解決策 |
重要
|
エラー |
SQL Execution Error: User provided authentication credentials are invalid for catalog integration <catalog_integration_name> due
to error: Malformed request: unauthorized_client: The client is not authorized.
|
---|---|
原因 |
カタログ統合で指定した OAuth トークンが有効ではありません。 |
解決策 |
カタログ統合で |
Snowflake管理テーブルが作成できない¶
このセクションでは、Snowflake管理テーブルを作成する際のトラブルシューティング方法について説明します。
トラブルシューティングを行うには、テーブルの作成に失敗したときに SQL の出力に表示されたエラーメッセージを確認してください。
エラー |
SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The Snowflake service
connection associated with the Polaris catalog integration does not have the required privileges to send notifications. The
minimum required privileges are TABLE_CREATE, TABLE_WRITE_PROPERTIES, TABLE_DROP, NAMESPACE_CREATE, and NAMESPACE_DROP.
|
---|---|
原因 |
接続先の外部カタログのカタログロールには、オープンカタログに通知を送信するのに必要な権限がありません。 |
解決策 |
外部カタログのカタログロールに以下のすべての権限を付与して、カタログロールを更新します。
カタログロールをどこで更新するかは、そのロールが持つ付与がカタログレベル、名前空間レベル、またはテーブルレベルのどれに適用されるかに依存します。カタログロールに該当する手順を参照してください。 |
エラー |
SQL Execution Error: Failed to access the REST endpoint of catalog integration <catalog_integration_name> with error: Unable to
process: Failed to get subscoped credentials: Error assuming AWS_ROLE:
User: <IAM_user_arn> is not authorized to perform: sts:AssumeRole on resource: <S3_role_arn>. Check the accessibility of the REST
catalog URI or warehouse.
|
---|---|
原因 |
外部カタログの AWS IAM ユーザーは、S3へのアクセス権限を持つロールを引き受けることができません。 |
解決策 |
AWS のポリシードキュメントを修正して、オープンカタログアカウントの IAM ユーザーに、S3バケットへのアクセス権限を持つロールを引き受ける権限を許可します。ポリシードキュメントを変更するには、 AWS の IAM ロールを更新する必要があります。詳細については、 Snowflake Open Catalogアカウントの AWS IAM ユーザーを取得 を参照してから、 バケットオブジェクトへのアクセス許可を IAM ユーザーに付与 を参照してください。 ポリシードキュメントには、オープンカタログの外部ボリュームと外部カタログの両方について、 IAM ユーザー ARN と外部 ID を含める必要があることに注意してください。以下のポリシードキュメントの例では、以下の値に注意してください。
|
エラー |
SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The associated Polaris
catalog cannot be of type INTERNAL.
|
---|---|
原因 |
Snowflakeで管理されたテーブルをオープンカタログの内部カタログに同期しようとしています。Snowflake管理テーブルを外部カタログに同期できるのは、オープンカタログのみです。 |
解決策 |
既存の内部カタログを外部カタログに更新することはできないので、新しい外部カタログを作成する必要があります。
|
エラー |
SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: SQL Execution Error:
Resource on the REST endpoint of catalog integration CATINT is forbidden due to error: Forbidden: Invalid locations '[<path to metadata file>]'
for identifier '<identifier>': <path to metadata file> is not in the list of allowed locations: [<list of allowed locations>].
|
---|---|
原因 |
作成したいテーブルのメタデータファイルへのパスが、外部クラウドプロバイダーの許可された場所のリストに含まれていません。その結果、オープンカタログはそのテーブルのメタデータファイルにアクセスできません。 |
解決策 |
メタデータファイルの場所が、サービス管理者がオープンカタログで作成したカタログのデフォルトの基本場所のファイルパスの下にあるか、または該当する場合は追加の許可された場所のいずれかにあることを確認します。許可された場所のリストについては、オープンカタログでカタログを選択し、 場所 フィールドを参照してください。 |
CATALOG_SYNC パラメーターを指定した際、Icebergテーブルを変更することができない¶
このセクションでは、 CATALOG_SYNC パラメーターを変更した場合のトラブルシューティング方法について説明します。
トラブルシューティングを行うには、テーブルの変更に失敗したときに SQL の出力に表示されたエラーメッセージを確認してください。
エラー |
SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The Snowflake service
connection associated with the Polaris catalog integration does not have the required privileges to send notifications. The minimum
required privileges are TABLE_CREATE, TABLE_WRITE_PROPERTIES, TABLE_DROP, NAMESPACE_CREATE, and NAMESPACE_DROP.
|
---|---|
原因 |
接続先の外部カタログのカタログロールには、オープンカタログに通知を送信するのに必要な権限がありません。 |
解決策 |
外部カタログのカタログ・ロールに以下の権限をすべて付与します。
カタログロールをどこで更新するかは、そのロールの付与がカタログレベル、名前空間レベル、またはテーブルレベルのどれに適用されるかに依存します。カタログロールに該当する手順を参照してください。 |
エラー |
SQL Execution Error: Failed to access the REST endpoint of catalog integration <catalog_integration_name> with error: Unable to
process: Failed to get subscoped credentials: Error assuming AWS_ROLE:
User: <IAM_user_arn> is not authorized to perform: sts:AssumeRole on resource: <S3_role_arn>. Check the accessibility of the REST
catalog URI or warehouse.
|
---|---|
原因 |
外部カタログの AWS IAM ユーザーには、S3バケットオブジェクトにアクセスする権限がありません。 |
解決策 |
AWS のポリシードキュメントを変更して、オープンカタログアカウントの IAM ユーザーがS3バケットのオブジェクトにアクセスできるようにします。ポリシードキュメントを変更するには、 AWS の IAM ロールを更新する必要があります。詳細については、 Polaris Open Catalogアカウントの AWS IAM ユーザーを取得 を参照してから、 バケットオブジェクトへのアクセス許可を IAM ユーザーに付与 を参照してください。 ポリシードキュメントには、オープンカタログの外部ボリュームと外部カタログの両方について、 IAM ユーザー ARN と外部 ID を含める必要があることに注意してください。以下のポリシードキュメントの例では、以下の値に注意してください。
|
エラー |
SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The associated Polaris
catalog cannot be of type INTERNAL.
|
---|---|
原因 |
Snowflakeで管理されているIcebergテーブルをオープンカタログの内部カタログのカタログ統合に同期しようとしています。Snowflakeで管理されているIcebergテーブルを外部カタログに同期できるのは、オープンカタログのみです。 |
解決策 |
既存の内部カタログを外部カタログに更新することはできないので、新しい外部カタログを作成する必要があります。
|
エラー |
SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: SQL Execution Error:
Resource on the REST endpoint of catalog integration CATINT is forbidden due to error: Forbidden: Invalid locations '[<path to metadata file>]'
for identifier '<identifier>': <path to metadata file> is not in the list of allowed locations: [<list of allowed locations>].
|
---|---|
原因 |
作成したいテーブルのメタデータファイルへのパスが、外部クラウドプロバイダーの許可された場所のリストに含まれていません。その結果、オープンカタログはそのテーブルのメタデータファイルにアクセスできません。 |
解決策 |
メタデータファイルの場所が、サービス管理者がオープンカタログで作成したカタログのデフォルトの基本場所のファイルパスの下にあるか、または該当する場合は追加の許可された場所のいずれかにあることを確認します。許可された場所のリストについては、オープンカタログでカタログを選択し、 Locations フィールドを参照してください。 |