2017-07-25 13 views
0

アテナでクエリを実行しようとしていますが、失敗します。アテーナのクエリがboto3で失敗する(S3の位置が無効)

コード:

client.start_query_execution(QueryString="CREATE DATABASE IF NOT EXISTS db;", 
          QueryExecutionContext={'Database': 'db'}, 
          ResultConfiguration={ 
            'OutputLocation': "s3://my-bucket/", 
            'EncryptionConfiguration': { 
              'EncryptionOption': 'SSE-S3' 
              } 
            }) 

しかし、それは次の例外発生させます:私はアテナコンソールに行く場合は、[設定]に移動し、(例えば)同じS3の場所を入力し

botocore.errorfactory.InvalidRequestException: An error occurred (InvalidRequestException) 
when calling the StartQueryExecution operation: The S3 location provided to save your 
query results is invalid. Please check your S3 location is correct and is in the same 
region and try again. If you continue to see the issue, contact customer support 
for further assistance. 

を:

athena settings

クエリが正常に実行します。

私のコードで何が問題になっていますか?私はいくつかの他のサービス(例えばS3)のAPIをうまく使ってきましたが、この中でいくつかの間違ったパラメータを渡していると思います。ありがとう。

Python:3.6.1。 Boto3:1.4.4

答えて

1

クエリの結果を保存するために提供されたS3の場所が無効です。 S3の場所が正確で、同じ地域にあることを確認してくださいしてもう一度お試しください。

コンソールを使用すると動作するため、バケツがBoto3で使用している領域と異なる領域にある可能性があります。 Boto3クライアントを構築するときは、正しい領域(コンソールで作業していた領域)を使用してください。既定では、Boto3は、資格情報ファイルで構成された領域を使用します。またboto3.client('athena', region_name = '<region>')

を試してみてください

1

は、同じ問題に遭遇して、クライアントでS3バケットを指定する必要がありました。

0

バケットに「athena-」接頭辞を付けて動作させる必要がありました。たとえば、の代わりに:

"S3://私のバケット/"

試してみてください。

"S3://アテナ - 私のバケット/"

関連する問題