Releases: guardian/cdk
v59.5.1
Patch Changes
-
fed2598: fix(experimental-ec2-pattern): Add buffer to rolling update timeout
If we consider the health check grace period to be the time it takes the "normal" user data to run,
the rolling update should be configured to be a little longer to cover the additional time spent polling the target group.A buffer of 1 minute is somewhat arbitrarily chosen.
Too high a value, then we increase the time it takes to automatically rollback from a failing healthcheck.
Too low a value, then we risk flaky deploys.
v59.5.0
Minor Changes
feat(experimental-ec2-pattern): Pattern to deploy ASG updates w/CFN (#2417)
Included in this update is a new experimental pattern GuEc2AppExperimental
, which can be used in place of a GuEc2App
:
import { GuEc2AppExperimental } from "@guardian/cdk/lib/experimental/patterns/ec2-app";
This pattern will add an AutoScalingRollingUpdate
policy to the autoscaling group.This allows application updates to be performed like a standard CloudFormation update, and using the custom logic provided by Riff-Raff's autoscaling
deployment type is unnecessary.
This experimental pattern has few requirements.
Add the build number to the application artifact
This change requires versioned artifacts.
The easiest way to achieve this is by adding the build number to the filename of the artifact:
import { UserData } from "aws-cdk-lib/aws-ec2";
// Use a GitHub Actions provided environment variable
const buildNumber = process.env.GITHUB_RUN_NUMBER ?? "DEV";
const userData = UserData.forLinux();
userData.addCommands(`aws s3 cp s3://dist-bucket/path/to/artifact-${buildNumber}.deb /tmp/artifact.deb`);
userData.addCommands(`dpkg -i /tmp/artifact.dep`);
riff-raff.yaml
The riff-raff.yaml
file should remove the deploy
action of the autoscaling
deployment type.
Though including it shouldn't break anything, it would result in a longer deployment time as instance will be rotated by both CloudFormation and Riff-Raff's custom logic.
The uploadArtifacts
step of the autoscaling
deployment type should still be included, with the cloud-formation
deployment type depending on it. This step uploads the versioned artifact to S3.
Tip
An auto-generated riff-raff.yaml
file meets this requirement.
v59.4.0
Minor Changes
-
43dc653: feat(asg) Collect all ASG level metrics
This change should have no cost impact:
Group metrics are available at one-minute granularity at no additional charge, but you must enable them.
– https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-metrics.html.If it does, or if you only want a subset, the escape hatch mechanism can be used:
declare const asg: AutoScalingGroup; const cfnAsg = asg.node.defaultChild as CfnAutoScalingGroup; cfnAsg.metricsCollection = [ { granularity: "1Minute", metrics: [ // A subset of metrics ], }, ];