UNPKG

serverless-logs-plugin

Version:

A serverless framework plugin for AWS to add log retention and the resource to subscribe log groups

74 lines (64 loc) 2.3 kB
# serverless-logs-plugin A serverless framework plugin for AWS to add log retention and the resource to subscribe log groups ## Usage Install from npm: ``` npm i --save serverless-logs-plugin ``` In serverless.yml add the plugin: ``` plugins: - serverless-logs-plugin ``` In serverless.yml add the configuration: ``` ... provider: logsPlugin: LogGroup: RetentionInDays: 14 # optional, default: 90 SubscriptionFilter: # optional, default: no SubscriptionFilter resource is added DestinationArn: my-destination-arn FilterPattern: my-filtern-pattern # optional, default: '{ $.NotExistingField NOT EXISTS }' RoleArn: my-role-arn # optional, default: null additionalSubscriptions: # optional, default: no additional SubscriptionFilter - DependsOn: ElasticBeanstalkApp LogGroupNames: - /aws/elasticbeanstalk/myapp/var/log/eb-activity.log - /aws/elasticbeanstalk/myapp/var/log/nginx/access.log - /aws/elasticbeanstalk/myapp/var/log/nginx/error.log - /aws/elasticbeanstalk/myapp/var/log/web-1.error.log - /aws/elasticbeanstalk/myapp/var/log/web-1.log ... ``` As a result, the plugin will produce, for each lambda function a resource to set the RetentionInDays to the log group and a resource to subscribe the log group: ``` "MyFunctionLogGroup": { "Type": "AWS::Logs::LogGroup", "Properties": { "LogGroupName": "/aws/lambda/MyFunction", "RetentionInDays": 90 } }, "MyFunctionSubscriptionFilter": { "Type": "AWS::Logs::SubscriptionFilter", "DependsOn": "MyFunctionLambdaFunction", "Properties": { "DestinationArn": "my-destination-arn", "LogGroupName": "/aws/lambda/MyFunction", "FilterPattern": "{ $.NotExistingField NOT EXISTS }" } } ``` For each additionalSubscriptions, a subscription resource is produced: ``` "AwselasticbeanstalkmyappvarlogwebDash1logSubscriptionFilter": { "Type": "AWS::Logs::SubscriptionFilter", "DependsOn": "ElasticBeanstalkApp", "Properties": { "DestinationArn": "my-destination-arn", "LogGroupName": "/aws/elasticbeanstalk/myapp/var/log/web-1.log", "FilterPattern": "{ $.NotExistingField NOT EXISTS }" } } ```