@guardian/cdk 63.3.0 → 63.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/constructs/core/stack.js +1 -1
- package/lib/constructs/core/stack.js.map +1 -1
- package/lib/constructs/loadbalancing/alb/application-listener.d.ts +2 -2
- package/lib/constructs/loadbalancing/alb/application-listener.d.ts.map +1 -1
- package/lib/constructs/loadbalancing/alb/application-listener.js +1 -1
- package/lib/constructs/loadbalancing/alb/application-listener.js.map +1 -1
- package/lib/experimental/constructs/riff-raff-deployment-id.d.ts +8 -0
- package/lib/experimental/constructs/riff-raff-deployment-id.d.ts.map +1 -0
- package/lib/experimental/constructs/riff-raff-deployment-id.js +21 -0
- package/lib/experimental/constructs/riff-raff-deployment-id.js.map +1 -0
- package/lib/experimental/patterns/ec2-app.d.ts.map +1 -1
- package/lib/experimental/patterns/ec2-app.js +2 -15
- package/lib/experimental/patterns/ec2-app.js.map +1 -1
- package/lib/experimental/patterns/gu-load-balanced-app.d.ts +337 -0
- package/lib/experimental/patterns/gu-load-balanced-app.d.ts.map +1 -0
- package/lib/experimental/patterns/gu-load-balanced-app.js +451 -0
- package/lib/experimental/patterns/gu-load-balanced-app.js.map +1 -0
- package/lib/patterns/ec2-app/base.d.ts +10 -2
- package/lib/patterns/ec2-app/base.d.ts.map +1 -1
- package/lib/patterns/ec2-app/base.js +5 -1
- package/lib/patterns/ec2-app/base.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { Duration } from "aws-cdk-lib";
|
|
2
|
+
import type { BlockDevice, UpdatePolicy } from "aws-cdk-lib/aws-autoscaling";
|
|
3
|
+
import type { InstanceType, ISubnet, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
4
|
+
import { UserData } from "aws-cdk-lib/aws-ec2";
|
|
5
|
+
import { FargateService } from "aws-cdk-lib/aws-ecs";
|
|
6
|
+
import type { HealthCheck as ALBHealthCheck } from "aws-cdk-lib/aws-elasticloadbalancingv2";
|
|
7
|
+
import { Construct } from "constructs";
|
|
8
|
+
import { GuCertificate } from "../../constructs/acm";
|
|
9
|
+
import type { GuUserDataProps } from "../../constructs/autoscaling";
|
|
10
|
+
import { GuAutoScalingGroup } from "../../constructs/autoscaling";
|
|
11
|
+
import type { NoMonitoring } from "../../constructs/cloudwatch";
|
|
12
|
+
import type { GuStack } from "../../constructs/core";
|
|
13
|
+
import { AppIdentity } from "../../constructs/core";
|
|
14
|
+
import type { GuInstanceRoleProps } from "../../constructs/iam";
|
|
15
|
+
import { GuApplicationLoadBalancer, GuApplicationTargetGroup, GuHttpsApplicationListener, type WafProps } from "../../constructs/loadbalancing";
|
|
16
|
+
import type { Alarms, ApplicationLoggingProps } from "../../patterns";
|
|
17
|
+
import { AppAccess } from "../../types";
|
|
18
|
+
import type { GuAsgCapacity, GuDomainName } from "../../types";
|
|
19
|
+
import type { AmigoProps } from "../../types/amigo";
|
|
20
|
+
export interface GuLoadBalancedAppExperimentalProps extends AppIdentity {
|
|
21
|
+
/**
|
|
22
|
+
* Network access restrictions for your load balancer.
|
|
23
|
+
*
|
|
24
|
+
* Note, this merely provides defence in depth; you should NOT rely on network access restrictions alone for
|
|
25
|
+
* restricting access. Use Google Auth for human access, or a suitable machine auth mechanism.
|
|
26
|
+
*/
|
|
27
|
+
access: AppAccess;
|
|
28
|
+
/**
|
|
29
|
+
* The port your application runs on.
|
|
30
|
+
*/
|
|
31
|
+
applicationPort: number;
|
|
32
|
+
/**
|
|
33
|
+
* Enable access logging for this load balancer.
|
|
34
|
+
* Access logs are written to an S3 bucket within your AWS account.
|
|
35
|
+
* The bucket is created by {@link https://github.com/guardian/aws-account-setup}.
|
|
36
|
+
* The logs are queryable via the `gucdk_access_logs` Athena database.
|
|
37
|
+
*
|
|
38
|
+
* @defaultValue true
|
|
39
|
+
*/
|
|
40
|
+
withAccessLogging?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Enable and configure alarms.
|
|
43
|
+
*/
|
|
44
|
+
monitoringConfiguration: Alarms | NoMonitoring;
|
|
45
|
+
/**
|
|
46
|
+
* Specify certificate for the load balancer.
|
|
47
|
+
*/
|
|
48
|
+
certificateProps?: GuDomainName;
|
|
49
|
+
/**
|
|
50
|
+
* Specify the VPC to use.
|
|
51
|
+
*
|
|
52
|
+
* @see https://github.com/guardian/aws-account-setup
|
|
53
|
+
*/
|
|
54
|
+
vpc?: IVpc;
|
|
55
|
+
/**
|
|
56
|
+
* Specify private subnets if using a non-default VPC or (generally
|
|
57
|
+
* discouraged) to limit to a subset of the available subnets.
|
|
58
|
+
*/
|
|
59
|
+
privateSubnets?: ISubnet[];
|
|
60
|
+
/**
|
|
61
|
+
* Specify public subnets if using a non-default VPC or (generally
|
|
62
|
+
* discouraged) to limit to a subset of the available subnets.
|
|
63
|
+
*/
|
|
64
|
+
publicSubnets?: ISubnet[];
|
|
65
|
+
/**
|
|
66
|
+
* Configure Google Auth.
|
|
67
|
+
*/
|
|
68
|
+
googleAuth?: {
|
|
69
|
+
/**
|
|
70
|
+
* Enables Google Auth (via Cognito). **Additional MANUAL steps required -
|
|
71
|
+
* see below.**
|
|
72
|
+
*
|
|
73
|
+
* Limits access to members of the allowed Google groups.
|
|
74
|
+
*
|
|
75
|
+
* Note, this does not currently support simultaneous machine access, so
|
|
76
|
+
* only set to true if you only require staff access to your service, or are
|
|
77
|
+
* supporting machine access in some other way.
|
|
78
|
+
*
|
|
79
|
+
* MANUAL STEPS: to get this to work, we need a Google Project and
|
|
80
|
+
* associated credentials. Full instructions can be found here:
|
|
81
|
+
*
|
|
82
|
+
* https://docs.google.com/document/d/1_k1FSE52AZHXufWLTiKTI3xy5cGpziyHazSHTKrYfco/edit?usp=sharing
|
|
83
|
+
*
|
|
84
|
+
* DevX hope to automate this process in the near future.
|
|
85
|
+
*/
|
|
86
|
+
enabled: true;
|
|
87
|
+
/**
|
|
88
|
+
* The domain users will access your service.
|
|
89
|
+
*
|
|
90
|
+
* Set this to the same as for certificateProps.
|
|
91
|
+
*/
|
|
92
|
+
domain: string;
|
|
93
|
+
/**
|
|
94
|
+
* Groups used for membership checks.
|
|
95
|
+
*
|
|
96
|
+
* If specified, cannot be empty. Users must be a member of at least one
|
|
97
|
+
* group to gain access.
|
|
98
|
+
*
|
|
99
|
+
* WARNING: groups must be specified with the `guardian.co.uk` domain, even
|
|
100
|
+
* if that is the non-idiomatic choice for daily use.
|
|
101
|
+
*
|
|
102
|
+
* @defaultValue [`engineering@guardian.co.uk`]
|
|
103
|
+
*/
|
|
104
|
+
allowedGroups?: string[];
|
|
105
|
+
/**
|
|
106
|
+
* The number of minutes before the session expires.
|
|
107
|
+
*
|
|
108
|
+
* Set this value to a safe period of time that revoked users
|
|
109
|
+
* sessions will continue to function.
|
|
110
|
+
*
|
|
111
|
+
* NOTE: This value cannot be larger than 60 minutes.
|
|
112
|
+
*
|
|
113
|
+
* @defaultValue 15
|
|
114
|
+
*/
|
|
115
|
+
sessionTimeoutInMinutes?: number;
|
|
116
|
+
/**
|
|
117
|
+
* Secrets Manager path containing Google OAuth2 Client credentials.
|
|
118
|
+
*
|
|
119
|
+
* NOTE: you do not need to set this value, but you DO need to generate and
|
|
120
|
+
* store the associated credentials in Secrets Manager.
|
|
121
|
+
*
|
|
122
|
+
* Credentials should be stored in Secrets Manager as JSON:
|
|
123
|
+
*
|
|
124
|
+
* ```json
|
|
125
|
+
* {
|
|
126
|
+
* "clientId": "my-client-id",
|
|
127
|
+
* "clientSecret": "my-client-secret"
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @see `googleAuth.enabled` for how to generate.
|
|
132
|
+
*
|
|
133
|
+
* @defaultValue /:STAGE/:stack/:app/google-auth-credentials
|
|
134
|
+
*/
|
|
135
|
+
credentialsSecretsManagerPath?: string;
|
|
136
|
+
/**
|
|
137
|
+
* When using Auth in the ALB, which stage of cognito-lambda to use.
|
|
138
|
+
*
|
|
139
|
+
* For most applications this should always be PROD, even in the CODE environments.
|
|
140
|
+
*
|
|
141
|
+
* @defaultValue PROD
|
|
142
|
+
*/
|
|
143
|
+
cognitoAuthStage?: string;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Specify custom healthcheck
|
|
147
|
+
*/
|
|
148
|
+
healthcheck?: ALBHealthCheck;
|
|
149
|
+
/**
|
|
150
|
+
* You can specify if the arn of this load balancer should be exposed for protection via WAF
|
|
151
|
+
*
|
|
152
|
+
* If this value changes, it is only picked up on WAF configuration redeploy.
|
|
153
|
+
*
|
|
154
|
+
* NB this parameter setting _alone_ is not sufficient to protect the application.
|
|
155
|
+
* You must also ensure that the application and stage combination is present in the WAF
|
|
156
|
+
* configuration.
|
|
157
|
+
*
|
|
158
|
+
* See https://github.com/guardian/waf/tree/main/lib
|
|
159
|
+
*
|
|
160
|
+
* There is a "gotcha" when migrating to this functionality. You may not change only the Logical
|
|
161
|
+
* ID of an SSM Parameter (see https://docs.aws.amazon.com/cdk/v2/guide/identifiers.html) and the
|
|
162
|
+
* parameter name must be of the required form, meaning you cannot have an alternate name.
|
|
163
|
+
*
|
|
164
|
+
* You can either:
|
|
165
|
+
*
|
|
166
|
+
* Remove the old param and immediately redeploy with the new param (this does not affect
|
|
167
|
+
* protection unless and until the WAF configuration is redeployed)
|
|
168
|
+
*
|
|
169
|
+
* OR
|
|
170
|
+
*
|
|
171
|
+
* Create an escape hatch by overriding the logical id (see "ssm param escape hatch" test for example)
|
|
172
|
+
**/
|
|
173
|
+
waf?: WafProps;
|
|
174
|
+
/**
|
|
175
|
+
* If you want to use an AutoScaling Group with EC2 instances to serve requests, then pass in relevant props here.
|
|
176
|
+
*
|
|
177
|
+
* If you are setting both `ec2Props` and `ecsProps` (i.e. if you are migrating from EC2 to ECS) then you must also
|
|
178
|
+
* specify weights for each compute type using `targetGroupWeights`.
|
|
179
|
+
*/
|
|
180
|
+
ec2Props?: {
|
|
181
|
+
/**
|
|
182
|
+
* User data for the autoscaling group.
|
|
183
|
+
*/
|
|
184
|
+
userData: GuUserDataProps | UserData;
|
|
185
|
+
/**
|
|
186
|
+
* EC2 instance type. Note, ensure your code is built for the same
|
|
187
|
+
* architecture family (arm64 - 'Graviton' instances - or x64).
|
|
188
|
+
*/
|
|
189
|
+
instanceType: InstanceType;
|
|
190
|
+
/**
|
|
191
|
+
* Enable and configures application logs.
|
|
192
|
+
*/
|
|
193
|
+
applicationLogging?: ApplicationLoggingProps;
|
|
194
|
+
/**
|
|
195
|
+
* Configure IAM roles for autoscaling group EC2 instances.
|
|
196
|
+
*/
|
|
197
|
+
roleConfiguration?: GuInstanceRoleProps;
|
|
198
|
+
/**
|
|
199
|
+
* Add block devices (additional storage).
|
|
200
|
+
*/
|
|
201
|
+
blockDevices?: BlockDevice[];
|
|
202
|
+
/**
|
|
203
|
+
* Autoscaling group min and max sizes.
|
|
204
|
+
*/
|
|
205
|
+
scaling: GuAsgCapacity;
|
|
206
|
+
/**
|
|
207
|
+
* Configure AMIgo image recipe. This is only necessary if you are using GuCDK to generate your riff-raff.yaml file.
|
|
208
|
+
*/
|
|
209
|
+
imageRecipe?: string | AmigoProps;
|
|
210
|
+
/**
|
|
211
|
+
* Set http put response hop limit for the launch template.
|
|
212
|
+
* It can be necessary to raise this value from the default of 1
|
|
213
|
+
* for example when sharing the instance profile with a docker container running on the instance.
|
|
214
|
+
*/
|
|
215
|
+
instanceMetadataHopLimit?: number;
|
|
216
|
+
/**
|
|
217
|
+
* Specify an update policy for the ASG created by this pattern.
|
|
218
|
+
*
|
|
219
|
+
* @see https://docs.aws.amazon.com/cdk/api/latest/docs/aws-autoscaling-readme.html#update-policy
|
|
220
|
+
*
|
|
221
|
+
* @defaultValue UpdatePolicy.none() - Cloudformation does not attempt to rotate instances in the ASG
|
|
222
|
+
* and must rely on riffraff to do so.
|
|
223
|
+
*/
|
|
224
|
+
updatePolicy?: UpdatePolicy;
|
|
225
|
+
/**
|
|
226
|
+
* You can specify how long after an instance reaches the InService state it waits before contributing
|
|
227
|
+
* usage data to the aggregated metrics. This specified time is called the default instance warmup.
|
|
228
|
+
* This keeps dynamic scaling from being affected by metrics for individual instances that aren't yet
|
|
229
|
+
* handling application traffic and that might be experiencing temporarily high usage of compute resources.
|
|
230
|
+
*
|
|
231
|
+
* @see https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html
|
|
232
|
+
*/
|
|
233
|
+
defaultInstanceWarmup?: Duration;
|
|
234
|
+
/**
|
|
235
|
+
* How often to send EC2 metrics, such as CPU usage.
|
|
236
|
+
* By default, AWS will produce `5Minute` granular metrics.
|
|
237
|
+
*
|
|
238
|
+
* It is recommended to produce `1Minute` granular metrics in production,
|
|
239
|
+
* especially when using ASG metrics to trigger horizontal scaling as it allows for earlier scaling.
|
|
240
|
+
*
|
|
241
|
+
* @see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
|
|
242
|
+
*/
|
|
243
|
+
instanceMetricGranularity: "1Minute" | "5Minute";
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* If you want to use an ECS service and ECS tasks to serve requests, then pass in relevant props here.
|
|
247
|
+
*
|
|
248
|
+
* If you are setting both `ecsProps` and `ec2Props` (i.e. if you are migrating from EC2 to ECS) then you must also
|
|
249
|
+
* specify weights for each compute type using `targetGroupWeights`.
|
|
250
|
+
*/
|
|
251
|
+
ecsProps?: {
|
|
252
|
+
/**
|
|
253
|
+
* Which image to run.
|
|
254
|
+
* This should be the image digest (e.g. 'sha256:abc123') to ensure immutable deployments.
|
|
255
|
+
*
|
|
256
|
+
* @see https://docs.docker.com/dhi/core-concepts/digests
|
|
257
|
+
*/
|
|
258
|
+
imageIdentifier: string;
|
|
259
|
+
cpu: number;
|
|
260
|
+
memoryLimitMiB: number;
|
|
261
|
+
/**
|
|
262
|
+
* ECR repository name which contains your images. This defaults to the name of your GitHub repository as we
|
|
263
|
+
* expect there to be a one-to-one mapping between GitHub repositories and ECR repositories.
|
|
264
|
+
*/
|
|
265
|
+
repositoryName?: string;
|
|
266
|
+
/**
|
|
267
|
+
* The number of tasks that you want to run. We recommend running 3 tasks for production services which need a high
|
|
268
|
+
* level of availability so that all 3 Availability Zones are utilised.
|
|
269
|
+
*/
|
|
270
|
+
scaling: {
|
|
271
|
+
/**
|
|
272
|
+
* Scaling actions will never scale down below this threshold. This also controls the number of tasks that
|
|
273
|
+
* your ECS service will launch when it is first created.
|
|
274
|
+
*/
|
|
275
|
+
minimumTasks: number;
|
|
276
|
+
/**
|
|
277
|
+
* Scaling actions will never scale up above this threshold.
|
|
278
|
+
*
|
|
279
|
+
* Note that this max can be exceeded when a deployment runs (unlike the ASG max size). E.g. if maximumTasks is 6,
|
|
280
|
+
* the service is running 6 tasks and a deployment starts, the ECS service will briefly run with 12 tasks to get
|
|
281
|
+
* the deployment through.
|
|
282
|
+
*/
|
|
283
|
+
maximumTasks: number;
|
|
284
|
+
};
|
|
285
|
+
};
|
|
286
|
+
/**
|
|
287
|
+
* If you are specifying `ec2Props` and `ecsProps` use these weights to distribute traffic across the different compute
|
|
288
|
+
* types. The weights must sum to 999.
|
|
289
|
+
*/
|
|
290
|
+
targetGroupWeights?: {
|
|
291
|
+
ecs: number;
|
|
292
|
+
ec2: number;
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
interface TargetGroups {
|
|
296
|
+
ec2?: GuApplicationTargetGroup;
|
|
297
|
+
ecs?: GuApplicationTargetGroup;
|
|
298
|
+
}
|
|
299
|
+
export declare class GuLoadBalancedAppExperimental extends Construct {
|
|
300
|
+
/**
|
|
301
|
+
* The VPC that the pattern's load balancer, EC2 instances and/or ECS tasks are running in.
|
|
302
|
+
*/
|
|
303
|
+
readonly vpc: IVpc;
|
|
304
|
+
/**
|
|
305
|
+
* The certificate associated with your load balancer. This will only be available if `certificateProps` were
|
|
306
|
+
* passed in.
|
|
307
|
+
*/
|
|
308
|
+
readonly certificate?: GuCertificate;
|
|
309
|
+
/**
|
|
310
|
+
* The application load balancer that this pattern creates.
|
|
311
|
+
*/
|
|
312
|
+
readonly loadBalancer: GuApplicationLoadBalancer;
|
|
313
|
+
/**
|
|
314
|
+
* The AutoScaling Group that this pattern creates. This will only be available if `ec2Props` are specified.
|
|
315
|
+
*/
|
|
316
|
+
readonly autoScalingGroup?: GuAutoScalingGroup;
|
|
317
|
+
/**
|
|
318
|
+
* The ECS Service that this pattern creates. This will only be available if `ecsProps` are specified.
|
|
319
|
+
*/
|
|
320
|
+
readonly ecsService?: FargateService;
|
|
321
|
+
/**
|
|
322
|
+
* The load balancer listener that this pattern creates.
|
|
323
|
+
*/
|
|
324
|
+
readonly listener: GuHttpsApplicationListener;
|
|
325
|
+
/**
|
|
326
|
+
* The target groups capable of serving traffic routed to this pattern.
|
|
327
|
+
*
|
|
328
|
+
* If `ec2Props` were passed in but `ecsProps` were not, there will be a single EC2 target group.
|
|
329
|
+
* Similarly, if `ecsProps` were passed in but `ec2Props` were not, there will be a single ECS target group.
|
|
330
|
+
* If both `ec2Props` and `ecsProps` were passed in (e.g. during a migration) then both target groups will be
|
|
331
|
+
* available.
|
|
332
|
+
*/
|
|
333
|
+
readonly targetGroups: TargetGroups;
|
|
334
|
+
constructor(scope: GuStack, props: GuLoadBalancedAppExperimentalProps);
|
|
335
|
+
}
|
|
336
|
+
export {};
|
|
337
|
+
//# sourceMappingURL=gu-load-balanced-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gu-load-balanced-app.d.ts","sourceRoot":"","sources":["../../../src/experimental/patterns/gu-load-balanced-app.ts"],"names":[],"mappings":"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"}
|