无服务器中的功能可以共享事件吗?

Can functions in serverless share events?

我想在我们的 AWS 账户(EC2 实例、ELB 等)中创建特定资源时创建多个 cloudwatch 警报

在我的 serverless.yml 中,我可以执行以下操作,但这最终会创建多个侦听同一事件的 cloudwatch 规则。

functions:
  createLatencyAlarm:
    handler: createLatencyAlarm.main
    events:
      - cloudwatchEvent:
          event:
            source:
              - "aws.elasticloadbalancing"
            detail-type:
              - "AWS API Call via CloudTrail"
            detail:
              eventSource:
                - "elasticloadbalancing.amazonaws.com"
              eventName:
                - "CreateLoadBalancer"
  createUnhealthHostAlarm:
    handler: createUnhealthyHostAlarm.main
    events:
      - cloudwatchEvent:
          event:
            source:
              - "aws.elasticloadbalancing"
            detail-type:
              - "AWS API Call via CloudTrail"
            detail:
              eventSource:
                - "elasticloadbalancing.amazonaws.com"
              eventName:
                - "CreateLoadBalancer"

我也可以将事件设置为相同的 sns 主题,但是我必须单独(在无服务器之外)创建一个 cloudwatch 规则来侦听事件并发布到 sns 主题

functions:
  createLatencyAlarm:
    handler: createLatencyAlarm.main
    events:
      - sns: create-elb
  createUnhealthHostAlarm:
    handler: createUnhealthyHostAlarm.main
    events:
      - sns: create-elb

我可以在 serverless.yml 中设置一个事件以在函数之间共享吗?

目前,Serverless 为每个cloudwatch 告警创建单独的规则。如果您希望更改此内容,可以在他们的回购协议中提交问题。

与此同时,如果您希望有一个闹钟,请让一个 lambda 监听它,然后发布到一个 sns 主题。