如何添加 cloudwatch 权限以在 serverless.yml 中调用 lambda?

How can I add cloudwatch permission to invoke lambda in serverless.yml?

我正在使用无服务器部署一个 lambda,我想从 cloudwatch 事件中调用这个 lambda。下面是我的配置。只要创建了新的日志组,就会调用 lambda。但是我在 lambda 上遇到错误,它需要授予 cloudwatch 权限才能调用 lambda。如何在 serverless.yml 中添加该权限?

  logGroupListener:
    handler: src/index.handler
    name: ${self:provider.stackName}-cloudWatch-listener
    environment:
      DEST_ARN: "arn:aws:lambda:${self:provider.region}:${self:provider.accountId}:function:${self:provider.stackName}-cloudwatch-listener"
    events:
      - cloudwatchEvent:
          event:
            source:
              - 'aws.logs'
            detail-type:
              - 'AWS API Call via CloudTrail'
            detail:
              eventSource:
                - logs.amazonaws.com
              eventName:
                - CreateLogGroup

我知道我可以通过 运行 这个命令添加:

aws lambda add-permission --function-name $AGGREGATOR_NAME \
  --statement-id $ID --action lambda:InvokeFunction \
  --principal logs.ap-southeast-2.amazonaws.com

我知道如何在 serverless.yml 中创建 IAM 角色,但我不知道如何将角色附加到 cloudwatch。

请按以下方式尝试:

provider:
  ...
  iamRoleStatements:
    - Effect: Allow
      Action:
        - lambda:InvokeFunction
        - lambda:InvokeAsync
      Resource: "arn:aws:logs:<region>:<accountId>:log-group:<Log group>:*"