我需要启动一个长期运行的AWS作业(几分钟),它将把它的输出写入S3。它将用Java编写(实际上是Kotlin,但这不重要)。
我正在研究Amazon网关作为这个和其他AWS作业和一个iOS移动应用程序之间的接口。
是否有可能异步调用这样长期运行的Lambda进程,要么直接从API网关调用,要么从另一个Lambda函数异步调用?
发布于 2016-03-08 18:07:15
我认为您不能通过API网关异步调用Lambda,但是您可以通过API从另一个lambda调用lambda。在Java中,您可以将AWSLambdaClient.invoke()与InvocationType of Event结合使用。
在长时间运行的作业中要小心使用Lambda : Lambda调用有一个严格的300秒限制。我建议在持久资源(如EC2 )中为长期运行的后端进程提供Lambda调用代码。
发布于 2016-03-08 18:54:28
API网关支持这种情况,但不能从控制台设置集成。为此,您必须使用CLI工具或SDK。
这里有个提示可以带你去那里。
aws apigateway put-integration \
--rest-api-id <value> \
--resource-id <value> \
--http-method POST \
--type AWS \
--integration-http-method POST \
--uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:Hello_World/invocations?Qualifier=$LATEST \
--credentials arn:aws:iam::123456789012:role/lambda \
--request-parameters integration.request.header.X-Amz-Invocation-Type='Event'https://stackoverflow.com/questions/35873195
复制相似问题