nason / serverless-log-forwarding-kinesis

Serverless plugin for forwarding CloudWatch logs to another Lambda function.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

serverless-log-forwarding-kinesis

serverless MIT licensed Build Status npm version npm downloads

Serverless plugin for forwarding CloudWatch logs to a Kinesis Stream

Getting Started

Prerequisites

This plugin only works for Serverless deployments to AWS

Make sure you have the following installed before starting:

You will need a Kinesis Stream ARN, and the ARN to a role with a policy like:

CloudWatchLogsRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Principal:
            Service:
              - logs.amazonaws.com
          Action:
            - sts:AssumeRole
    Policies:
      - PolicyName: root
        PolicyDocument:
          Version: "2012-10-17"
          Statement:
            - Effect: Allow
              Action:
                - kinesis:PutRecords
                - kinesis:PutRecord
              Resource:
                Fn::GetAtt:
                  - KinesisStream
                  - Arn
    RoleName: kinesis-forwarder-cloudwatchrole

Note the above is just an example cloudformation resource, and you will need to create one appropriate for your use case.

Installing

To install the plugin, run:

npm install serverless-log-forwarding-kinesis

Then make the following edits to your serverless.yaml file:

plugins:
  - serverless-log-forwarding-kinesis

custom:
  logForwardingKinesis:
    destinationARN: '[ARN of Kinesis stream to forward logs to]'
    roleARN: '[ARN of the role to use when forwading logs]'
    # optional:
    filterPattern: '[filter pattern for logs that are sent to Kinesis]'
    normalizedFilterID: true # whether to use normalized function name as filter ID
    stages:
      - '[name of the stage to apply log forwarding]'
      - '[another stage name to filter]'

functions:
  myFunction:
    handler: src/someHandler
    # optional properties for per-function configuration:
    logForwarding:
      # set enabled to false to disable log forwarding for a single given function
      enabled: false

Running Tests

To run the test:

npm test

All tests should pass.

If there is an error update the node_module inside the serverless-log-forwarding-kinesis folder:

npm install

Deploying


The plugin will be packaged with the lambda when deployed as normal using Serverless:

serverless deploy

Responsible Disclosure

If you have any security issue to report, contact project maintainers privately.

Contributing

We welcome pull requests! For your pull request to be accepted smoothly, we suggest that you:

  1. For any sizable change, first open a GitHub issue to discuss your idea.
  2. Create a pull request. Explain why you want to make the change and what it’s for. We’ll try to answer any PRs promptly.

About

Serverless plugin for forwarding CloudWatch logs to another Lambda function.

License:MIT License


Languages

Language:JavaScript 95.4%Language:Shell 4.6%