Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 如何获取从主函数调用的另一个函数返回的输出?_Amazon Web Services_Aws Lambda - Fatal编程技术网

Amazon web services 如何获取从主函数调用的另一个函数返回的输出?

Amazon web services 如何获取从主函数调用的另一个函数返回的输出?,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,这将有点难以解释,但我们开始吧 我有一个AWS Lambda函数,它使用youtube dl从youtube下载视频,然后上传到S3并返回S3链接供下载。我们将其命名为function1,以供参考 我将它连接到API网关,然后发现AWS中的API网关超时29秒。这意味着,如果我使用YouTube URL从API网关触发Lambda函数进行下载,它将等待29秒,如果没有得到任何输出,它将超时,并用它终止函数 当然,下载时间通常超过29秒,这个限制很烦人 我想出了一个解决办法,创建了另一个Lambd

这将有点难以解释,但我们开始吧

我有一个AWS Lambda函数,它使用
youtube dl
从youtube下载视频,然后上传到S3并返回S3链接供下载。我们将其命名为
function1
,以供参考

我将它连接到API网关,然后发现AWS中的API网关超时29秒。这意味着,如果我使用YouTube URL从API网关触发Lambda函数进行下载,它将等待29秒,如果没有得到任何输出,它将超时,并用它终止函数

当然,下载时间通常超过29秒,这个限制很烦人

我想出了一个解决办法,创建了另一个Lambda函数(
function2
)。我将它链接到API网关,这样,我就可以使用YouTube URL向
function2
发出http请求,然后
function2
将调用
function1
将URL传递给它

然而,我现在遇到了一个问题。如何获取
function1
返回的S3链接

发生的情况是,我使用URL向
function2
发出请求,然后它将其传递给
function1
function2
将返回一个字符串,表示它正在下载。但是我真的不知道如何从下载视频然后上传到S3的函数中获取S3链接

我想把S3链接放在S3存储桶中,但是客户端怎么知道函数把链接放在了那里呢?我能想到的唯一方法是让客户反复请求,看看链接是否存在,老实说,我真的不想做不必要的请求

哦,如果调用
function2
时让它等待
function1
的响应,则无法达到此解决方法的目的


顺便说一句,如果有什么不同的话,我正在使用Python。

Lambda和API网关并不是真正为长时间运行的进程创建的,就像您正在尝试做的那样。这是一个为作业使用正确工具的场景。您最好使用EC2实例,并在EC2实例上使用API来处理视频下载、上传到S3以及返回S3对象的URL