Skip to content

Canary

The Canary resource allows you to create and manage AWS Synthetics Canarys that enable you to monitor your applications by running scripts that simulate user interactions.

Minimal Example

Create a basic Canary with required properties and a few common optional settings.

ts
import AWS from "alchemy/aws/control";

const basicCanary = await AWS.Synthetics.Canary("basicCanary", {
  name: "MyBasicCanary",
  runtimeVersion: "syn-nodejs-2.0",
  code: {
    handler: "index.handler",
    s3Bucket: "my-synthetics-bucket",
    s3Key: "canary-script.zip"
  },
  schedule: {
    expression: "rate(5 minutes)"
  },
  successRetentionPeriod: 30,
  failureRetentionPeriod: 30
});

Advanced Configuration

Configure a Canary with advanced options like VPC settings and detailed run configurations.

ts
const advancedCanary = await AWS.Synthetics.Canary("advancedCanary", {
  name: "MyAdvancedCanary",
  runtimeVersion: "syn-nodejs-2.0",
  code: {
    handler: "index.handler",
    s3Bucket: "my-synthetics-bucket",
    s3Key: "advanced-canary-script.zip"
  },
  schedule: {
    expression: "rate(10 minutes)"
  },
  vpcConfig: {
    vpcId: "vpc-12345678",
    subnetIds: ["subnet-12345678"],
    securityGroupIds: ["sg-12345678"]
  },
  runConfig: {
    timeoutInSeconds: 60,
    memoryInMB: 128
  },
  successRetentionPeriod: 60,
  failureRetentionPeriod: 60
});

Using Visual References

Create a Canary that includes visual references for monitoring changes in UI.

ts
const visualCanary = await AWS.Synthetics.Canary("visualCanary", {
  name: "MyVisualCanary",
  runtimeVersion: "syn-nodejs-2.0",
  code: {
    handler: "index.handler",
    s3Bucket: "my-synthetics-bucket",
    s3Key: "visual-canary-script.zip"
  },
  schedule: {
    expression: "rate(15 minutes)"
  },
  visualReference: {
    baseScreenshot: {
      s3Bucket: "my-synthetics-screenshots",
      s3Key: "reference-screenshot.png"
    }
  },
  successRetentionPeriod: 7,
  failureRetentionPeriod: 7
});

Cleanup of Provisioned Resources

Configure a Canary to automatically clean up provisioned resources after execution.

ts
const cleanupCanary = await AWS.Synthetics.Canary("cleanupCanary", {
  name: "MyCleanupCanary",
  runtimeVersion: "syn-nodejs-2.0",
  code: {
    handler: "index.handler",
    s3Bucket: "my-synthetics-bucket",
    s3Key: "cleanup-canary-script.zip"
  },
  schedule: {
    expression: "rate(30 minutes)"
  },
  provisionedResourceCleanup: "true",
  successRetentionPeriod: 14,
  failureRetentionPeriod: 14
});

This documentation provides a comprehensive guide on how to effectively use AWS Synthetics Canarys in your projects with Alchemy.