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() 不可用的版本。