AWS Fundamentals Logo
AWS Fundamentals
L2 Construct

Canary

Define a new Canary.

Import

import { Canary } from 'aws-cdk-lib/aws-synthetics';

Or use the module namespace:

import * as synthetics from 'aws-cdk-lib/aws-synthetics';
// synthetics.Canary

Properties

Configuration passed to the constructor as CanaryProps.

runtimeRequired
Runtime

Specify the runtime version to use for the canary.

testRequired
Test

The type of test that you want your canary to run. Use `Test.custom()` to specify the test to run.

activeTracingOptional
boolean

Specifies whether this canary is to use active AWS X-Ray tracing when it runs. Active tracing enables this canary run to be displayed in the ServiceLens and X-Ray service maps even if the canary does not hit an endpoint that has X-Ray tracing enabled. Using X-Ray tracing incurs charges. You can enable active tracing only for canaries that use version `syn-nodejs-2.0` or later for their canary runtime.

Default: false

artifactS3EncryptionModeOptional
ArtifactsEncryptionMode

Canary Artifacts in S3 encryption mode. Artifact encryption is only supported for canaries that use Synthetics runtime version `syn-nodejs-puppeteer-3.3` or later.

Default: - Artifacts are encrypted at rest using an AWS managed key. `ArtifactsEncryptionMode.KMS` is set if you specify `artifactS3KmsKey`.

artifactS3KmsKeyOptional
IKey

The KMS key used to encrypt canary artifacts.

Default: - no kms key if `artifactS3EncryptionMode` is set to `S3_MANAGED`. A key will be created if one is not provided and `artifactS3EncryptionMode` is set to `KMS`.

artifactsBucketLifecycleRulesOptional
LifecycleRule[]

Lifecycle rules for the generated canary artifact bucket. Has no effect if a bucket is passed to `artifactsBucketLocation`. If you pass a bucket to `artifactsBucketLocation`, you can add lifecycle rules to the bucket itself.

Default: - no rules applied to the generated bucket.

artifactsBucketLocationOptional
ArtifactsBucketLocation

The s3 location that stores the data of the canary runs.

Default: - A new s3 bucket will be created without a prefix.

browserConfigsOptional
BrowserType[]

Browser configurations for the canary. Specifies which browser(s) to use for running the canary tests. You can specify up to 2 browser configurations. Firefox is supported with Node.js Puppeteer and Playwright runtimes, but not with Python Selenium runtimes.

Default: undefined - AWS CloudWatch default is using only Chrome browser

canaryNameOptional
string

The name of the canary. Be sure to give it a descriptive name that distinguishes it from other canaries in your account. Do not include secrets or proprietary information in your canary name. The canary name makes up part of the canary ARN, which is included in outbound calls over the internet.

Default: - A unique name will be generated from the construct ID

cleanupOptionalDeprecated
Cleanup

Specify the underlying resources to be cleaned up when the canary is deleted. Using `Cleanup.LAMBDA` will create a Custom Resource to achieve this.

Default: Cleanup.NOTHING

Deprecated: use provisionedResourceCleanup

dryRunAndUpdateOptional
boolean

Specifies whether to perform a dry run before updating the canary. If set to true, CDK will execute a dry run to validate the changes before applying them to the canary. If the dry run succeeds, the canary will be updated with the changes. If the dry run fails, the CloudFormation deployment will fail with the dry run's failure reason. If set to false or omitted, the canary will be updated directly without first performing a dry run.

Default: undefined - AWS CloudWatch default is false

environmentVariablesOptional
{ [key: string]: string }

Key-value pairs that the Synthetics caches and makes available for your canary scripts. Use environment variables to apply configuration changes, such as test and production environment configurations, without changing your Canary script source code.

Default: - No environment variables.

failureRetentionPeriodOptional
Duration

How many days should failed runs be retained.

Default: Duration.days(31)

maxRetriesOptional
number

The amount of times the canary will automatically retry a failed run. This is only supported on the following runtimes or newer: `Runtime.SYNTHETICS_NODEJS_PUPPETEER_10_0`, `Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_2_0`, `Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1`. Max retries can be set between 0 and 2. Canaries which time out after 10 minutes are automatically limited to one retry.

Default: 0

memoryOptional
Size

The maximum amount of memory that the canary can use while running. This value must be a multiple of 64 Mib. The range is 960 MiB to 3008 MiB.

Default: Size.mebibytes(1024)

provisionedResourceCleanupOptional
boolean

Whether to also delete the Lambda functions and layers used by this canary when the canary is deleted.

Default: undefined - the default behavior is to not delete the Lambda functions and layers

resourcesToReplicateTagsOptional
ResourceToReplicateTags[]

Specifies which resources should have their tags replicated to this canary. To have the tags that you apply to this canary also be applied to the Lambda function that the canary uses, specify this property with the value ResourceToReplicateTags.LAMBDA_FUNCTION. If you do this, CloudWatch Synthetics will keep the tags of the canary and the Lambda function synchronized. Any future changes you make to the canary's tags will also be applied to the function.

Default: - No resources will have their tags replicated to this canary

roleOptional
IRole

Canary execution role. This is the role that will be assumed by the canary upon execution. It controls the permissions that the canary will have. The role must be assumable by the AWS Lambda service principal. If not supplied, a role will be created with all the required permissions. If you provide a Role, you must add the required permissions.

Default: - A unique role will be generated for this canary. You can add permissions to roles by calling 'addToRolePolicy'.

scheduleOptional
Schedule

Specify the schedule for how often the canary runs. For example, if you set `schedule` to `rate(10 minutes)`, then the canary will run every 10 minutes. You can set the schedule with `Schedule.rate(Duration)` (recommended) or you can specify an expression using `Schedule.expression()`.

Default: 'rate(5 minutes)'

securityGroupsOptional
ISecurityGroup[]

The list of security groups to associate with the canary's network interfaces. You must provide `vpc` when using this prop.

Default: - If the canary is placed within a VPC and a security group is not specified a dedicated security group will be created for this canary.

startAfterCreationOptional
boolean

Whether or not the canary should start after creation.

Default: true

successRetentionPeriodOptional
Duration

How many days should successful runs be retained.

Default: Duration.days(31)

timeoutOptional
Duration

How long the canary is allowed to run before it must stop. You can't set this time to be longer than the frequency of the runs of this canary. The minimum allowed value is 3 seconds. The maximum allowed value is 840 seconds (14 minutes).

Default: - the frequency of the canary is used as this value, up to a maximum of 900 seconds.

timeToLiveOptional
Duration

How long the canary will be in a 'RUNNING' state. For example, if you set `timeToLive` to be 1 hour and `schedule` to be `rate(10 minutes)`, your canary will run at 10 minute intervals for an hour, for a total of 6 times.

Default: - no limit

vpcOptional
IVpc

The VPC where this canary is run. Specify this if the canary needs to access resources in a VPC.

Default: - Not in VPC

vpcSubnetsOptional
SubnetSelection

Where to place the network interfaces within the VPC. You must provide `vpc` when using this prop.

Default: - the Vpc default strategy if not specified

Learn AWS the Practical Way

Our bi-weekly newsletter teaches hands-on AWS fundamentals. No certification fluff - just practical knowledge.

Subscribe to Newsletter

Quick Facts

LevelL2 (Higher-level)
Moduleaws-synthetics
Properties26

Related Constructs

External Links