Skip to content

Commit bddbffc

Browse files
committed
feat: Add a response header to understand who responded
Adds a new `X-Gu-Target-Group` header to every response to help understand which target group served the request, EC2 or ECS.
1 parent 357d3ed commit bddbffc

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

dotcom-rendering/src/server/server.dev.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
import { type ErrorRequestHandler, type Handler, Router } from 'express';
1+
import {
2+
type ErrorRequestHandler,
3+
type Handler,
4+
type NextFunction,
5+
type Request,
6+
type Response,
7+
Router,
8+
} from 'express';
29
import { pages } from '../devServer/routers/pages';
310
import { targets } from '../devServer/routers/targets';
411
import { handleAllEditorialNewslettersPage } from './handler.allEditorialNewslettersPage.web';
@@ -105,6 +112,12 @@ const renderer = Router();
105112
renderer.use(getContentFromURLMiddleware);
106113
renderer.use(getABTestsFromQueryParams);
107114
renderer.use(requestLoggerMiddleware);
115+
116+
renderer.use((req: Request, res: Response, next: NextFunction) => {
117+
res.setHeader('X-Gu-Target-Group', 'dev');
118+
next();
119+
});
120+
108121
renderer.get('/Article/*url', handleArticle);
109122
renderer.get('/Interactive/*url', handleInteractive);
110123
renderer.get('/Blocks/*url', handleBlocks);

dotcom-rendering/src/server/server.prod.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import compression from 'compression';
2-
import type { ErrorRequestHandler, Request, Response } from 'express';
2+
import type {
3+
ErrorRequestHandler,
4+
NextFunction,
5+
Request,
6+
Response,
7+
} from 'express';
38
import express from 'express';
49
import { NotRenderableInDCR } from '../lib/errors/not-renderable-in-dcr';
510
import { handleAllEditorialNewslettersPage } from './handler.allEditorialNewslettersPage.web';
@@ -41,6 +46,15 @@ export const prodServer = (): void => {
4146
app.use(requestLoggerMiddleware);
4247
app.use(compression());
4348

49+
app.use((req: Request, res: Response, next: NextFunction) => {
50+
// See https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-environment-variables.html
51+
const runningInECS =
52+
process.env.AWS_EXECUTION_ENV?.startsWith('AWS_ECS_') === true;
53+
54+
res.setHeader('X-Gu-Target-Group', runningInECS ? 'ecs' : 'ec2');
55+
next();
56+
});
57+
4458
app.get('/_healthcheck', (req: Request, res: Response) => {
4559
res.status(200).send('OKAY');
4660
});

0 commit comments

Comments
 (0)