Skip to content

Commit ebb9c6c

Browse files
committed
✨ register interceptor as extension
1 parent 18a5f70 commit ebb9c6c

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"cdk": "cdk",
1414
"deploy": "pnpm build:layer && cdk deploy",
1515
"start": "cdk watch",
16-
"build:layer": "./node_modules/.bin/esbuild ./src/layers/interceptorExtension/interceptor.ts --bundle --outfile='./src/layers/interceptorExtension/interceptor.js' --platform=node"
16+
"build:layer": "./node_modules/.bin/esbuild ./src/layers/interceptorExtension/interceptor.ts --bundle --outfile='./src/layers/interceptorExtension/interceptor.js' --platform=node --main-fields=module,main"
1717
},
1818
"devDependencies": {
1919
"@swarmion/integration-tests": "^0.27.0",
@@ -30,6 +30,7 @@
3030
"@aws-cdk/aws-apigatewayv2-integrations-alpha": "^2.77.0-alpha.0",
3131
"aws-cdk-lib": "^2.77.0",
3232
"constructs": "^10.2.9",
33+
"lambda-extension-service": "^0.0.1",
3334
"msw": "^1.2.1",
3435
"node-fetch": "^3.3.1",
3536
"prettier": "^2.8.8",

pnpm-lock.yaml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/layers/interceptorExtension/interceptor.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
import { rest } from "msw";
22
import { setupServer } from "msw/node";
3+
import { EventTypes, ExtensionAPIService } from "lambda-extension-service";
34

45
console.log("Executing interceptor extension code...");
56

67
const server = setupServer(
78
rest.all("*", async (req, res, ctx) => {
89
const url = req.url.toString();
10+
if (
11+
process.env.AWS_LAMBDA_RUNTIME_API &&
12+
url.includes(process.env.AWS_LAMBDA_RUNTIME_API)
13+
) {
14+
return req.passthrough();
15+
}
916
const method = req.method;
1017
console.log(`request intercepted: ${method} ${url}`);
1118

@@ -19,3 +26,21 @@ const server = setupServer(
1926
);
2027

2128
server.listen({ onUnhandledRequest: "bypass" });
29+
30+
const main = async () => {
31+
const extensionApiService = new ExtensionAPIService({
32+
extensionName: "interceptor-extension",
33+
});
34+
await extensionApiService.register([EventTypes.Invoke]); // EventTypes.Shutdown is not supported for internal extensions
35+
extensionApiService.onTelemetryEvent((event) =>
36+
console.log("Telemetry event received: ", JSON.stringify(event))
37+
);
38+
await extensionApiService.registerTelemetry();
39+
40+
while (true) {
41+
const event = await extensionApiService.next();
42+
console.log("Next lambda event received: ", JSON.stringify(event));
43+
}
44+
};
45+
46+
main().catch((error) => console.error(error));

0 commit comments

Comments
 (0)