【问题标题】:Aws lambda + api gateway: only trigger lambda by button clickAws lambda + api gateway:仅通过按钮单击触发 lambda
【发布时间】:2019-12-22 03:07:40
【问题描述】:

我有一个 aws lambda 函数,它运行一些 python 代码(它使用一些额外的函数调用外部 api)。我附加了一个触发器,一个 api 网关,如果我转到 url,则 lambda 函数运行正常。

但是,我希望 lambda 函数仅在他们单击 api-url 的“网站”上某处的按钮时运行。换个说法,我希望 api-url 页面有一个按钮,单击该按钮会执行 lambda 函数。 我认为这应该很容易,但我不知道怎么做。由于信息过多,我似乎找不到合适的视频,请记录如何操作的示例。

  • 有可能吗? (单击按钮运行 lambda 函数)。如果是这样,是否有一些很好的示例文档?

我尝试通过在“api-gateway 资源”页面上的“方法执行”上将映射模板更改为 text/html 而不是 json 在 api-url 页面上添加一个按钮。 (有点像https://blog.it-playground.eu/display-html-page-using-only-api-gateway/)但是我不知道如何在按钮的单击上运行 lambda 函数。 ==> 这是正确的开始吗?

(因为它不是真正的编码问题,我无法提供任何代码)。

另外,这个问题是否简单到表明我对基础知识的理解不够(并且应该随后再复习一遍)?

【问题讨论】:

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


    【解决方案1】:

    这当然是可能的。 API Gateway 公开 REST API。您需要做的就是在 API Gateway 中创建一些资源和方法,例如

    GET /posts

    将您的 lambda 函数附加到它,并使用来自您的前端的一些 ajax 请求(通过fetchaxios,...)点击该按钮时将执行的 API 端点。比如:

    button.addEventListener("click", () => {
        fetch("https://my-api-gateway-url/posts").then() ...
    }
    

    您可以在.then 部分处理响应数据,但不要忘记这是异步编码,因此您需要这样处理。

    【讨论】:

    • 我应该有 2 个 api 网关吗?其他人可以连接到的第一个,第二个调用 lambda 函数和我放入“fetch”的女巫?
    • 我不太明白你所说的which other people can connect to 是什么意思,但这并不重要。不,您可以在一个 API 网关下创建所有端点。您总是只使用一个 HTTP 请求访问一个端点,并且您是否需要一个或两个 API 网关与各个端点的功能无关,除非您需要分隔域,例如 www.foo.comwww.bar.com。如果您不需要分隔域,那么您可以根据一些 URL 路径前缀轻松地分隔您的功能,例如用于 JSON 数据 API 端点的/api
    • 与'其他人可以连接';在某些情况下,我会给一些业务人员一个链接,并且只有当他们单击按钮时才会启动一个流程,例如刷新仪表板的底层数据。
    • I would give some business people a link - 是的,这是 API Gateway 中的一个特定端点,而不是 API Gateway 本身(无论这意味着什么)。您只需在 JS 代码中使用另一个链接(端点)来获取您想要的任何内容。顺便说一句,您究竟如何为这些人提供您的网站?您是否打算从 API Gateway 提供服务?因为这首先不是最好的想法 - API Gateway 的主要目的是服务于 REST API,而不是静态网站。
    • 我认为很明显我没有掌握足够的基础知识,应该再复习一遍。关于我应该如何为网站提供服务,它不会超过一个网页,但是(单击按钮时可能带有一些日志信息)
    猜你喜欢
    • 2018-05-04
    • 2020-03-17
    • 2017-04-13
    • 1970-01-01
    • 2016-09-14
    • 2021-01-25
    • 1970-01-01
    • 2017-06-26
    • 2018-11-09
    相关资源
    最近更新 更多