Telethon 的 download_media 方法在 AWS Lambda 中不起作用

问题描述 投票:0回答:1

我尝试在我的 lambda_handler 中使用 Telethon 从 Telegram 频道下载消息的图像文件:

with TelegramClient(StringSession(string_session), api_id=int(telegram_id), api_hash=telegram_hash) as client:
    count = 1
    for message in client.iter_messages(name, limit=limit, reverse=False):
        news.append(message.text)
                
        file_name = f"{str(count)}"
        message.download_media(file=f"/tmp/{file_name}")
                
        path = f"/tmp/{file_name}"
        key = None
                
        s3.upload_file(Filename=path, Bucket='telebotmedia', Key=file_name)
        count += 1

但我收到此错误:

[Errno 30] Read-only file system: 'photo_2024-01-16_17-34-40.jpg'

我在我的函数角色中使用 AWSLambdaBasicExecutionRolePowerUserAccess 策略。但我无法在

tmp
目录中下载它。

python aws-lambda telegram telegram-bot telethon
1个回答
0
投票

Telethon 中有一个选项可以仅下载到内存,然后使用生成的字节串,例如:

blob = await message.download_media(bytes)

然后尝试在后续调用 s3.upload_file 中使用 blob。我能够在 aws lambda 上使用相同的方法,并在 client.send_file 调用中使用 blob - 但是 s3 可能需要不同的参数类型。

© www.soinside.com 2019 - 2024. All rights reserved.