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.