Skip to content

Commit cb3769f

Browse files
committed
Update apps-rendering user data to new API
1 parent a967f2f commit cb3769f

File tree

1 file changed

+36
-26
lines changed

1 file changed

+36
-26
lines changed

apps-rendering/cdk/lib/mobile-apps-rendering.ts

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@ import type { GuAsgCapacity } from '@guardian/cdk/lib/types';
77
import type { App, CfnElement } from 'aws-cdk-lib';
88
import { Duration } from 'aws-cdk-lib';
99
import type { InstanceSize } from 'aws-cdk-lib/aws-ec2';
10-
import { InstanceClass, InstanceType, Peer } from 'aws-cdk-lib/aws-ec2';
10+
import {
11+
InstanceClass,
12+
InstanceType,
13+
Peer,
14+
UserData,
15+
} from 'aws-cdk-lib/aws-ec2';
1116
import {
1217
HostedZone,
1318
RecordSet,
@@ -46,6 +51,35 @@ export class MobileAppsRendering extends GuStack {
4651
'/account/services/artifact.bucket',
4752
);
4853

54+
const userData = UserData.forLinux();
55+
userData.addCommands(
56+
`#!/bin/bash -ev`,
57+
`groupadd mapi`,
58+
`useradd -r -m -s /usr/bin/nologin -g mapi ${appName}`,
59+
60+
`export App=${appName}`,
61+
`export Stack=${this.stack}`,
62+
`export Stage=${this.stage}`,
63+
`export NODE_ENV=production`,
64+
65+
`aws s3 cp s3://${artifactBucketName}/${this.stack}/${this.stage}/${appName}/${appName}.zip /tmp`,
66+
`mkdir -p /opt/${appName}`,
67+
`unzip /tmp/${appName}.zip -d /opt/${appName}`,
68+
`chown -R ${appName}:mapi /opt/${appName}`,
69+
70+
`mkdir -p /usr/share/${appName}/logs`,
71+
`chown -R ${appName}:mapi /usr/share/${appName}`,
72+
`ln -s /usr/share/${appName}/logs /var/log/${appName}`,
73+
`chown -R ${appName}:mapi /var/log/${appName}`,
74+
75+
`export PM2_HOME="/usr/share/${appName}"`,
76+
`export ASSETS_MANIFEST="/opt/${appName}/manifest.json"`,
77+
78+
`/usr/local/node/pm2 start --name ${appName} --uid ${appName} --gid mapi /opt/${appName}/server.js`,
79+
`/opt/aws-kinesis-agent/configure-aws-kinesis-agent ${this.region} mobile-log-aggregation-${this.stage} '/var/log/${appName}/*'`,
80+
`/usr/local/node/pm2 logrotate -u ${appName}`,
81+
);
82+
4983
const appsRenderingApp = new GuEc2App(this, {
5084
applicationPort: 3040,
5185
app: 'mobile-apps-rendering',
@@ -72,31 +106,7 @@ export class MobileAppsRendering extends GuStack {
72106
}),
73107
],
74108
},
75-
userData: `#!/bin/bash -ev
76-
groupadd mapi
77-
useradd -r -m -s /usr/bin/nologin -g mapi ${appName}
78-
79-
export App=${appName}
80-
export Stack=${this.stack}
81-
export Stage=${this.stage}
82-
export NODE_ENV=production
83-
84-
aws s3 cp s3://${artifactBucketName}/${this.stack}/${this.stage}/${appName}/${appName}.zip /tmp
85-
mkdir -p /opt/${appName}
86-
unzip /tmp/${appName}.zip -d /opt/${appName}
87-
chown -R ${appName}:mapi /opt/${appName}
88-
89-
mkdir -p /usr/share/${appName}/logs
90-
chown -R ${appName}:mapi /usr/share/${appName}
91-
ln -s /usr/share/${appName}/logs /var/log/${appName}
92-
chown -R ${appName}:mapi /var/log/${appName}
93-
94-
export PM2_HOME="/usr/share/${appName}"
95-
export ASSETS_MANIFEST="/opt/${appName}/manifest.json"
96-
97-
/usr/local/node/pm2 start --name ${appName} --uid ${appName} --gid mapi /opt/${appName}/server.js
98-
/opt/aws-kinesis-agent/configure-aws-kinesis-agent ${this.region} mobile-log-aggregation-${this.stage} '/var/log/${appName}/*'
99-
/usr/local/node/pm2 logrotate -u ${appName}`,
109+
userData,
100110
scaling: props.asgCapacity,
101111
});
102112

0 commit comments

Comments
 (0)