是否可以通过在python中调用aws lambda函数来将文件读写到本地存储系统

时间:2019-04-27 15:09:49

标签: python aws-lambda

我有一个写入音频文件的python函数。我想在触发AWS Lambda后立即将文件发送到本地系统。我不想为此使用S3 Bucket。 我已经检查了将文件存储在AWS的/ tmp /文件夹中的方法。但是我不知道如何将文件发送到本地文件系统。 如果还有其他方法,请告诉我。或者如何将音频文件从lambda / tmp /文件夹获取到我的本地计算机。

我已成功写入/ tmp /文件夹,效果很好。

with('/tmp/filename.wav', 'wb') as f:
     f.write(content)

一旦我从API网关触发了lambda函数,我想在本地计算机上添加“ wav”文件。

2 个答案:

答案 0 :(得分:0)

一种可能性是让您的lambda使用Dropbox api将输出写入Dropbox。 Dropbox非常擅长将文件同步到本地计算机。

您需要注意按键-我建议为此AWS Secrets Manager,您可以get to easily from Python

答案 1 :(得分:0)

您说过要在Lambda调用后立即将文件保存到本地,但是我认为您的意思是,作为Lambda的儿子,无论您要做什么,您都希望将结果文件保存到您的本地文件中本地计算机。

如果我对上述说法是正确的,那么在Lambda和API网关的限制下,您可以将音频文件作为函数的结果返回;在您的函数中,只需让它在响应中返回结果文件即可。

根据AWS文档,API网关的最大有效负载大小为10MB,并且API网关的超时时间为30秒(see here)。就是说,Lambda的最大调用有效负载为6MB(see here)。这两方面的结合意味着Lambda的响应必须小于6MB,并且必须在30秒内完成。如果响应超过6MB或花费30秒以上,则您将收到错误消息。

尽管您提到不想使用S3,但更好的模式(尤其是如果文件大小可能大于6MB)是使用S3存储文件,并让Lambda / API网关返回“ 302 Found”重定向到文件在S3中的位置;您的浏览器仍会自动将其下载到本地计算机,但您不必担心API网关超时或Lambda响应限制。