Skip to content

Commit af6afb4

Browse files
authored
Merge pull request #116 from SumoLogic/hpal_SUMO-136652
SUMO-136652: Added delay in subscribing existing log groups
2 parents 469c015 + bf2af39 commit af6afb4

File tree

4 files changed

+58
-10
lines changed

4 files changed

+58
-10
lines changed

loggroup-lambda-connector/sam/packaged.yaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,25 @@ Globals:
88
Function:
99
Timeout: 300
1010
MemorySize: 128
11+
Metadata:
12+
AWS::ServerlessRepo::Application:
13+
Author: Sumo Logic
14+
Description: Lambda Function for automatic subscription of any Sumo Logic lambda
15+
function with loggroups matching an input pattern.
16+
HomePageUrl: https://github.com/SumoLogic/sumologic-aws-lambda
17+
Labels:
18+
- lambda
19+
- sumologic
20+
- autosubscribe
21+
- serverless
22+
- loggroups
23+
- cloudwatch
24+
LicenseUrl: s3://appdevstore/LoggroupConnector/v1.0.2/5122657d5b9a0d3713e24d3a33eae431
25+
Name: sumologic-loggroup-connector
26+
ReadmeUrl: s3://appdevstore/LoggroupConnector/v1.0.2/0490ecc943c35a5d04b00813554c06ad
27+
SemanticVersion: 1.0.2
28+
SourceCodeUrl: https://github.com/SumoLogic/sumologic-aws-lambda/loggroup-lambda-connector
29+
SpdxLicenseId: Apache-2.0
1130
Parameters:
1231
LambdaARN:
1332
Type: String
@@ -28,7 +47,7 @@ Resources:
2847
SumoLogGroupLambdaConnector:
2948
Type: AWS::Serverless::Function
3049
Properties:
31-
CodeUri: s3://appdevstore/LoggroupConnector/v1.0.1/188fa5e39f6b0e3d1087902cb169327d
50+
CodeUri: s3://appdevstore/LoggroupConnector/v1.0.2/06605e5d4a1e561027da885250b6d539
3251
Handler: loggroup-lambda-connector.handler
3352
Runtime: nodejs10.x
3453
Environment:

loggroup-lambda-connector/sam/sam_package.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ else
88
SAM_S3_BUCKET="cf-templates-5d0x5unchag-us-east-2"
99
AWS_REGION="us-east-2"
1010
fi
11-
sam package --template-file template.yaml --s3-bucket $SAM_S3_BUCKET --output-template-file packaged.yaml
11+
sam package --template-file template.yaml --s3-bucket $SAM_S3_BUCKET --output-template-file packaged.yaml --s3-prefix LoggroupConnector/v1.0.2
12+
13+
# sam deploy --template-file packaged.yaml --stack-name testingloggrpconnector --capabilities CAPABILITY_IAM --region $AWS_REGION --parameter-overrides LambdaARN="arn:aws:lambda:us-east-1:956882708938:function:AccessVPCResourcesLambda"
14+
15+
sam publish --template packaged.yaml --region us-east-1
16+
# aws cloudformation describe-stack-events --stack-name testingloggrpconnector --region $AWS_REGION
17+
# aws cloudformation get-template --stack-name testingloggrpconnector --region $AWS_REGION
1218

13-
sam deploy --template-file packaged.yaml --stack-name testingloggrpconnector --capabilities CAPABILITY_IAM --region $AWS_REGION --parameter-overrides LambdaARN="arn:aws:lambda:us-east-1:956882708938:function:AccessVPCResourcesLambda"
14-
#aws cloudformation describe-stack-events --stack-name testingloggrpconnector --region $AWS_REGION
15-
#aws cloudformation get-template --stack-name testingloggrpconnector --region $AWS_REGION
16-
# aws serverlessrepo create-application-version --region us-east-1 --application-id arn:aws:serverlessrepo:us-east-1:$AWS_ACCOUNT_ID:applications/sumologic-securityhub-connector --semantic-version 1.0.1 --template-body file://packaged.yaml

loggroup-lambda-connector/sam/template.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,25 @@ Globals:
99
Timeout: 300
1010
MemorySize: 128
1111

12+
Metadata:
13+
AWS::ServerlessRepo::Application:
14+
Author: Sumo Logic
15+
Description: Lambda Function for automatic subscription of any Sumo Logic lambda function with loggroups matching an input pattern.
16+
HomePageUrl: https://github.com/SumoLogic/sumologic-aws-lambda
17+
Labels:
18+
- lambda
19+
- sumologic
20+
- autosubscribe
21+
- serverless
22+
- loggroups
23+
- cloudwatch
24+
LicenseUrl: ./LICENSE
25+
Name: sumologic-loggroup-connector
26+
ReadmeUrl: ../README.md
27+
SemanticVersion: 1.0.2
28+
SourceCodeUrl: https://github.com/SumoLogic/sumologic-aws-lambda/loggroup-lambda-connector
29+
SpdxLicenseId: Apache-2.0
30+
1231
Parameters:
1332
LambdaARN:
1433
Type : String

loggroup-lambda-connector/src/loggroup-lambda-connector.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
var AWS = require("aws-sdk");
2-
32
var cwl = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'});
3+
async function sleep(waitTimeInMs) {
4+
console.log("sleeping for " + waitTimeInMs + " ms...");
5+
return new Promise((resolve) => setTimeout(resolve, waitTimeInMs));
6+
}
47

58
function subscribeToLambda(lambdaLogGroupName, lambdaArn, errorHandler) {
69
var params = {
@@ -23,13 +26,17 @@ function filterLogGroups(event, logGroupRegex) {
2326
}
2427
}
2528

26-
function subscribeExistingLogGroups(logGroups) {
29+
async function subscribeExistingLogGroups(logGroups) {
2730
var logGroupName;
2831
var logGroupRegex = new RegExp(process.env.LOG_GROUP_PATTERN, "i");
2932
var lambdaArn = process.env.LAMBDA_ARN;
3033
for (var i = logGroups.length - 1; i >= 0; i--) {
3134
logGroupName = logGroups[i].logGroupName;
3235
if (logGroupName.match(logGroupRegex)) {
36+
37+
// sleep time between calls
38+
await sleep(1000*(process.env.SUBSCRIBE_DELAY_SECONDS || 2)); // 5 seconds
39+
3340
subscribeToLambda(logGroupName, lambdaArn, (function(inner_logGroupName) { return function (err, data) {
3441
if (err) {
3542
console.log("Error in subscribing", inner_logGroupName, err);
@@ -47,7 +54,7 @@ function processExistingLogGroups(token, errorHandler) {
4754

4855
var params = {
4956
limit: 50,
50-
// logGroupNamePrefix: 'STRING_VALUE',
57+
// logGroupNamePrefix: '',
5158
nextToken: token
5259
};
5360
var p = new Promise(function(resolve, reject) {
@@ -81,12 +88,13 @@ function processEvents(env, event, errorHandler) {
8188
console.log("Subscribing: ", logGroupName, env.LAMBDA_ARN);
8289
subscribeToLambda(logGroupName, env.LAMBDA_ARN, errorHandler);
8390
} else {
84-
console.log("Unsubscribed: ", logGroupName, env.LAMBDA_ARN);
91+
console.log("Unmatched: ", logGroupName, env.LAMBDA_ARN);
8592
}
8693

8794
}
8895

8996
exports.handler = function (event, context, callback) {
97+
console.log("Invoking Log Group connector function")
9098
function errorHandler(err, msg) {
9199
if (err) {
92100
console.log(err, msg);

0 commit comments

Comments
 (0)