Error when Accessing AWS Athena in Python: “An error occurred (InvalidRequestException) when calling the StartQueryExecution operation: Unable to verify/create output bucket”

Kun-Hung Tsai
3 min readOct 22, 2019

--

今天在測試透過 Python 呼叫 AWS Athena 下 query 時,遇到了這個錯誤:

“An error occurred (InvalidRequestException) when calling the StartQueryExecution operation: Unable to verify/create output bucket”

原先以為是跨帳號權限存取的問題(我使用的 Athena 資料來源來自帳號 A,而要寫入的 S3 bucket 位於帳號 B)。

我原先的權限參考了這篇設定:

再三確認了帳號 B 的 S3 bucket policy,及帳號 A 中 IAM 的 policy,並直接使用提供給 Python 程式的 IAM 在 AWS CLI 上測試,發現可以成功存取到該 S3 bucket。

正當百思不得其解時,我發現這篇 stack overflow 的問答:

才發現原來我的目標 bucket 和我的資料來源位於不同的 region(我在 Python 設定中使用資料來源的 region),以致於無法存取到帳號 B 的 S3 bucket。與同事討論後決定將該 bucket 重新建立在同一個 region 底下,便解決問題了。

若無法直接重建 bucket,AWS 也有提供可行的解法,使用 bucket replica 來處理,只是看起來會多上不少步驟 。

放在這裡給需要的人參考:

--

--