我尝试在我的 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'
我在我的函数角色中使用 AWSLambdaBasicExecutionRole 和 PowerUserAccess 策略。但我无法在
tmp
目录中下载它。
Telethon 中有一个选项可以仅下载到内存,然后使用生成的字节串,例如:
blob = await message.download_media(bytes)
然后尝试在后续调用 s3.upload_file 中使用 blob。我能够在 aws lambda 上使用相同的方法,并在 client.send_file 调用中使用 blob - 但是 s3 可能需要不同的参数类型。