Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 当/tmp被重用时,如何扩展Lambda?_Amazon Web Services_Scalability_Aws Lambda - Fatal编程技术网

Amazon web services 当/tmp被重用时,如何扩展Lambda?

Amazon web services 当/tmp被重用时,如何扩展Lambda?,amazon-web-services,scalability,aws-lambda,Amazon Web Services,Scalability,Aws Lambda,我有一个lambda函数,它从DynamoDB读取数据,并在/tmp中创建一个大文件(~500M),最终上传到s3。上传后,lambda将从/tmp中清除文件(因为实例很可能被重用) 即使忽略延迟,执行此函数也需要大约1分钟 在这个场景中,当我再次尝试调用函数时,在

我有一个lambda函数,它从DynamoDB读取数据,并在/tmp中创建一个大文件(~500M),最终上传到s3。上传后,lambda将从/tmp中清除文件(因为实例很可能被重用)

即使忽略延迟,执行此函数也需要大约1分钟

在这个场景中,当我再次尝试调用函数时,在<1m中,我无法控制是否有足够的空间写入/tmp。我的功能失败了

问题: 1.在这种情况下,已知的解决办法是什么? (可能在/tmp中提供更多空间,或确保为每次新执行提供干净的/tmp) 2.Lambda中关于文件创建和管理的最佳实践是什么? 3.我可以将另一个EBS或其他存储连接到Lambda以执行吗?
4.有没有一种方法可以像文件系统一样访问s3,这样我的函数就可以直接写入s3而不用/tmp?

我怀疑两个同时运行的AWS Lambda实例是否会共享/tmp或任何其他本地资源,因为它们必须完全隔离地执行。你的错误应该有不同的解释。如果您的意思是,AWS Lambda的后续调用重用同一实例,那么您只需自己清除/tmp即可


一般来说,如果您的Lambda是一个资源占用者,那么您最好在ECS容器工作器中完成这项工作,并使用Lambda启动ECS任务,如前所述。

您可能会遇到AWS Lambda的问题


您可以通过将文件存储在内存中来提高性能并解决问题,因为Lambda函数的内存限制可以高达。

我不明白您为什么需要文件(或文件系统),特别是考虑到您使用的是FaaS/Amazon Lambda。你能重写你的代码,让DynamoDB输出流到S3而不写入磁盘吗?需要做很多处理。不仅仅是从dynamo到S3的简单转储,那么你可能只是达到了极限(512M)?它可能有助于在内存中工作,或者在其间添加第三个临时存储服务。@usama不是这样,最好的方法是在使用后进行清理,否则可能只是在使用前进行清理。我已经看到该功能被大量重用。并且遇到了重用实例的问题。这意味着tmp文件夹此时不可用。答案是正确的。实例经常被重用,但不能并发使用。当函数完成时清理temp目录——或者在函数启动时删除所有存在的文件(当然是在调用处理程序之后,而不是在初始化期间)——这应该不是问题+1这只是对所列四个问题的部分回答,我实际上对未回答的问题的答案很感兴趣。@usama
rm-rf/tmp/*
@Leon你确定吗?AWS声明(在/tmp dir中)“当执行上下文被冻结时,目录内容仍然保留,提供可用于多次调用的临时缓存”我所面临的问题在技术上不是tmp大小的限制,因为容器正在被重用,当我得到它时,tmp并不是真的空的,它有一些以前处决的东西。