Python Boto3 'StreamingBody' 对象没有属性 'iter_lines'
Python Boto3 'StreamingBody' object has no attribute 'iter_lines'
我正在使用 Boto3 在 python 脚本中读取 Athena 查询的结果。
我有以下代码在 AWS Lambda 中运行良好。
def get_athena_results(s3_bucket, s3_output_path, execution_id):
s3client = boto3.client('s3')
key = s3_output_path + '/' + execution_id + '.csv'
obj = s3client.get_object(Bucket=s3_bucket, Key=key)
results_iterator = obj['Body'].iter_lines()
results = [r for r in results_iterator]
return results
当我 运行 在 AWS Glue Python Shell(不是 Spark 作业)中使用相同的函数时,我收到错误消息:
Unexpected error: <class 'AttributeError'>
'StreamingBody' object has no attribute 'iter_lines'
这对我来说没有意义,因为 botocore.response.StreamingBody
class 有一个 iter_lines
方法,它在 AWS Lambda 中运行良好。
https://botocore.amazonaws.com/v1/documentation/api/latest/reference/response.html
知道为什么这会在 AWS Glue 中发生吗 Python Shell?
谢谢
发生错误的原因是,在发布问题时,Glue 的 Boto3 是以前的版本,而 lambda 中可用的版本是 iter_lines()
不可用的版本。
我正在使用 Boto3 在 python 脚本中读取 Athena 查询的结果。
我有以下代码在 AWS Lambda 中运行良好。
def get_athena_results(s3_bucket, s3_output_path, execution_id):
s3client = boto3.client('s3')
key = s3_output_path + '/' + execution_id + '.csv'
obj = s3client.get_object(Bucket=s3_bucket, Key=key)
results_iterator = obj['Body'].iter_lines()
results = [r for r in results_iterator]
return results
当我 运行 在 AWS Glue Python Shell(不是 Spark 作业)中使用相同的函数时,我收到错误消息:
Unexpected error: <class 'AttributeError'>
'StreamingBody' object has no attribute 'iter_lines'
这对我来说没有意义,因为 botocore.response.StreamingBody
class 有一个 iter_lines
方法,它在 AWS Lambda 中运行良好。
https://botocore.amazonaws.com/v1/documentation/api/latest/reference/response.html
知道为什么这会在 AWS Glue 中发生吗 Python Shell?
谢谢
发生错误的原因是,在发布问题时,Glue 的 Boto3 是以前的版本,而 lambda 中可用的版本是 iter_lines()
不可用的版本。