Athena のクエリ結果を S3 バケットに保存しようとするときに表示される、「Invalid S3 location」(S3 ロケーションが無効です) エラーのトラブルシューティング方法を教えてください。

最終更新日: 2021 年 5 月 25 日

Amazon Athena のクエリで、指定された Amazon Simple Storage Service (Amazon S3) バケットに結果を保存できません。

簡単な説明

Amazon Athena は、Amazon S3 で指定できるクエリ結果のロケーションに各クエリの結果とメタデータ情報を自動的に保存します。ただし、次の条件の 1 つ以上が該当する場合、「Invalid S3 location」 (S3 ロケーションが無効です) または「Not a valid S3 location」 (有効な S3 ロケーションではありません) というエラーが表示されます。

  • Amazon S3 クエリ結果のロケーションを指定していない。
  • 指定した S3 クエリ結果のロケーションが正確でない。
  • 指定した S3 クエリ結果のロケーションが異なるリージョンにある。
  • AWS Identity and Access Management (IAM) ユーザーに、クエリ結果のロケーションを設定または表示するために必要なアクセス許可がない。

解決方法

これらのエラーを解決するには、次の解決方法のうち 1 つ以上を選択してください。

クエリ結果のロケーションを指定します

クエリを実行する前に、Amazon S3 のクエリ結果のロケーションを指定しておく必要があります。または、バケットを指定し、その設定がクライアント設定よりも優先されるワークグループを使用する必要があります。次の手順を実行して、S3 でクエリ結果の場所を指定したことを確認します。

  1. Athena コンソールを開きます。
  2. ナビゲーションバーで [設定] を選択します。
  3. クエリ結果の場所がクエリ結果バケットを指していることを確認します。

クエリ結果の場所が指定されていない場合は、Athena コンソールを使用して更新できます。ワークグループ構成で結果の場所を指定することもできます。詳細については、Specifying a query result location using a workgroup を参照してください。

S3 パスが正確であることを確認します

Athena コンソールで指定されたクエリ結果の場所が正しい S3 パスを指していることを確認します。また、S3 パスの末尾にスラッシュ (/) を含めるようにしてください (例: s3://doc_example_bucket/doc_example_folder/)。

S3 の場所が同じリージョンにあることを確認します

クエリ結果を保存するために指定した S3 の場所が、クエリを実行するリージョンと同じリージョンにあることを確認します。

IAM ユーザーがクエリ結果ファイルにアクセスするために十分なアクセス許可を持っていることを確認します。

IAM ユーザーが、クエリ出力ファイルにアクセスしてクエリを表示するために必要なアクセス許可を持っていることを確認します。IAM ユーザー/ロールには、以下のアクションに対するアクセス許可が必要です。

注: クエリ結果の場所の GetObject アクションへのアクセス許可を持つ IAM プリンシパルは、S3 からクエリ結果を取得できます。これは、IAM プリンシパルに対して GetQueryResults アクションへのアクセス許可が拒否された場合でも当てはまります。ユーザーまたはロールのアクセスを制限するには、Athena クエリ結果の場所への S3 アクセス許可が拒否されていることを確認します。