当我在API-网关控制台中单击部署以在舞台上部署API时,我试图触发Lambda函数。
我已经尝试过使用cloudwatch规则,但是没有用于API-网关部署的事件模式。
我的问题是:
当我单击API-Gateway控制台上的deploy按钮时是否可以触发lambda函数?
如果是,我该怎么做?
谢谢
不幸的是,没有实现这一目标的直接方法。由于没有在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
作为特定操作,如下面的屏幕快照所示:
一旦设置了EventBridge规则,您就可以将其直接作为触发器附加到任何Lambda函数中。