【问题标题】:Alexa sent multiple request to AWS LambdaAlexa 向 AWS Lambda 发送了多个请求
【发布时间】:2019-03-31 01:40:15
【问题描述】:

我正在构建将请求发送到我的网络服务器的 Alexa 技能, 然后 Web 服务器将执行一些处理并将文件上传到 Amazon S3。 在 Web 服务器进程期间,我让技能每 10 秒不断从 Amazon S3 获取文件,直到获取文件。并且响应基于文件内容。

但不幸的是,Web 服务器进程需要超过 1 分钟。这意味着技能必须停留超过 1 分钟才能使文件得到响应。

目前,我在代码中使用了带有异步等待的渐进式响应, 并且技能确实一直在等待S3上的文件。 但我发现该技能会在 50 秒后自动向 Lambda 发送第二个请求。这意味着对于相同的技能,我让两个 lambda 函数同时运行。

并且执行结果是:在渐进式响应做出的第一个响应之后,50秒后将听到属于第二个请求的渐进式响应做出的另一个响应。 直到最后什么都没发生。

我知道让技能等待这么久不好,但是如果技能需要等待这么长时间,我仍然想弄清楚可执行的方式。

有几点我想弄清楚。

  1. 有没有办法阻止技能送二 对 Lambda 的请求?
  2. 我还有其他方法可以尝试实现目标吗?

谢谢

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda alexa alexa-skills-kit


    【解决方案1】:

    最后,我发现 Lambda 的第二次调用不是来自 Alexa,而是来自 AWS Lambda 本身。参考以下文章

    https://cloudonaut.io/your-lambda-function-might-execute-twice-deal-with-it/

    所以你必须在你的 Lambda 代码中处理这种情况。可以使用的一件事是这两次调用的请求 id 是相同的。因此,您可以通过检查您的存储是否与您在第一次执行时存储的相同请求 ID 来判断这是否是第一次执行。

    另外我还发现,一旦Alexa Skill等待超过1分钟,它就会崩溃并通过说话返回错误(Amazon Echo测试)。与正常执行日志相比,AWS Lambda 日志没有什么不同。这意味着日志似乎很好,但实际上执行结果却不是。

    希望这可以帮助也在这个问题上苦苦挣扎的人。

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2019-10-06
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      相关资源
      最近更新 更多