Skip to main content

Deploy AWS Synthetics Canary using a local script

Example to deploy an AWS synthetics canary.

This example lives in the pulumi/examples repository. Check out just this directory to use it:

Get started with this example
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set aws-ts-synthetics-canary
cd pulumi-examples/aws-ts-synthetics-canary

An example of deploying an AWS Synthetics Canary using a script stored locally.

This example does the following:

  1. Zips up a colocated canary script.
  2. Pushes the zip file to an S3 bucket.
  3. Creates an IAM role and policy for the canary.
  4. Deploys the canary.

The canary used in this example is a simple no-op script that writes a message. See Writing Canary Scripts for details regarding canary directory structure and naming conventions. There are some prebaked canary scripts for doing things like checking an API or a link that can be found on AWS.

Prerequisites#

  1. Install Pulumi
  2. Configure AWS credentials
  3. Install Node.js

Deploying the example#

  1. Create a new stack:

    Terminal window
    pulumi stack init dev
  2. Set the AWS region:

    Terminal window
    pulumi config set aws:region us-east-1
  3. Install dependencies:

    Terminal window
    npm install
  4. Run pulumi up to preview and deploy changes:

    Terminal window
    pulumi up
    Previewing update (dev)
    ...
    Updating (dev)
    View Live: https://app.pulumi.com/acmecorp/aws-synthetics-canary/dev/updates/1
    Type Name Status
    + pulumi:pulumi:Stack aws-synthetics-canary-dev created
    + ├─ aws:s3:Bucket canary-results created
    + ├─ aws:s3:Bucket canary-scripts created
    + ├─ aws:iam:Role canary-exec-role created
    + ├─ aws:iam:RolePolicy canary-exec-policy created
    + ├─ aws:s3:BucketObjectv2 canary-simple-canary created
    + └─ aws:synthetics:Canary canary-simple created
    Outputs:
    canaryName : "canary-simple-a4a3974"
    canaryNameArn: "arn:aws:synthetics:us-east-1:052848974346:canary:canary-simple-a4a3974"

Cleaning up#

Once you’re done, destroy the resources and remove the stack:

Terminal window
pulumi destroy
pulumi stack rm

Note: Until https://github.com/hashicorp/terraform-provider-aws/issues/19288 is addressed, the Canary’s lambda function and related layers are left after the stack is destroyed, so you will want to manually clean up these items.

Related

The infrastructure as code platform for any cloud.