Skip to content

Dimension

The Dimension resource allows you to manage AWS IoT Dimensions that help in categorizing and filtering IoT data streams effectively.

Minimal Example

This example demonstrates how to create a basic IoT Dimension with required properties and a common optional tag.

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

const basicDimension = await AWS.IoT.Dimension("basicDimension", {
  Type: "string",
  StringValues: ["sensor", "device", "location"],
  Tags: [
    {
      Key: "Environment",
      Value: "Production"
    }
  ]
});

Advanced Configuration

In this example, we create an IoT Dimension with additional properties including a unique name and multiple string values.

ts
const advancedDimension = await AWS.IoT.Dimension("advancedDimension", {
  Type: "string",
  StringValues: ["temperature", "humidity", "pressure"],
  Name: "EnvironmentalParameters",
  Tags: [
    {
      Key: "Application",
      Value: "WeatherMonitoring"
    },
    {
      Key: "Department",
      Value: "Research"
    }
  ]
});

Adoption of Existing Resource

This example demonstrates how to adopt an existing IoT Dimension instead of failing when the resource already exists.

ts
const adoptedDimension = await AWS.IoT.Dimension("adoptedDimension", {
  Type: "string",
  StringValues: ["existingValue"],
  adopt: true // This will adopt the existing dimension if it exists
});

Using Dimensions in IoT Rules

Here’s how to reference an IoT Dimension within an IoT Rule to filter messages based on dimension values.

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

const iotRule = await AWS.IoT.Rule("temperatureAlertRule", {
  RuleName: "TemperatureAlert",
  Sql: "SELECT * FROM 'sensor/temperature' WHERE dimension = 'high'",
  Actions: [
    {
      Lambda: {
        FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:alertFunction"
      }
    }
  ],
  Tags: [
    {
      Key: "Status",
      Value: "Active"
    }
  ]
});