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

Hai*_*ang 2 amazon-web-services aws-cloudformation

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

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

问题是:

  • 有没有办法在cloudFormation中编写cloudWatch日志组订阅?
  • 如果没有,有什么替代方法(比如从 cloudFormation 模板中的 lambda 资源配置)?

Dan*_*ell 6

哦,这是一个棘手的问题。我只是通过在控制台中创建一个并进行逆向工程来解决这个问题 - 恶心。但你很幸运 - 我手头上有它: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" ] }
  }
},
Run Code Online (Sandbox Code Playgroud)