Skip to content

AnomalySubscription ​

The AnomalySubscription resource allows you to create and manage AWS Cost Explorer Anomaly Subscriptions for monitoring cost anomalies in your AWS account. For more details, refer to the AWS CE AnomalySubscriptions documentation.

Minimal Example ​

Create a basic AnomalySubscription with the required properties and one optional property.

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

const basicAnomalySubscription = await AWS.CE.AnomalySubscription("basicAnomalySubscription", {
  MonitorArnList: [
    "arn:aws:ce::123456789012:monitor:example-monitor"
  ],
  Frequency: "DAILY",
  SubscriptionName: "DailyCostAnomalyAlert",
  Subscribers: [
    {
      Address: "alert@example.com",
      Type: "EMAIL"
    }
  ]
});

Advanced Configuration ​

Configure an AnomalySubscription with additional options such as resource tags and a threshold.

ts
const advancedAnomalySubscription = await AWS.CE.AnomalySubscription("advancedAnomalySubscription", {
  MonitorArnList: [
    "arn:aws:ce::123456789012:monitor:example-monitor"
  ],
  ResourceTags: [
    {
      Key: "Environment",
      Value: "Production"
    }
  ],
  Frequency: "WEEKLY",
  SubscriptionName: "WeeklyCostAnomalyAlert",
  Subscribers: [
    {
      Address: "dev-team@example.com",
      Type: "EMAIL"
    }
  ],
  Threshold: 100,
  ThresholdExpression: "GreaterThan"
});

Using Multiple Subscribers ​

Demonstrate how to set up an AnomalySubscription with multiple subscribers to receive notifications.

ts
const multiSubscriberAnomalySubscription = await AWS.CE.AnomalySubscription("multiSubscriberAnomalySubscription", {
  MonitorArnList: [
    "arn:aws:ce::123456789012:monitor:example-monitor"
  ],
  Frequency: "DAILY",
  SubscriptionName: "TeamCostAnomalyAlerts",
  Subscribers: [
    {
      Address: "team-lead@example.com",
      Type: "EMAIL"
    },
    {
      Address: "devops-team@example.com",
      Type: "EMAIL"
    }
  ],
  Threshold: 50
});

Adopting Existing Resources ​

Create an AnomalySubscription that adopts an existing resource if it already exists.

ts
const adoptExistingAnomalySubscription = await AWS.CE.AnomalySubscription("adoptExistingAnomalySubscription", {
  MonitorArnList: [
    "arn:aws:ce::123456789012:monitor:example-monitor"
  ],
  Frequency: "MONTHLY",
  SubscriptionName: "MonthlyCostAnomalyAdoption",
  Subscribers: [
    {
      Address: "alert-team@example.com",
      Type: "EMAIL"
    }
  ],
  adopt: true
});