Skip to content

Association ​

The Association resource lets you create, update, and manage AWS SSM Associations which define a set of actions to be performed on specified managed instances.

Minimal Example ​

Create a basic SSM Association that specifies a document to be executed on a single instance.

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

const association = await AWS.SSM.Association("basicAssociation", {
  name: "AWS-RunShellScript",
  instanceId: "i-0abcd1234efgh5678",
  parameters: {
    commands: ["echo 'Hello, World!'"]
  }
});

Advanced Configuration ​

Configure an SSM Association with a schedule expression and additional parameters for enhanced functionality.

ts
const scheduledAssociation = await AWS.SSM.Association("scheduledAssociation", {
  name: "AWS-RunShellScript",
  instanceId: "i-0abcd1234efgh5678",
  parameters: {
    commands: ["echo 'Scheduled Task Executed'"]
  },
  scheduleExpression: "cron(0 12 * * ? *)", // Every day at 12 PM UTC
  complianceSeverity: "CRITICAL",
  maxErrors: "1",
  maxConcurrency: "50%"
});

Using Targets ​

Create an SSM Association that targets multiple instances based on specified criteria.

ts
const targetAssociation = await AWS.SSM.Association("targetAssociation", {
  name: "AWS-RunShellScript",
  targets: [
    {
      key: "tag:Environment",
      values: ["Production"]
    }
  ],
  parameters: {
    commands: ["echo 'Executed on Production Instances'"]
  }
});

Output Location Configuration ​

Set up an SSM Association with an output location to store results of the command execution.

ts
const outputLocationAssociation = await AWS.SSM.Association("outputLocationAssociation", {
  name: "AWS-RunShellScript",
  instanceId: "i-0abcd1234efgh5678",
  parameters: {
    commands: ["echo 'Output is being stored'"]
  },
  outputLocation: {
    S3Location: {
      outputS3BucketName: "my-ssm-output-bucket",
      outputS3KeyPrefix: "ssm-output/"
    }
  }
});