「Lake Formation の許可が不十分」または「COLUMN_NOT_FOUND」エラーが原因で Amazon Athena クエリが失敗しました。
解決策
表示されたエラーメッセージについては、次のトラブルシューティング手順に従ってください。
エラー「Amazon\ _S3\ _location の Lake Formation 許可が不十分です」
このエラーは、AWS Identity and Access Management (IAM) のユーザーまたはロールに次の条件が当てはまる場合に発生します。
- IAM ユーザーまたはロールに、Lake Formation からの適切な Amazon Simple Storage Service (Amazon S3) データロケーション許可がない。
- IAM ユーザーまたはロールは、AWS Lake Formation に登録された Amazon S3 バケットでデータカタログリソースを作成または変更しようとしている。
このエラーを解決するには、データベースまたはテーブルの作成に使用する IAM ユーザーまたはロールに、データロケーション許可を付与する必要があります。Lake Formation で Athena を使用する場合は、必ず Lake Formation の IAM ユーザーまたはロールに必要な S3 許可を付与してください。また、IAM ユーザーまたはロールに必要なデータアクセス許可を必ず付与してください。
データアクセス許可により、IAM ユーザーまたはロールは Amazon S3 ロケーションに対してデータの読み書きを行うことができます。ただし、Lake Formation のデータロケーション許可により、IAM ユーザーまたはロールはデータカタログリソースを作成および変更できます。データカタログリソースは、登録されている Amazon S3 ロケーションを指します。
データレイクのロケーションが Lake Formation に登録されていることを確認する
- AWS Lake Formation コンソールを開きます。
- ナビゲーションペインの管理で、データレイクのロケーションを選択します。
- データレイクのロケーションで、データカタログリソースが指す S3 パスが Lake Formation に登録されていることを確認します。
AWS Lake Formation コンソールからデータのロケーションへのアクセス許可を付与する
- ナビゲーションペインで、データのロケーションを選択します。
- 付与を選択します。
- 許可の付与ダイアログボックスで、マイアカウントを選択します。
- IAM ユーザーとロールの場合は、アクセス許可を付与する IAM ユーザーまたはロールを選択します。
- ストレージロケーションで、エラーが発生している S3 パスを選択します。
- 付与を選択します。
**注:**S3 パスが同じアカウント内にある場合にのみ、以下の手順に従ってください。S3 パスが別のアカウントにある場合は、まず、クロスアカウントアクセスの前提条件がすべて満たされていることを確認してください。次に、データのロケーションへのアクセス許可の付与 (外部アカウント) に記載されている手順に従います。
詳細については、データのロケーションへのアクセス許可の付与 (同じアカウント) を参照してください。
エラー「database_name の Lake Formation 許可が不十分です」
以下の手順に従って、IAM ユーザーまたはロールにデータベースへのアクセス許可を付与します。
- Lake Formation コンソールを開きます。
- ナビゲーションペインでデータベースを選択します。
- データベース名を選択し、アクションを選択し、付与を選択します。
- プリンシパルでIAM ユーザーとロールを選択します。
- IAM ユーザーとロールの場合は、データベースへのアクセス許可を付与する IAM ユーザーまたはロールを選択します。
- LF タグまたはカタログリソースで、名前付きデータカタログリソースを選択します。
- データベース許可で**説明を選択します。
注:**ユースケースに基づいて追加の許可を追加することもできます。
- 付与を選択します。
エラー「Lake Formation 許可が不十分です: atabase_name にテーブルを作成する必要があります」
以下の手順に従って、データベースに IAM 許可を付与します。
- Lake Formation コンソールを開きます。
- ナビゲーションペインの権限で、データレイクへのアクセス許可を選択します。
- 付与を選択します。
- プリンシパルでIAM ユーザーとロールを選択します。
- IAM ユーザーとロールの場合は、Athena に使用する IAM ユーザーまたはロールを選択します。
- LF タグまたはカタログリソースで、名前付きデータカタログリソースを選択します。
- データベースでは、IAM ユーザーまたはロールが書き込むデータベースを選択します。
- データベース権限で、ユースケースに基づいて テーブルを作成または説明を選択します。
注: IAM ユーザーまたはロールが、テーブルを作成するには、データベースに対する説明とテーブルを作成するの両方のアクセス許可が必要です。
- 付与を選択します。
エラー「COLUMN_NOT_FOUND: line 1:8: SELECT * not allowed from relation that has no columns」
次の手順に従って、データベースの DESCRIBE のアクセス許可を確認します。次に、テーブルの DESCRIBE と SELECT のアクセス許可を確認します。
**注:**Lake Formation 管理者は Athena コンソールでデータベースとテーブルを表示できますが、データをクエリするには必要な権限が必要です。
名前付きリソースメソッドを使用してデータベース権限を付与する
- Lake Formation コンソールを開きます。
- ナビゲーションペインの権限で、データレイクへのアクセス許可を選択します。
- 付与を選択します。
- プリンシパルでIAM ユーザーとロールを選択します。
- IAM ユーザーとロールの場合は、Athena で使用したい IAM ユーザーまたはロールを選択します。
- LF タグまたはカタログリソースで、名前付きデータカタログリソースを選択します。
- データベース で、テーブルのデータベースを選択します。
- データベース許可で説明を選択します。
- 付与を選択します。
詳細については、名前付きリソースメソッドを使用したデータベース許可の付与を参照してください。
**名前付きリソースメソッドを使用してテーブル許可を付与する **
- Lake Formation コンソールを開きます。
- ナビゲーションペインの権限で、データレイクへのアクセス許可を選択します。
- 付与を選択します。
- プリンシパルでIAM ユーザーとロールを選択します。
- IAM ユーザーとロールの場合は、Athena で使用したい IAM ユーザーまたはロールを選択します。
- LF タグまたはカタログリソースで、名前付きデータカタログリソースを選択します。
- データベースで、データベースを選択します。
- テーブル で、1 つまたは複数のテーブル、またはすべてのテーブルを選択します。
- テーブル許可で選択または説明を選択して、SEECTクエリを実行するか、ユースケースに適したテーブル許可を選択します。
- 付与を選択します。
注: リソースリンクを使用してテーブルに対する許可を付与することもできます。これを行うには、テーブルページでリソースリンクを選択し、アクションを選択してから、ターゲットに付与を選択します。詳細については、How resource links work in Lake Formationを参照してください。
関連情報
データロケーション許可の付与