Skip to content

Commit a12a784

Browse files
committed
feat: Include logger object into context #183
1 parent fe28f99 commit a12a784

File tree

6 files changed

+52
-7
lines changed

6 files changed

+52
-7
lines changed

.projen/deps.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
"name": "@types/jwk-to-pem",
2121
"type": "build"
2222
},
23+
{
24+
"name": "@types/lambda-log",
25+
"type": "build"
26+
},
2327
{
2428
"name": "@types/node",
2529
"version": "^10.17.0",
@@ -105,6 +109,10 @@
105109
"name": "jwk-to-pem",
106110
"type": "runtime"
107111
},
112+
{
113+
"name": "lambda-log",
114+
"type": "runtime"
115+
},
108116
{
109117
"name": "uuid",
110118
"type": "runtime"

.projenrc.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ const project = new TaimosTypescriptLibrary({
88
'jwk-to-pem',
99
'axios',
1010
'uuid',
11+
'lambda-log',
1112
],
1213
docgen: false,
1314
defaultReleaseBranch: 'main',
1415
devDeps: [
1516
'@types/aws-lambda',
17+
'@types/lambda-log',
1618
'openapi-typescript',
1719
'@types/jsonwebtoken',
1820
'@types/jwk-to-pem',

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"@types/jest": "^26.0.22",
3434
"@types/jsonwebtoken": "^8.5.1",
3535
"@types/jwk-to-pem": "^2.0.0",
36+
"@types/lambda-log": "^2.2.0",
3637
"@types/node": "^10.17.0",
3738
"@types/uuid": "^8.3.0",
3839
"@typescript-eslint/eslint-plugin": "^4.19.0",
@@ -55,6 +56,7 @@
5556
"axios": "^0.21.1",
5657
"jsonwebtoken": "^8.5.1",
5758
"jwk-to-pem": "^2.0.4",
59+
"lambda-log": "^3.0.0",
5860
"uuid": "^8.3.2"
5961
},
6062
"bundledDependencies": [],

src/http/auth.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Axios from 'axios';
66
import { verify, JwtHeader, SigningKeyCallback } from 'jsonwebtoken';
77
// import jwkToPem = require('jwk-to-pem');
88
import jwkToPem from 'jwk-to-pem';
9+
import logger from 'lambda-log';
910
import { ForbiddenError, UnauthenticatedError } from '../types/errors';
1011

1112
const cognitoPoolId = env.USER_POOL_ID ?? '';
@@ -72,7 +73,7 @@ const promisedVerify = (token: string): Promise<{ [name: string]: string }> => {
7273

7374
export abstract class CognitoAuthorizer {
7475

75-
protected claims?:{ [name: string]: string | number | boolean | string[] };
76+
protected claims?: { [name: string]: string | number | boolean | string[] };
7677

7778
public abstract authenticate(): Promise<void>;
7879

@@ -121,7 +122,7 @@ export abstract class CognitoAuthorizer {
121122

122123
export class ApiGatewayv2CognitoAuthorizer extends CognitoAuthorizer {
123124

124-
constructor(protected event: APIGatewayProxyEventV2) {
125+
constructor(protected event: APIGatewayProxyEventV2, private _logger: logger.LambdaLog) {
125126
super();
126127
}
127128

@@ -138,7 +139,7 @@ export class ApiGatewayv2CognitoAuthorizer extends CognitoAuthorizer {
138139
const token = authHeader.substr('Bearer '.length);
139140
try {
140141
const claims: { [name: string]: string } = await promisedVerify(token);
141-
console.log(claims);
142+
this._logger.debug(JSON.stringify(claims));
142143

143144
this.event.requestContext.authorizer = {
144145
jwt: {
@@ -148,7 +149,7 @@ export class ApiGatewayv2CognitoAuthorizer extends CognitoAuthorizer {
148149
};
149150
this.claims = claims;
150151
} catch (err) {
151-
console.log(err);
152+
this._logger.error(err);
152153
}
153154
}
154155

src/http/handler.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* eslint-disable */
22
import * as lambda from 'aws-lambda';
3+
import logger from 'lambda-log';
34
/* eslint-enable */
45
import * as errors from '../types/errors';
56
import { ApiGatewayv2CognitoAuthorizer, AppSyncCognitoAuthorizer, CognitoAuthorizer } from './auth';
@@ -18,6 +19,7 @@ export interface HttpResponseContext {
1819
export interface HttpHandlerContext {
1920
event: lambda.APIGatewayProxyEventV2;
2021
lambdaContext: lambda.Context;
22+
logger: logger.LambdaLog;
2123
response: HttpResponseContext;
2224
cognitoAuth: CognitoAuthorizer;
2325
}
@@ -59,9 +61,14 @@ export const createHttpHandler =
5961
const ctx: HttpHandlerContext = {
6062
event,
6163
lambdaContext: context,
64+
logger: logger as unknown as logger.LambdaLog,
6265
response: { headers: {}, json: true },
63-
cognitoAuth: new ApiGatewayv2CognitoAuthorizer(event),
66+
cognitoAuth: new ApiGatewayv2CognitoAuthorizer(event, logger as unknown as logger.LambdaLog),
6467
};
68+
ctx.logger.options.meta.requestId = context.awsRequestId;
69+
ctx.logger.options.debug = process.env.DEBUG === 'true';
70+
71+
ctx.logger.debug(JSON.stringify(event));
6572

6673
try {
6774
await ctx.cognitoAuth.authenticate();
@@ -88,7 +95,7 @@ export const createHttpHandler =
8895
body: error.message,
8996
};
9097
}
91-
console.error(error);
98+
ctx.logger.error(error);
9299
return {
93100
statusCode: ctx.response.statusCode ?? 500,
94101
headers: {
@@ -126,6 +133,7 @@ function corsHeader(event: lambda.APIGatewayProxyEventV2): { [name: string]: str
126133
export interface AppSyncHandlerContext<T> {
127134
event: lambda.AppSyncResolverEvent<T>;
128135
lambdaContext: lambda.Context;
136+
logger: logger.LambdaLog;
129137
cognitoAuth: CognitoAuthorizer;
130138
}
131139

@@ -139,14 +147,19 @@ export const createAppSyncHandler =
139147
const ctx: AppSyncHandlerContext<T> = {
140148
event,
141149
lambdaContext: context,
150+
logger: logger as unknown as logger.LambdaLog,
142151
cognitoAuth: new AppSyncCognitoAuthorizer(event),
143152
};
153+
ctx.logger.options.meta.requestId = context.awsRequestId;
154+
ctx.logger.options.debug = process.env.DEBUG === 'true';
155+
156+
ctx.logger.debug(JSON.stringify(event));
144157

145158
try {
146159
await ctx.cognitoAuth.authenticate();
147160
return await handler(ctx);
148161
} catch (error) {
149-
console.error(error);
162+
ctx.logger.error(error);
150163
throw error;
151164
}
152165
};

yarn.lock

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,13 @@
678678
resolved "https://registry.yarnpkg.com/@types/jwk-to-pem/-/jwk-to-pem-2.0.0.tgz#770ad9cc70134d47283b3c815a064a06f802d065"
679679
integrity sha512-m7ZnE+iJodvhu9XNkMc/1CNkIg7432d/YSB8Qo/4TbD86rZ1GgkB4MVTNqIZG5RCtL0H4iVxiMT2OGTQDZEfHg==
680680

681+
"@types/lambda-log@^2.2.0":
682+
version "2.2.0"
683+
resolved "https://registry.yarnpkg.com/@types/lambda-log/-/lambda-log-2.2.0.tgz#fef6d443b30313df9f7cc529627d740591d05001"
684+
integrity sha512-fkx6+kvOw75+2Mh6gyYrCN3uTVP8rJfj1TSXW4bmtjyoleoPWGoPHjxiFexZl5Ub5TQqyaZn/xQPh9NDR0Dh2Q==
685+
dependencies:
686+
"@types/node" "*"
687+
681688
"@types/minimist@^1.2.0":
682689
version "1.2.1"
683690
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
@@ -2316,6 +2323,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
23162323
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
23172324
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
23182325

2326+
fast-safe-stringify@^2.0.6:
2327+
version "2.0.7"
2328+
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
2329+
integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
2330+
23192331
fastq@^1.6.0:
23202332
version "1.11.0"
23212333
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
@@ -3809,6 +3821,13 @@ kleur@^4.1.3:
38093821
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d"
38103822
integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==
38113823

3824+
lambda-log@^3.0.0:
3825+
version "3.0.0"
3826+
resolved "https://registry.yarnpkg.com/lambda-log/-/lambda-log-3.0.0.tgz#178d0997afcbd50f5127c882c6d0aed3c75dc58e"
3827+
integrity sha512-xn6qbqJ/Jv5aybdACuXHPZVKg/bCfloFzfH18iZ8YJ1K29HaSLD+hGaF33NUudwD1opMTzXCrKoJIlgsJNdLpQ==
3828+
dependencies:
3829+
fast-safe-stringify "^2.0.6"
3830+
38123831
leven@^3.1.0:
38133832
version "3.1.0"
38143833
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"

0 commit comments

Comments
 (0)