【问题标题】:Can AWS SQS Service trigger API Gateway Proxy?AWS SQS 服务可以触发 API Gateway 代理吗?
【发布时间】:2021-04-11 14:02:39
【问题描述】:

我正在处理一个项目,我需要在 AWS SQS 服务收到消息时触发代理 API。我浏览了几篇文章,发现 API 到 SQS 是可能的,但没有找到与 SQS 触发 API 网关相关的任何内容。有人可以指导一下吗?

【问题讨论】:

  • 不,你不能直接这样做。您可以使用 Lambda 函数来完成此操作,但您到底想完成什么? API Gateway 代理到什么服务?
  • API 网关代理到 Lambda 函数!!实际上我有一个具有 REST 端点的 Spring Boot 应用程序......如果有任何消息到达 SQS,我们希望触发该端点
  • 为什么不让 Spring Boot 应用程序订阅 SQS 队列?
  • 我们绝对可以做到这一点,但我们将如何在本地测试呢?需要每次在 aws 上部署代码,然后需要从那里测试它吗?
  • 有一些方法可以在本地模拟 SQS 队列,例如 github.com/localstack/localstack github.com/vsouza/docker-SQS-local

标签: amazon-web-services aws-api-gateway amazon-sqs


【解决方案1】:

无法通过代理集成异步调用 Lambda 函数。您可以通过 Lambda 非代理集成来做到这一点。

设置后端 Lambda 函数的异步调用 - https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-integration-async.html

另一种解决方法是使用由 API Gateway API 同步调用的另一个函数,并让该函数使用 Lambda Invoke API 或 SDK 等效项异步调用属于 Spring boo 应用程序的函数。 https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html

例如,您希望函数 A 被异步调用。为此,您需要 API Gateway API 同步调用函数 B,并让函数 B 使用 Invoke API 异步调用函数 A。

Step Functions 也不能用作调用 REST API 的解决方法,因为这无济于事。 Lambda 函数仍由 API Gateway API 调用,因此您仍会遇到代理集成无法异步调用 Lambda 的限制。然后您决定 ECS 更适合您的情况,因为 Lambda 不适合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 2016-01-14
    • 2018-01-11
    • 2021-12-07
    • 2019-04-03
    • 2018-05-04
    • 2022-09-30
    • 2020-04-11
    相关资源
    最近更新 更多