在API网关中部署API时触发Lambda

问题描述 投票:0回答:1

当我在API-网关控制台中单击部署以在舞台上部署API时,我试图触发Lambda函数。

我已经尝试过使用cloudwatch规则,但是没有用于API-网关部署的事件模式。

我的问题是:

当我单击API-Gateway控制台上的deploy按钮时是否可以触发lambda函数?

如果是,我该怎么做?

谢谢

amazon-web-services aws-lambda aws-api-gateway amazon-cloudwatch
1个回答
0
投票

不幸的是,没有实现这一目标的直接方法。由于没有在API部署上生成日志记录,因此CloudWatch规则将无济于事。部署操作唯一留下的就是CloudTrail事件。

我为此可以想到的最佳解决方案涉及Amazon EventBridge,这是由AWS提供的事件总线托管服务。

在EventBridge中,您可以创建规则,从您的AWS账户内(或以外)的各种AWS服务收集特定事件。

API网关不是这些服务之一,但是CloudTrail是

API网关中的API部署向CloudTrail发出事件,该事件具有CreateDeployment作为事件名称和apigateway.amazonaws.com作为事件源。事件有效负载还包括诸如restApiId,部署代理的IAM身份详细信息等数据。

注意,关于CloudTrail事件模式的文档并不多,但是该事件看起来类似于所列的here

现在,我们需要创建一个EventBridge规则来捕获此类CloudTrail事件。This is a very good step by step guide on how to do this.

对于您的用例,您需要选择API Gateway作为服务名称并添加CreateDeployment作为特定操作,如下面的屏幕快照所示:

enter image description here

一旦设置了EventBridge规则,您就可以将其直接作为触发器附加到任何Lambda函数中。

© www.soinside.com 2019 - 2024. All rights reserved.