如何在 cloudFormation 模板中包含 cloudWatch 日志组订阅?

Posted

技术标签:

【中文标题】如何在 cloudFormation 模板中包含 cloudWatch 日志组订阅?【英文标题】:How to include cloudWatch Log Group subscription in cloudFormation template? 【发布时间】:2019-01-22 11:41:38 【问题描述】:

假设我在 cloudWatch 中有一个日志组,我想订阅一个带有过滤器的 lambda(订阅->流到 AWS Lambda)。

我想用cloudFormation模板来实现它,但是从cloudFormation doc来看,似乎只有两个可用的cloudWatch资源是Alarm/Dashboard。

问题是:

有什么办法可以写 cloudWatch Log Group 订阅 cloudFormation? 如果没有,任何替代方式(比如从 lambda cloudFormation 模板中的资源配置)?

【问题讨论】:

【参考方案1】:

哦,这是一个棘手的问题。我只是通过在控制台中创建一个并反向工程来解决这个问题 - ick。但你很幸运 - 我手头有它:P 这是我用来将 lambda 订阅到 vpc 流日志的 json。

请注意,“VPCFlowLogsGroup”是日志组的逻辑 ID,“FlowLogsCollector”是 lambda 的逻辑 ID。

"FlowLogsCollectorEventPermission": 
    "Type" : "AWS::Lambda::Permission",
    "Properties" : 
        "Principal" :  "Fn::Sub": "logs.$AWS::Region.amazonaws.com" ,
        "Action" : "lambda:InvokeFunction",
        "FunctionName" :  "Fn::GetAtt": [ "FlowLogsCollector", "Arn" ] ,
        "SourceAccount":  "Ref": "AWS::AccountId" ,
        "SourceArn" :  "Fn::GetAtt": [ "VPCFlowLogsGroup", "Arn" ] 
    
  ,
"FlowLogsCollectorSubscription": 
  "Type" : "AWS::Logs::SubscriptionFilter",
  "DependsOn": "FlowLogsCollectorEventPermission",
  "Properties" : 
    "LogGroupName" :  "Ref" : "VPCFlowLogsGroup" ,
    "FilterPattern" : "",
    "DestinationArn" :  "Fn::GetAtt" : [ "FlowLogsCollector", "Arn" ] 
  
,

【讨论】:

啊,AWS::Logs::SubscriptionFilter,我错过了...非常感谢您的及时回复!

以上是关于如何在 cloudFormation 模板中包含 cloudWatch 日志组订阅?的主要内容,如果未能解决你的问题,请参考以下文章

AWS cloudformation 嵌套堆栈因模板 URL 失败

如何在我的 Sendgrid 事务模板中包含 Jinja2 模板

如何在 Jinja2 中包含具有相对路径的模板

django如何在模板中包含javascript

如何在 ARM 模板中包含外部逻辑应用实现

如何在子模板中包含部分模板