在CloudFront发行创建结束时通知Lambda

时间:2019-06-08 20:15:46

标签: node.js aws-lambda amazon-cloudfront amazon-sns amazon-cloudwatch

此刻,我们每分钟都打电话给cloudfront.listDistributions(),以确定我们正在部署的发行状态的变化。这会导致Lambda超时,因为CloudFront的部署时间不会超过30分钟(15分钟后Lambda超时)。

我想成功创建CloudFront分配后通知Lambda函数。这将使我们能够执行创建后的操作,同时节省宝贵的Lambda执行时间。

在CloudWatch上创建规则不提供选择CloudFront的选项。尽管如此,它似乎接受使用源aws.cloudformation创建自定义事件模式

enter image description here

考虑选项:

  • 每5分钟触发一次lambda以列出分布并将状态与DynamoDB中存储的先前状态进行比较。

有人想克服AWS缺乏的功能吗?

1 个答案:

答案 0 :(得分:0)

如果您愿意并有时间,可以利用CloudTrail进行更复杂的解决方案。

免责声明

CloudTrail不是实时日志系统,但请确保所有API调用将在15分钟内在控制台上报告(如CloudTrail FAQs下所述)。因此,以下内容仅对长期运行的任务有意义,例如创建CloudFront发行版,占用Aurora数据库等。

  • 您可以创建基于CloudWatch事件的规则(我们称其为 CW-r1 ) 按照特定的模式,例如 CreateDistribution UpdateDistribution

  • CW-r1触发Lambda( LM-1 ),该Lambda启用另一个CloudWatch 事件基础规则(CW-r2)。

  • CW-r2在计划的基础上触发通过API的Lambda(LM-2) 请求特定分配状态。一旦分配是 例如,“已部署” LM-2可以通过SNS发送通知(您可以 发送EMAIL,SMS,推送通知,无论SNS支持什么。

  • 一旦一切完成,LM-2可以按顺序禁用CW-r2规则 停止处理信息。

通过这种方式,您可以基于所需的API调用来建立自动通知系统。