Skip to content

Commit

Permalink
remove send slack messagem from lambda functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Joao Pedro da Silva committed Dec 5, 2023
1 parent cdab8b1 commit 55cd19a
Show file tree
Hide file tree
Showing 23 changed files with 344 additions and 29 deletions.
6 changes: 3 additions & 3 deletions services/community-metrics/src/calcuateCommunitiesMetrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ export async function calcuateCommunitiesMetrics(): Promise<void> {
await communitiesMetrics();
utils.Logger.info('Updated community metrics!');
} catch (error) {
utils.slack.sendSlackMessage('🚨 Error to calculate communities metrics', config.slack.lambdaChannel);
utils.Logger.error('Error calcuateCommunitiesMetrics: ', error);
throw error;
}
}
async function communitiesMetrics(): Promise<void> {
Expand Down Expand Up @@ -152,8 +152,8 @@ export async function calculateGlobalDemographics() {
await globalDemographicsService.calculate();
utils.Logger.info('Updated global demographics!');
} catch (error) {
utils.slack.sendSlackMessage('🚨 Error to calculate global demographics', config.slack.lambdaChannel);
utils.Logger.error('Error calculateGlobalDemographics: ', error);
throw error;
}
}

Expand All @@ -163,8 +163,8 @@ export async function calcuateCommunitiesDemographics() {
await communitiesDemographics();
utils.Logger.info('Updated community demographics!');
} catch (error) {
utils.slack.sendSlackMessage('🚨 Error to calculate community demographics', config.slack.lambdaChannel);
utils.Logger.error('Error calcuateCommunitiesDemographics: ', error);
throw error;
}
}
async function communitiesDemographics() {
Expand Down
2 changes: 1 addition & 1 deletion services/community-metrics/src/calcuateGlobalMetrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ export async function calcuateGlobalMetrics(): Promise<void> {
await globalMetrics();
utils.Logger.info('Updated global metrics!');
} catch (error) {
utils.slack.sendSlackMessage('🚨 Error to calculate global metrics', config.slack.lambdaChannel);
utils.Logger.error('Error calcuateGlobalMetrics: ', error);
throw error;
}
}
async function globalMetrics(): Promise<void> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ async function calculateBorrowersPerformance(): Promise<void> {
}
utils.Logger.info('Updated borrowers performance!');
} catch (error) {
utils.slack.sendSlackMessage('🚨 Error to calculate borrowers performance', config.slack.lambdaChannel);
utils.Logger.error('Error calculateBorrowersPerformance: ', error);
throw error;
}
}

Expand Down
2 changes: 1 addition & 1 deletion services/community-metrics/src/updateBeneficiaries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ export async function updateBeneficiaries(): Promise<void> {
utils.Logger.info('Beneficiaries updated!');
} catch (error) {
await t.rollback();
utils.slack.sendSlackMessage('🚨 Error to update beneficiaries', config.slack.lambdaChannel);
utils.Logger.error('Error update beneficiaries: ', error);
throw error;
}
}

Expand Down
2 changes: 1 addition & 1 deletion services/community-metrics/src/updateCommunities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export async function updateCommunities(): Promise<void> {
utils.Logger.info('Communities updated!');
} catch (error) {
await t.rollback();
utils.slack.sendSlackMessage('🚨 Error to update communities', config.slack.lambdaChannel);
utils.Logger.error('Error update communities: ', error);
throw error;
}
}
2 changes: 1 addition & 1 deletion services/community-metrics/src/updateExchangeRates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ async function updateExchangeRates(): Promise<void> {
}
utils.Logger.info('Updated exchange rates!');
} catch (error) {
utils.slack.sendSlackMessage('🚨 Error to update exchange rates', config.slack.lambdaChannel);
utils.Logger.error('Error updateExchangeRates: ', error);
throw error;
}
}

Expand Down
2 changes: 1 addition & 1 deletion services/community-metrics/src/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export async function verifyDeletedAccounts(): Promise<void> {
utils.Logger.info('User accounts to delete verified!');
} catch (error) {
await t.rollback();
utils.slack.sendSlackMessage('🚨 Error to verify deleted accounts', config.slack.lambdaChannel);
utils.Logger.error('Error verifyDeletedAccounts: ', error);
throw error;
}
}
125 changes: 125 additions & 0 deletions services/lambda-alert/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2

.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.pnp.*

build/
contracts/types/
.secret
coverage.json

orbitdb/
path-for-js-ipfs-repo/

.webpack
9 changes: 9 additions & 0 deletions services/lambda-alert/.mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extension": ["ts"],
"spec": "tests/**/*.test.ts",
"require": ["ts-node/register", "tsconfig-paths/register"],
"delay": false,
"bail": false,
"watch": false,
"timeout": 30000
}
20 changes: 20 additions & 0 deletions services/lambda-alert/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Configure Serverless Framework
```
npm install -g serverless
serverless config credentials \
--provider aws \
--key AWS_ACCESS_KEY_ID \
--secret AWS_SECRET_ACCESS_KEY
```

Invoke Local
```
sls invoke local -f function-name
```

Deploy lambda
```
cd services/proposals
sls deploy --stage STAGE --aws-profile PROFILE
```
24 changes: 24 additions & 0 deletions services/lambda-alert/handler.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { WebClient } from '@slack/web-api';

const SLACK_TOKEN = process.env.SLACK_TOKEN;
const SLACK_CHANNEL = process.env.SLACK_CHANNEL;

const sendSlackMessage = async (lambda: string) => {
const web = new WebClient(SLACK_TOKEN);
await web.chat.postMessage({ channel: SLACK_CHANNEL!, text: '🚨 Error to run lambda: ' + lambda }).catch(console.error);
}

export const notify = async (event: any, context: any) => {
try {
console.log(JSON.stringify(event))
if (event.Records[0]?.Sns?.Message) {
const message = JSON.parse(event.Records[0].Sns.Message);
const lambda = message.Trigger.Dimensions[0].value;

await sendSlackMessage(lambda);
}
} catch (error) {
console.log(error);
throw error;
}
};
19 changes: 19 additions & 0 deletions services/lambda-alert/nodemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"restartable": "rs",
"ignore": [
".git",
"node_modules/",
"dist/",
"coverage/"
],
"watch": [
"../"
],
"execMap": {
"ts": "node -r ts-node/register"
},
"env": {
"NODE_ENV": "development"
},
"ext": "json,ts"
}
28 changes: 28 additions & 0 deletions services/lambda-alert/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "@impactmarket/lambda-alert",
"version": "1.0.0",
"scripts": {
"build": "tsc",
"test": "NODE_ENV=test mocha",
"start": "nodemon -w src handler.ts"
},
"author": "impact-market",
"license": "Apache-2.0",
"engines": {
"node": "18.x"
},
"dependencies": {
"@slack/web-api": "6.10.0",
"aws-sdk": "2.1503.0"
},
"devDependencies": {
"@types/aws-lambda": "8.10.102",
"@types/node": "18.16.4",
"serverless": "3.36.0",
"serverless-plugin-tracing": "2.0.0",
"serverless-webpack": "5.11.0",
"ts-loader": "9.5.0",
"webpack": "5.89.0",
"webpack-node-externals": "3.0.0"
}
}
32 changes: 32 additions & 0 deletions services/lambda-alert/serverless.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
service: lambda-alert

frameworkVersion: '3'
useDotenv: true

custom:
webpack:
includeModules: true
packager: yarn

provider:
name: aws
runtime: nodejs18.x
region: ${env:AWS_REGION}
iam:
role:
statements:
- Effect: Allow
Action:
- SNS:Subscribe
Resource:
- "*"

functions:
notify:
handler: handler.notify
events:
- sns:
arn: "arn:aws:sns:eu-west-1:763241127132:lambdaAlert"

plugins:
- serverless-webpack
Empty file.
23 changes: 23 additions & 0 deletions services/lambda-alert/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"baseUrl": "./",
"sourceMap": true,
"target": "es6",
"module": "commonjs",
"strict": true,
"moduleResolution": "node",
"noImplicitThis": true,
"alwaysStrict": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"outDir": "./build",
"noImplicitAny": false,
"skipLibCheck": true,
"useUnknownInCatchVariables": false,
},
"include": ["src/**/*", "handler.ts"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
Loading

0 comments on commit 55cd19a

Please sign in to comment.