Привет, я новичок в лямбде и питоне.
У меня есть сценарий использования, чтобы прочитать содержимое большого файла, скажем, более 1 ГБ, и просто записать его содержимое построчно.
Я сделал лямбда-функцию, как показано ниже:
import boto3
def lambda_handler(event, context):
"""Read file from s3 on trigger."""
s3 = boto3.resource('s3')
file_obj = event['Records'][0]
bucketname = str(file_obj['s3']['bucket']['name'])
filename = str(file_obj['s3']['object']['key'])
iterator = s3.Object(bucketname, filename).get()['Body'].iter_lines()
for line in iterator:
print(line)
return 'Lambda executed successfully.'
Но внутри журналов ничего не печатается.
Я думаю, s3.Object(bucketname, filename).get()['Body']
пытается загрузить весь файл в память. Это мое понимание верно?
потому что это нормально работает для маленьких файлов.
Если да, то как мне открыть файл в виде потока, не загружая его полностью в память.