Я создал таблицу в AWS Athena, в которой я могу выполнить любой запрос без ошибок:
select * from mytestdb.test
Таблица состоит из трех столбцов, customer_Id, product_Id, price
.
Я попытался создать лямбда-функцию, которая запускает тот же запрос для меня, используя boto3:
import time
import boto3
DATABASE = 'mytestdb'
TABLE = 'test'
output='s3://mybucketons3/'
COLUMN = 'Customer_Id'
def lambda_handler(event, context):
keyword = 'xyz12345'
query = "SELECT * FROM %s.%s where %s = '%s';" % (DATABASE, TABLE, COLUMN, keyword)
client = boto3.client('athena')
# Execution
response = client.start_query_execution(
QueryString=query,
QueryExecutionContext={
'Database': DATABASE
},
ResultConfiguration={
'OutputLocation': output,
}
)
return
Однако я получил следующую ошибку:
Response:
{
"errorMessage": "An error occurred (AccessDeniedException) when calling the StartQueryExecution operation: User: arn:aws:sts::076088932150:assumed-role/Test/QueryTest is not authorized to perform: athena:StartQueryExecution on resource: arn:aws:athena:us-west-2:076088932150:workgroup/primary",
"errorType": "ClientError",
Это похоже на проблему с доступом, однако я не уверен, почему, потому что у меня есть и лямбда, и athena db с одной учетной записью.