Get a detailed overview of this resourceList the top 5 use cases for this resourceBuild a program using aws.costexplorer.AnomalySubscriptionRepositoryAWS Classic pulumi/pulumi-awsLicenseApache-2.0NotesThis Pulumi package is based on the aws Terraform Provider.
AWS v7.32.0, May 29 26
AWS v7.32.0, May 29 26
Viewing docs for AWS v7.32.0
published on Friday, May 29, 2026 by Pulumi
v7.32.0 (7.x, latest)v6.83.1 (6.x)v5.43.0 (5.x)
aws.costexplorer.AnomalySubscription Anchor
Explore with Neo
Explain this resource Show real-world scenarios Provision a new instance
Viewing docs for AWS v7.32.0
published on Friday, May 29, 2026 by Pulumi
v7.32.0 (7.x, latest)v6.83.1 (6.x)v5.43.0 (5.x)
On this page
On this page
Copy Page
[Scroll to top](/content/registry/packages/aws/api-docs/costexplorer/anomalysubscription/# "Scroll to top"/index.html)
Provides a CE Anomaly Subscription.
Example Usage Anchor
Basic Example Anchor
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.costexplorer.AnomalyMonitor("test", {
name: "AWSServiceMonitor",
monitorType: "DIMENSIONAL",
monitorDimension: "SERVICE",
});
const testAnomalySubscription = new aws.costexplorer.AnomalySubscription("test", {
name: "DAILYSUBSCRIPTION",
frequency: "DAILY",
monitorArnLists: [test.arn],
subscribers: [{\
type: "EMAIL",\
address: "abc@example.com",\
}],
thresholdExpression: {
dimension: {
key: "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
matchOptions: ["GREATER_THAN_OR_EQUAL"],
values: ["100"],
},
},
});
Copy
import pulumi
import pulumi_aws as aws
test = aws.costexplorer.AnomalyMonitor("test",
name="AWSServiceMonitor",
monitor_type="DIMENSIONAL",
monitor_dimension="SERVICE")
test_anomaly_subscription = aws.costexplorer.AnomalySubscription("test",
name="DAILYSUBSCRIPTION",
frequency="DAILY",
monitor_arn_lists=[test.arn],
subscribers=[{\
"type": "EMAIL",\
"address": "abc@example.com",\
}],
threshold_expression={
"dimension": {
"key": "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
"match_options": ["GREATER_THAN_OR_EQUAL"],
"values": ["100"],
},
})
Copy
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/costexplorer"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
test, err := costexplorer.NewAnomalyMonitor(ctx, "test", &costexplorer.AnomalyMonitorArgs{
Name: pulumi.String("AWSServiceMonitor"),
MonitorType: pulumi.String("DIMENSIONAL"),
MonitorDimension: pulumi.String("SERVICE"),
})
if err != nil {
return err
}
_, err = costexplorer.NewAnomalySubscription(ctx, "test", &costexplorer.AnomalySubscriptionArgs{
Name: pulumi.String("DAILYSUBSCRIPTION"),
Frequency: pulumi.String("DAILY"),
MonitorArnLists: pulumi.StringArray{
test.Arn,
},
Subscribers: costexplorer.AnomalySubscriptionSubscriberArray{
&costexplorer.AnomalySubscriptionSubscriberArgs{
Type: pulumi.String("EMAIL"),
Address: pulumi.String("abc@example.com"),
},
},
ThresholdExpression: &costexplorer.AnomalySubscriptionThresholdExpressionArgs{
Dimension: &costexplorer.AnomalySubscriptionThresholdExpressionDimensionArgs{
Key: pulumi.String("ANOMALY_TOTAL_IMPACT_ABSOLUTE"),
MatchOptions: pulumi.StringArray{
pulumi.String("GREATER_THAN_OR_EQUAL"),
},
Values: pulumi.StringArray{
pulumi.String("100"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var test = new Aws.CostExplorer.AnomalyMonitor("test", new()
{
Name = "AWSServiceMonitor",
MonitorType = "DIMENSIONAL",
MonitorDimension = "SERVICE",
});
var testAnomalySubscription = new Aws.CostExplorer.AnomalySubscription("test", new()
{
Name = "DAILYSUBSCRIPTION",
Frequency = "DAILY",
MonitorArnLists = new[]
{
test.Arn,
},
Subscribers = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionSubscriberArgs
{
Type = "EMAIL",
Address = "abc@example.com",
},
},
ThresholdExpression = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionArgs
{
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionDimensionArgs
{
Key = "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
MatchOptions = new[]
{
"GREATER_THAN_OR_EQUAL",
},
Values = new[]
{
"100",
},
},
},
});
});
Copy
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.costexplorer.AnomalyMonitor;
import com.pulumi.aws.costexplorer.AnomalyMonitorArgs;
import com.pulumi.aws.costexplorer.AnomalySubscription;
import com.pulumi.aws.costexplorer.AnomalySubscriptionArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionDimensionArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var test = new AnomalyMonitor("test", AnomalyMonitorArgs.builder()
.name("AWSServiceMonitor")
.monitorType("DIMENSIONAL")
.monitorDimension("SERVICE")
.build());
var testAnomalySubscription = new AnomalySubscription("testAnomalySubscription", AnomalySubscriptionArgs.builder()
.name("DAILYSUBSCRIPTION")
.frequency("DAILY")
.monitorArnLists(test.arn())
.subscribers(AnomalySubscriptionSubscriberArgs.builder()
.type("EMAIL")
.address("abc@example.com")
.build())
.thresholdExpression(AnomalySubscriptionThresholdExpressionArgs.builder()
.dimension(AnomalySubscriptionThresholdExpressionDimensionArgs.builder()
.key("ANOMALY_TOTAL_IMPACT_ABSOLUTE")
.matchOptions("GREATER_THAN_OR_EQUAL")
.values("100")
.build())
.build())
.build());
}
}
Copy
resources:
test:
type: aws:costexplorer:AnomalyMonitor
properties:
name: AWSServiceMonitor
monitorType: DIMENSIONAL
monitorDimension: SERVICE
testAnomalySubscription:
type: aws:costexplorer:AnomalySubscription
name: test
properties:
name: DAILYSUBSCRIPTION
frequency: DAILY
monitorArnLists:
- ${test.arn}
subscribers:
- type: EMAIL
address: abc@example.com
thresholdExpression:
dimension:
key: ANOMALY_TOTAL_IMPACT_ABSOLUTE
matchOptions:
- GREATER_THAN_OR_EQUAL
values:
- '100'
Copy
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
resource "aws_costexplorer_anomalymonitor" "test" {
name = "AWSServiceMonitor"
monitor_type = "DIMENSIONAL"
monitor_dimension = "SERVICE"
}
resource "aws_costexplorer_anomalysubscription" "test" {
name = "DAILYSUBSCRIPTION"
frequency = "DAILY"
monitor_arn_lists = [aws_costexplorer_anomalymonitor.test.arn]
subscribers {
type = "EMAIL"
address = "abc@example.com"
}
threshold_expression = {
dimension = {
key = "ANOMALY_TOTAL_IMPACT_ABSOLUTE"
match_options = ["GREATER_THAN_OR_EQUAL"]
values = ["100"]
}
}
}
Copy
Threshold Expression Example Anchor
Using a Percentage Threshold Anchor
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.costexplorer.AnomalySubscription("test", {
name: "AWSServiceMonitor",
frequency: "DAILY",
monitorArnLists: [testAwsCeAnomalyMonitor.arn],
subscribers: [{\
type: "EMAIL",\
address: "abc@example.com",\
}],
thresholdExpression: {
dimension: {
key: "ANOMALY_TOTAL_IMPACT_PERCENTAGE",
matchOptions: ["GREATER_THAN_OR_EQUAL"],
values: ["100"],
},
},
});
Copy
import pulumi
import pulumi_aws as aws
test = aws.costexplorer.AnomalySubscription("test",
name="AWSServiceMonitor",
frequency="DAILY",
monitor_arn_lists=[test_aws_ce_anomaly_monitor["arn"]],
subscribers=[{\
"type": "EMAIL",\
"address": "abc@example.com",\
}],
threshold_expression={
"dimension": {
"key": "ANOMALY_TOTAL_IMPACT_PERCENTAGE",
"match_options": ["GREATER_THAN_OR_EQUAL"],
"values": ["100"],
},
})
Copy
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/costexplorer"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costexplorer.NewAnomalySubscription(ctx, "test", &costexplorer.AnomalySubscriptionArgs{
Name: pulumi.String("AWSServiceMonitor"),
Frequency: pulumi.String("DAILY"),
MonitorArnLists: pulumi.StringArray{
testAwsCeAnomalyMonitor.Arn,
},
Subscribers: costexplorer.AnomalySubscriptionSubscriberArray{
&costexplorer.AnomalySubscriptionSubscriberArgs{
Type: pulumi.String("EMAIL"),
Address: pulumi.String("abc@example.com"),
},
},
ThresholdExpression: &costexplorer.AnomalySubscriptionThresholdExpressionArgs{
Dimension: &costexplorer.AnomalySubscriptionThresholdExpressionDimensionArgs{
Key: pulumi.String("ANOMALY_TOTAL_IMPACT_PERCENTAGE"),
MatchOptions: pulumi.StringArray{
pulumi.String("GREATER_THAN_OR_EQUAL"),
},
Values: pulumi.StringArray{
pulumi.String("100"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var test = new Aws.CostExplorer.AnomalySubscription("test", new()
{
Name = "AWSServiceMonitor",
Frequency = "DAILY",
MonitorArnLists = new[]
{
testAwsCeAnomalyMonitor.Arn,
},
Subscribers = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionSubscriberArgs
{
Type = "EMAIL",
Address = "abc@example.com",
},
},
ThresholdExpression = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionArgs
{
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionDimensionArgs
{
Key = "ANOMALY_TOTAL_IMPACT_PERCENTAGE",
MatchOptions = new[]
{
"GREATER_THAN_OR_EQUAL",
},
Values = new[]
{
"100",
},
},
},
});
});
Copy
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.costexplorer.AnomalySubscription;
import com.pulumi.aws.costexplorer.AnomalySubscriptionArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionDimensionArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var test = new AnomalySubscription("test", AnomalySubscriptionArgs.builder()
.name("AWSServiceMonitor")
.frequency("DAILY")
.monitorArnLists(testAwsCeAnomalyMonitor.arn())
.subscribers(AnomalySubscriptionSubscriberArgs.builder()
.type("EMAIL")
.address("abc@example.com")
.build())
.thresholdExpression(AnomalySubscriptionThresholdExpressionArgs.builder()
.dimension(AnomalySubscriptionThresholdExpressionDimensionArgs.builder()
.key("ANOMALY_TOTAL_IMPACT_PERCENTAGE")
.matchOptions("GREATER_THAN_OR_EQUAL")
.values("100")
.build())
.build())
.build());
}
}
Copy
resources:
test:
type: aws:costexplorer:AnomalySubscription
properties:
name: AWSServiceMonitor
frequency: DAILY
monitorArnLists:
- ${testAwsCeAnomalyMonitor.arn}
subscribers:
- type: EMAIL
address: abc@example.com
thresholdExpression:
dimension:
key: ANOMALY_TOTAL_IMPACT_PERCENTAGE
matchOptions:
- GREATER_THAN_OR_EQUAL
values:
- '100'
Copy
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
resource "aws_costexplorer_anomalysubscription" "test" {
name = "AWSServiceMonitor"
frequency = "DAILY"
monitor_arn_lists = [testAwsCeAnomalyMonitor.arn]
subscribers {
type = "EMAIL"
address = "abc@example.com"
}
threshold_expression = {
dimension = {
key = "ANOMALY_TOTAL_IMPACT_PERCENTAGE"
match_options = ["GREATER_THAN_OR_EQUAL"]
values = ["100"]
}
}
}
Copy
Using an and Expression Anchor
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.costexplorer.AnomalySubscription("test", {
name: "AWSServiceMonitor",
frequency: "DAILY",
monitorArnLists: [testAwsCeAnomalyMonitor.arn],
subscribers: [{\
type: "EMAIL",\
address: "abc@example.com",\
}],
thresholdExpression: {
ands: [\
{\
dimension: {\
key: "ANOMALY_TOTAL_IMPACT_ABSOLUTE",\
matchOptions: ["GREATER_THAN_OR_EQUAL"],\
values: ["100"],\
},\
},\
{\
dimension: {\
key: "ANOMALY_TOTAL_IMPACT_PERCENTAGE",\
matchOptions: ["GREATER_THAN_OR_EQUAL"],\
values: ["50"],\
},\
},\
],
},
});
Copy
import pulumi
import pulumi_aws as aws
test = aws.costexplorer.AnomalySubscription("test",
name="AWSServiceMonitor",
frequency="DAILY",
monitor_arn_lists=[test_aws_ce_anomaly_monitor["arn"]],
subscribers=[{\
"type": "EMAIL",\
"address": "abc@example.com",\
}],
threshold_expression={
"ands": [\
{\
"dimension": {\
"key": "ANOMALY_TOTAL_IMPACT_ABSOLUTE",\
"match_options": ["GREATER_THAN_OR_EQUAL"],\
"values": ["100"],\
},\
},\
{\
"dimension": {\
"key": "ANOMALY_TOTAL_IMPACT_PERCENTAGE",\
"match_options": ["GREATER_THAN_OR_EQUAL"],\
"values": ["50"],\
},\
},\
],
})
Copy
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/costexplorer"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
Copy
```csharp
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var test = new Aws.CostExplorer.AnomalySubscription("test", new()
{
Name = "AWSServiceMonitor",
Frequency = "DAILY",
MonitorArnLists = new[]
{
testAwsCeAnomalyMonitor.Arn,
},
Subscribers = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionSubscriberArgs
{
Type = "EMAIL",
Address = "abc@example.com",
},
},
ThresholdExpression = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionArgs
{
Ands = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndArgs
{
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndDimensionArgs
{
Key = "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
MatchOptions = new[]
{
"GREATER_THAN_OR_EQUAL",
},
Values = new[]
{
"100",
},
},
},
new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndArgs
{
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndDimensionArgs
{
Key = "ANOMALY_TOTAL_IMPACT_PERCENTAGE",
MatchOptions = new[]
{
"GREATER_THAN_OR_EQUAL",
},
Values = new[]
{
"50",
},
},
},
},
},
});
});
Copy
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.costexplorer.AnomalySubscription;
import com.pulumi.aws.costexplorer.AnomalySubscriptionArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var test = new AnomalySubscription("test", AnomalySubscriptionArgs.builder()
.name("AWSServiceMonitor")
.frequency("DAILY")
.monitorArnLists(testAwsCeAnomalyMonitor.arn())
.subscribers(AnomalySubscriptionSubscriberArgs.builder()
.type("EMAIL")
.address("abc@example.com")
.build())
.thresholdExpression(AnomalySubscriptionThresholdExpressionArgs.builder()
.ands(
AnomalySubscriptionThresholdExpressionAndArgs.builder()
.dimension(AnomalySubscriptionThresholdExpressionAndDimensionArgs.builder()
.key("ANOMALY_TOTAL_IMPACT_ABSOLUTE")
.matchOptions("GREATER_THAN_OR_EQUAL")
.values("100")
.build())
.build(),
AnomalySubscriptionThresholdExpressionAndArgs.builder()
.dimension(AnomalySubscriptionThresholdExpressionAndDimensionArgs.builder()
.key("ANOMALY_TOTAL_IMPACT_PERCENTAGE")
.matchOptions("GREATER_THAN_OR_EQUAL")
.values("50")
.build())
.build())
.build())
.build());
}
}
Copy
resources:
test:
type: aws:costexplorer:AnomalySubscription
properties:
name: AWSServiceMonitor
frequency: DAILY
monitorArnLists:
- ${testAwsCeAnomalyMonitor.arn}
subscribers:
- type: EMAIL
address: abc@example.com
thresholdExpression:
ands:
- dimension:
key: ANOMALY_TOTAL_IMPACT_ABSOLUTE
matchOptions:
- GREATER_THAN_OR_EQUAL
values:
- '100'
- dimension:
key: ANOMALY_TOTAL_IMPACT_PERCENTAGE
matchOptions:
- GREATER_THAN_OR_EQUAL
values:
- '50'
Copy
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
resource "aws_costexplorer_anomalysubscription" "test" {
name = "AWSServiceMonitor"
frequency = "DAILY"
monitor_arn_lists = [testAwsCeAnomalyMonitor.arn]
subscribers {
type = "EMAIL"
address = "abc@example.com"
}
threshold_expression = {
ands = [{\
"dimension" = {\
"key" = "ANOMALY_TOTAL_IMPACT_ABSOLUTE"\
"matchOptions" = ["GREATER_THAN_OR_EQUAL"]\
"values" = ["100"]\
}\
}, {\
"dimension" = {\
"key" = "ANOMALY_TOTAL_IMPACT_PERCENTAGE"\
"matchOptions" = ["GREATER_THAN_OR_EQUAL"]\
"values" = ["50"]\
}\
}]
}
}
Copy
SNS Example Anchor
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const costAnomalyUpdates = new aws.sns.Topic("cost_anomaly_updates", {name: "CostAnomalyUpdates"});
const snsTopicPolicy = aws.iam.getPolicyDocumentOutput({
policyId: "__default_policy_ID",
statements: [\
{\
sid: "AWSAnomalyDetectionSNSPublishingPermissions",\
actions: ["SNS:Publish"],\
effect: "Allow",\
principals: [{\
type: "Service",\
identifiers: ["costalerts.amazonaws.com"],\
}],\
resources: [costAnomalyUpdates.arn],\
},\
{\
sid: "__default_statement_ID",\
actions: [\
"SNS:Subscribe",\
"SNS:SetTopicAttributes",\
"SNS:RemovePermission",\
"SNS:Receive",\
"SNS:Publish",\
"SNS:ListSubscriptionsByTopic",\
"SNS:GetTopicAttributes",\
"SNS:DeleteTopic",\
"SNS:AddPermission",\
],\
conditions: [{\
test: "StringEquals",\
variable: "AWS:SourceOwner",\
values: [accountId],\
}],\
effect: "Allow",\
principals: [{\
type: "AWS",\
identifiers: ["*"],\
}],\
resources: [costAnomalyUpdates.arn],\
},\
],
});
const _default = new aws.sns.TopicPolicy("default", {
arn: costAnomalyUpdates.arn,
policy: snsTopicPolicy.apply(snsTopicPolicy => snsTopicPolicy.json),
});
const anomalyMonitor = new aws.costexplorer.AnomalyMonitor("anomaly_monitor", {
name: "AWSServiceMonitor",
monitorType: "DIMENSIONAL",
monitorDimension: "SERVICE",
});
const realtimeSubscription = new aws.costexplorer.AnomalySubscription("realtime_subscription", {
name: "RealtimeAnomalySubscription",
frequency: "IMMEDIATE",
monitorArnLists: [anomalyMonitor.arn],
subscribers: [{\
type: "SNS",\
address: costAnomalyUpdates.arn,\
}],
}, {
dependsOn: [_default],
});
Copy
import pulumi
import pulumi_aws as aws
cost_anomaly_updates = aws.sns.Topic("cost_anomaly_updates", name="CostAnomalyUpdates")
sns_topic_policy = aws.iam.get_policy_document_output(policy_id="__default_policy_ID",
statements=[\
{\
"sid": "AWSAnomalyDetectionSNSPublishingPermissions",\
"actions": ["SNS:Publish"],\
"effect": "Allow",\
"principals": [{\
"type": "Service",\
"identifiers": ["costalerts.amazonaws.com"],\
}],\
"resources": [cost_anomaly_updates.arn],\
},\
{\
"sid": "__default_statement_ID",\
"actions": [\
"SNS:Subscribe",\
"SNS:SetTopicAttributes",\
"SNS:RemovePermission",\
"SNS:Receive",\
"SNS:Publish",\
"SNS:ListSubscriptionsByTopic",\
"SNS:GetTopicAttributes",\
"SNS:DeleteTopic",\
"SNS:AddPermission",\
],\
"conditions": [{\
"test": "StringEquals",\
"variable": "AWS:SourceOwner",\
"values": [account_id],\
}],\
"effect": "Allow",\
"principals": [{\
"type": "AWS",\
"identifiers": ["*"],\
}],\
"resources": [cost_anomaly_updates.arn],\
},\
])
default = aws.sns.TopicPolicy("default",
arn=cost_anomaly_updates.arn,
policy=sns_topic_policy.json)
anomaly_monitor = aws.costexplorer.AnomalyMonitor("anomaly_monitor",
name="AWSServiceMonitor",
monitor_type="DIMENSIONAL",
monitor_dimension="SERVICE")
realtime_subscription = aws.costexplorer.AnomalySubscription("realtime_subscription",
name="RealtimeAnomalySubscription",
frequency="IMMEDIATE",
monitor_arn_lists=[anomaly_monitor.arn],
subscribers=[{\
"type": "SNS",\
"address": cost_anomaly_updates.arn,\
}],
opts = pulumi.ResourceOptions(depends_on=[default]))
Copy
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/costexplorer"
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam"
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/sns"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
costAnomalyUpdates, err := sns.NewTopic(ctx, "cost_anomaly_updates", &sns.TopicArgs{
Name: pulumi.String("CostAnomalyUpdates"),
})
if err != nil {
return err
}
snsTopicPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
PolicyId: pulumi.String("__default_policy_ID"),
Statements: iam.GetPolicyDocumentStatementArray{
&iam.GetPolicyDocumentStatementArgs{
Sid: pulumi.String("AWSAnomalyDetectionSNSPublishingPermissions"),
Actions: pulumi.StringArray{
pulumi.String("SNS:Publish"),
},
Effect: pulumi.String("Allow"),
Principals: iam.GetPolicyDocumentStatementPrincipalArray{
&iam.GetPolicyDocumentStatementPrincipalArgs{
Type: pulumi.String("Service"),
Identifiers: pulumi.StringArray{
pulumi.String("costalerts.amazonaws.com"),
},
},
},
Resources: pulumi.StringArray{
costAnomalyUpdates.Arn,
},
},
&iam.GetPolicyDocumentStatementArgs{
Sid: pulumi.String("__default_statement_ID"),
Actions: pulumi.StringArray{
pulumi.String("SNS:Subscribe"),
pulumi.String("SNS:SetTopicAttributes"),
pulumi.String("SNS:RemovePermission"),
pulumi.String("SNS:Receive"),
pulumi.String("SNS:Publish"),
pulumi.String("SNS:ListSubscriptionsByTopic"),
pulumi.String("SNS:GetTopicAttributes"),
pulumi.String("SNS:DeleteTopic"),
pulumi.String("SNS:AddPermission"),
},
Conditions: iam.GetPolicyDocumentStatementConditionArray{
&iam.GetPolicyDocumentStatementConditionArgs{
Test: pulumi.String("StringEquals"),
Variable: pulumi.String("AWS:SourceOwner"),
Values: pulumi.StringArray{
accountId,
},
},
},
Effect: pulumi.String("Allow"),
Principals: iam.GetPolicyDocumentStatementPrincipalArray{
&iam.GetPolicyDocumentStatementPrincipalArgs{
Type: pulumi.String("AWS"),
Identifiers: pulumi.StringArray{
pulumi.String("*"),
},
},
},
Resources: pulumi.StringArray{
costAnomalyUpdates.Arn,
},
},
},
}, nil)
_default, err := sns.NewTopicPolicy(ctx, "default", &sns.TopicPolicyArgs{
Arn: costAnomalyUpdates.Arn,
Policy: pulumi.String(snsTopicPolicy.ApplyT(func(snsTopicPolicy iam.GetPolicyDocumentResult) (*string, error) {
return &snsTopicPolicy.Json, nil
}).(pulumi.StringPtrOutput)),
})
if err != nil {
return err
}
anomalyMonitor, err := costexplorer.NewAnomalyMonitor(ctx, "anomaly_monitor", &costexplorer.AnomalyMonitorArgs{
Name: pulumi.String("AWSServiceMonitor"),
MonitorType: pulumi.String("DIMENSIONAL"),
MonitorDimension: pulumi.String("SERVICE"),
})
if err != nil {
return err
}
_, err = costexplorer.NewAnomalySubscription(ctx, "realtime_subscription", &costexplorer.AnomalySubscriptionArgs{
Name: pulumi.String("RealtimeAnomalySubscription"),
Frequency: pulumi.String("IMMEDIATE"),
MonitorArnLists: pulumi.StringArray{
anomalyMonitor.Arn,
},
Subscribers: costexplorer.AnomalySubscriptionSubscriberArray{
&costexplorer.AnomalySubscriptionSubscriberArgs{
Type: pulumi.String("SNS"),
Address: costAnomalyUpdates.Arn,
},
},
}, pulumi.DependsOn([]pulumi.Resource{
_default,
}))
if err != nil {
return err
}
return nil
})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var costAnomalyUpdates = new Aws.Sns.Topic("cost_anomaly_updates", new()
{
Name = "CostAnomalyUpdates",
});
var snsTopicPolicy = Aws.Iam.GetPolicyDocument.Invoke(new()
{
PolicyId = "__default_policy_ID",
Statements = new[]
{
new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
{
Sid = "AWSAnomalyDetectionSNSPublishingPermissions",
Actions = new[]
{
"SNS:Publish",
},
Effect = "Allow",
Principals = new[]
{
new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs
{
Type = "Service",
Identifiers = new[]
{
"costalerts.amazonaws.com",
},
},
},
Resources = new[]
{
costAnomalyUpdates.Arn,
},
},
new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
{
Sid = "__default_statement_ID",
Actions = new[]
{
"SNS:Subscribe",
"SNS:SetTopicAttributes",
"SNS:RemovePermission",
"SNS:Receive",
"SNS:Publish",
"SNS:ListSubscriptionsByTopic",
"SNS:GetTopicAttributes",
"SNS:DeleteTopic",
"SNS:AddPermission",
},
Conditions = new[]
{
new Aws.Iam.Inputs.GetPolicyDocumentStatementConditionInputArgs
{
Test = "StringEquals",
Variable = "AWS:SourceOwner",
Values = new[]
{
accountId,
},
},
},
Effect = "Allow",
Principals = new[]
{
new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs
{
Type = "AWS",
Identifiers = new[]
{
"*",
},
},
},
Resources = new[]
{
costAnomalyUpdates.Arn,
},
},
},
});
var @default = new Aws.Sns.TopicPolicy("default", new()
{
Arn = costAnomalyUpdates.Arn,
Policy = snsTopicPolicy.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
});
var anomalyMonitor = new Aws.CostExplorer.AnomalyMonitor("anomaly_monitor", new()
{
Name = "AWSServiceMonitor",
MonitorType = "DIMENSIONAL",
MonitorDimension = "SERVICE",
});
var realtimeSubscription = new Aws.CostExplorer.AnomalySubscription("realtime_subscription", new()
{
Name = "RealtimeAnomalySubscription",
Frequency = "IMMEDIATE",
MonitorArnLists = new[]
{
anomalyMonitor.Arn,
},
Subscribers = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionSubscriberArgs
{
Type = "SNS",
Address = costAnomalyUpdates.Arn,
},
},
}, new CustomResourceOptions
{
DependsOn =
{
@default,
},
});
});
Copy
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.sns.Topic;
import com.pulumi.aws.sns.TopicArgs;
import com.pulumi.aws.iam.IamFunctions;
import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
import com.pulumi.aws.sns.TopicPolicy;
import com.pulumi.aws.sns.TopicPolicyArgs;
import com.pulumi.aws.costexplorer.AnomalyMonitor;
import com.pulumi.aws.costexplorer.AnomalyMonitorArgs;
import com.pulumi.aws.costexplorer.AnomalySubscription;
import com.pulumi.aws.costexplorer.AnomalySubscriptionArgs;
import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var costAnomalyUpdates = new Topic("costAnomalyUpdates", TopicArgs.builder()
.name("CostAnomalyUpdates")
.build());
final var snsTopicPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
.policyId("__default_policy_ID")
.statements(
GetPolicyDocumentStatementArgs.builder()
.sid("AWSAnomalyDetectionSNSPublishingPermissions")
.actions("SNS:Publish")
.effect("Allow")
.principals(GetPolicyDocumentStatementPrincipalArgs.builder()
.type("Service")
.identifiers("costalerts.amazonaws.com")
.build())
.resources(costAnomalyUpdates.arn())
.build(),
GetPolicyDocumentStatementArgs.builder()
.sid("__default_statement_ID")
.actions(
"SNS:Subscribe",
"SNS:SetTopicAttributes",
"SNS:RemovePermission",
"SNS:Receive",
"SNS:Publish",
"SNS:ListSubscriptionsByTopic",
"SNS:GetTopicAttributes",
"SNS:DeleteTopic",
"SNS:AddPermission")
.conditions(GetPolicyDocumentStatementConditionArgs.builder()
.test("StringEquals")
.variable("AWS:SourceOwner")
.values(accountId)
.build())
.effect("Allow")
.principals(GetPolicyDocumentStatementPrincipalArgs.builder()
.type("AWS")
.identifiers("*")
.build())
.resources(costAnomalyUpdates.arn())
.build())
.build());
var default_ = new TopicPolicy("default", TopicPolicyArgs.builder()
.arn(costAnomalyUpdates.arn())
.policy(snsTopicPolicy.applyValue(_snsTopicPolicy -> _snsTopicPolicy.json()))
.build());
var anomalyMonitor = new AnomalyMonitor("anomalyMonitor", AnomalyMonitorArgs.builder()
.name("AWSServiceMonitor")
.monitorType("DIMENSIONAL")
.monitorDimension("SERVICE")
.build());
var realtimeSubscription = new AnomalySubscription("realtimeSubscription", AnomalySubscriptionArgs.builder()
.name("RealtimeAnomalySubscription")
.frequency("IMMEDIATE")
.monitorArnLists(anomalyMonitor.arn())
.subscribers(AnomalySubscriptionSubscriberArgs.builder()
.type("SNS")
.address(costAnomalyUpdates.arn())
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(default_)
.build());
}
}
Copy
resources:
costAnomalyUpdates:
type: aws:sns:Topic
name: cost_anomaly_updates
properties:
name: CostAnomalyUpdates
default:
type: aws:sns:TopicPolicy
properties:
arn: ${costAnomalyUpdates.arn}
policy: ${snsTopicPolicy.json}
anomalyMonitor:
type: aws:costexplorer:AnomalyMonitor
name: anomaly_monitor
properties:
name: AWSServiceMonitor
monitorType: DIMENSIONAL
monitorDimension: SERVICE
realtimeSubscription:
type: aws:costexplorer:AnomalySubscription
name: realtime_subscription
properties:
name: RealtimeAnomalySubscription
frequency: IMMEDIATE
monitorArnLists:
- ${anomalyMonitor.arn}
subscribers:
- type: SNS
address: ${costAnomalyUpdates.arn}
options:
dependsOn:
- ${default}
variables:
snsTopicPolicy:
fn::invoke:
function: aws:iam:getPolicyDocument
arguments:
policyId: __default_policy_ID
statements:
- sid: AWSAnomalyDetectionSNSPublishingPermissions
actions:
- SNS:Publish
effect: Allow
principals:
- type: Service
identifiers:
- costalerts.amazonaws.com
resources:
- ${costAnomalyUpdates.arn}
- sid: __default_statement_ID
actions:
- SNS:Subscribe
- SNS:SetTopicAttributes
- SNS:RemovePermission
- SNS:Receive
- SNS:Publish
- SNS:ListSubscriptionsByTopic
- SNS:GetTopicAttributes
- SNS:DeleteTopic
- SNS:AddPermission
conditions:
- test: StringEquals
variable: AWS:SourceOwner
values:
- ${accountId}
effect: Allow
principals:
- type: AWS
identifiers:
- '*'
resources:
- ${costAnomalyUpdates.arn}
Copy
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
data "aws_iam_getpolicydocument" "snsTopicPolicy" {
policy_id = "__default_policy_ID"
statements {
sid = "AWSAnomalyDetectionSNSPublishingPermissions"
actions = ["SNS:Publish"]
effect = "Allow"
principals {
type = "Service"
identifiers = ["costalerts.amazonaws.com"]
}
resources = [aws_sns_topic.cost_anomaly_updates.arn]
}
statements {
sid = "__default_statement_ID"
actions = ["SNS:Subscribe", "SNS:SetTopicAttributes", "SNS:RemovePermission", "SNS:Receive", "SNS:Publish", "SNS:ListSubscriptionsByTopic", "SNS:GetTopicAttributes", "SNS:DeleteTopic", "SNS:AddPermission"]
conditions {
test = "StringEquals"
variable = "AWS:SourceOwner"
values = [accountId]
}
effect = "Allow"
principals {
type = "AWS"
identifiers = ["*"]
}
resources = [aws_sns_topic.cost_anomaly_updates.arn]
}
}
resource "aws_sns_topic" "cost_anomaly_updates" {
name = "CostAnomalyUpdates"
}
resource "aws_sns_topicpolicy" "default" {
arn = aws_sns_topic.cost_anomaly_updates.arn
policy = data.aws_iam_getpolicydocument.snsTopicPolicy.json
}
resource "aws_costexplorer_anomalymonitor" "anomaly_monitor" {
name = "AWSServiceMonitor"
monitor_type = "DIMENSIONAL"
monitor_dimension = "SERVICE"
}
resource "aws_costexplorer_anomalysubscription" "realtime_subscription" {
depends_on = [aws_sns_topicpolicy.default]
name = "RealtimeAnomalySubscription"
frequency = "IMMEDIATE"
monitor_arn_lists = [aws_costexplorer_anomalymonitor.anomaly_monitor.arn]
subscribers {
type = "SNS"
address = aws_sns_topic.cost_anomaly_updates.arn
}
}
Copy
Create AnomalySubscription Resource Anchor
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax Anchor
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
new AnomalySubscription(name: string, args: AnomalySubscriptionArgs, opts?: CustomResourceOptions);
@overload
def AnomalySubscription(resource_name: str,
args: AnomalySubscriptionArgs,
opts: Optional[ResourceOptions] = None)
@overload
def AnomalySubscription(resource_name: str,
opts: Optional[ResourceOptions] = None,
frequency: Optional[str] = None,
monitor_arn_lists: Optional[Sequence[str]] = None,
subscribers: Optional[Sequence[AnomalySubscriptionSubscriberArgs]] = None,
account_id: Optional[str] = None,
name: Optional[str] = None,
tags: Optional[Mapping[str, str]] = None,
threshold_expression: Optional[AnomalySubscriptionThresholdExpressionArgs] = None)
func NewAnomalySubscription(ctx *Context, name string, args AnomalySubscriptionArgs, opts ...ResourceOption) (*AnomalySubscription, error)
public AnomalySubscription(string name, AnomalySubscriptionArgs args, CustomResourceOptions? opts = null)
public AnomalySubscription(String name, AnomalySubscriptionArgs args)
public AnomalySubscription(String name, AnomalySubscriptionArgs args, CustomResourceOptions options)
type: aws:costexplorer:AnomalySubscription
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
resource "aws_costexplorer_anomalysubscription" "name" {
# resource properties
}
Parameters Anchor
nameThis property is required.stringThe unique name of the resource.argsThis property is required.AnomalySubscriptionArgsThe arguments to resource properties.optsCustomResourceOptionsBag of options to control resource's behavior.
resource_nameThis property is required.strThe unique name of the resource.argsThis property is required.AnomalySubscriptionArgsThe arguments to resource properties.optsResourceOptionsBag of options to control resource's behavior.
ctxContextContext object for the current deployment.nameThis property is required.stringThe unique name of the resource.argsThis property is required.AnomalySubscriptionArgsThe arguments to resource properties.optsResourceOptionBag of options to control resource's behavior.
nameThis property is required.stringThe unique name of the resource.argsThis property is required.AnomalySubscriptionArgsThe arguments to resource properties.optsCustomResourceOptionsBag of options to control resource's behavior.
nameThis property is required.StringThe unique name of the resource.argsThis property is required.AnomalySubscriptionArgsThe arguments to resource properties.optionsCustomResourceOptionsBag of options to control resource's behavior.
Constructor example Anchor
The following reference example uses placeholder values for all input properties.
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
var anomalySubscriptionResource = new Aws.CostExplorer.AnomalySubscription("anomalySubscriptionResource", new()
{
Frequency = "string",
MonitorArnLists = new[]
{
"string",
},
Subscribers = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionSubscriberArgs
{
Address = "string",
Type = "string",
},
},
AccountId = "string",
Name = "string",
Tags =
{
{ "string", "string" },
},
ThresholdExpression = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionArgs
{
Ands = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndArgs
{
CostCategory = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndCostCategoryArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndDimensionArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Tags = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionAndTagsArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
},
},
CostCategory = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionCostCategoryArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionDimensionArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Not = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionNotArgs
{
CostCategory = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionNotCostCategoryArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionNotDimensionArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Tags = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionNotTagsArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
},
Ors = new[]
{
new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionOrArgs
{
CostCategory = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionOrCostCategoryArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Dimension = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionOrDimensionArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
Tags = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionOrTagsArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
},
},
Tags = new Aws.CostExplorer.Inputs.AnomalySubscriptionThresholdExpressionTagsArgs
{
Key = "string",
MatchOptions = new[]
{
"string",
},
Values = new[]
{
"string",
},
},
},
});
Copy
example, err := costexplorer.NewAnomalySubscription(ctx, "anomalySubscriptionResource", &costexplorer.AnomalySubscriptionArgs{
Frequency: pulumi.String("string"),
MonitorArnLists: pulumi.StringArray{
pulumi.String("string"),
},
Subscribers: costexplorer.AnomalySubscriptionSubscriberArray{
&costexplorer.AnomalySubscriptionSubscriberArgs{
Address: pulumi.String("string"),
Type: pulumi.String("string"),
},
},
AccountId: pulumi.String("string"),
Name: pulumi.String("string"),
Tags: pulumi.StringMap{
"string": pulumi.String("string"),
},
ThresholdExpression: &costexplorer.AnomalySubscriptionThresholdExpressionArgs{
Ands: costexplorer.AnomalySubscriptionThresholdExpressionAndArray{
&costexplorer.AnomalySubscriptionThresholdExpressionAndArgs{
CostCategory: &costexplorer.AnomalySubscriptionThresholdExpressionAndCostCategoryArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Dimension: &costexplorer.AnomalySubscriptionThresholdExpressionAndDimensionArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Tags: &costexplorer.AnomalySubscriptionThresholdExpressionAndTagsArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
},
CostCategory: &costexplorer.AnomalySubscriptionThresholdExpressionCostCategoryArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Dimension: &costexplorer.AnomalySubscriptionThresholdExpressionDimensionArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Not: &costexplorer.AnomalySubscriptionThresholdExpressionNotArgs{
CostCategory: &costexplorer.AnomalySubscriptionThresholdExpressionNotCostCategoryArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Dimension: &costexplorer.AnomalySubscriptionThresholdExpressionNotDimensionArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Tags: &costexplorer.AnomalySubscriptionThresholdExpressionNotTagsArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
Ors: costexplorer.AnomalySubscriptionThresholdExpressionOrArray{
&costexplorer.AnomalySubscriptionThresholdExpressionOrArgs{
CostCategory: &costexplorer.AnomalySubscriptionThresholdExpressionOrCostCategoryArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Dimension: &costexplorer.AnomalySubscriptionThresholdExpressionOrDimensionArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
Tags: &costexplorer.AnomalySubscriptionThresholdExpressionOrTagsArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
},
Tags: &costexplorer.AnomalySubscriptionThresholdExpressionTagsArgs{
Key: pulumi.String("string"),
MatchOptions: pulumi.StringArray{
pulumi.String("string"),
},
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
})
Copy
resource "aws_costexplorer_anomalysubscription" "anomalySubscriptionResource" {
frequency = "string"
monitor_arn_lists = ["string"]
subscribers {
address = "string"
type = "string"
}
account_id = "string"
name = "string"
tags = {
"string" = "string"
}
threshold_expression = {
ands = [{\
"costCategory" = {\
"key" = "string"\
"matchOptions" = ["string"]\
"values" = ["string"]\
}\
"dimension" = {\
"key" = "string"\
"matchOptions" = ["string"]\
"values" = ["string"]\
}\
"tags" = {\
"key" = "string"\
"matchOptions" = ["string"]\
"values" = ["string"]\
}\
}]
cost_category = {
key = "string"
match_options = ["string"]
values = ["string"]
}
dimension = {
key = "string"
match_options = ["string"]
values = ["string"]
}
not = {
cost_category = {
key = "string"
match_options = ["string"]
values = ["string"]
}
dimension = {
key = "string"
match_options = ["string"]
values = ["string"]
}
tags = {
key = "string"
match_options = ["string"]
values = ["string"]
}
}
ors = [{\
"costCategory" = {\
"key" = "string"\
"matchOptions" = ["string"]\
"values" = ["string"]\
}\
"dimension" = {\
"key" = "string"\
"matchOptions" = ["string"]\
"values" = ["string"]\
}\
"tags" = {\
"key" = "string"\
"matchOptions" = ["string"]\
"values" = ["string"]\
}\
}]
tags = {
key = "string"
match_options = ["string"]
values = ["string"]
}
}
}
Copy
var anomalySubscriptionResource = new AnomalySubscription("anomalySubscriptionResource", AnomalySubscriptionArgs.builder()
.frequency("string")
.monitorArnLists("string")
.subscribers(AnomalySubscriptionSubscriberArgs.builder()
.address("string")
.type("string")
.build())
.accountId("string")
.name("string")
.tags(Map.of("string", "string"))
.thresholdExpression(AnomalySubscriptionThresholdExpressionArgs.builder()
.ands(AnomalySubscriptionThresholdExpressionAndArgs.builder()
.costCategory(AnomalySubscriptionThresholdExpressionAndCostCategoryArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.dimension(AnomalySubscriptionThresholdExpressionAndDimensionArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.tags(AnomalySubscriptionThresholdExpressionAndTagsArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.build())
.costCategory(AnomalySubscriptionThresholdExpressionCostCategoryArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.dimension(AnomalySubscriptionThresholdExpressionDimensionArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.not(AnomalySubscriptionThresholdExpressionNotArgs.builder()
.costCategory(AnomalySubscriptionThresholdExpressionNotCostCategoryArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.dimension(AnomalySubscriptionThresholdExpressionNotDimensionArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.tags(AnomalySubscriptionThresholdExpressionNotTagsArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.build())
.ors(AnomalySubscriptionThresholdExpressionOrArgs.builder()
.costCategory(AnomalySubscriptionThresholdExpressionOrCostCategoryArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.dimension(AnomalySubscriptionThresholdExpressionOrDimensionArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.tags(AnomalySubscriptionThresholdExpressionOrTagsArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.build())
.tags(AnomalySubscriptionThresholdExpressionTagsArgs.builder()
.key("string")
.matchOptions("string")
.values("string")
.build())
.build())
.build());
Copy
anomaly_subscription_resource = aws.costexplorer.AnomalySubscription("anomalySubscriptionResource",
frequency="string",
monitor_arn_lists=["string"],
subscribers=[{\
"address": "string",\
"type": "string",\
}],
account_id="string",
name="string",
tags={
"string": "string",
},
threshold_expression={
"ands": [{\
"cost_category": {\
"key": "string",\
"match_options": ["string"],\
"values": ["string"],\
},\
"dimension": {\
"key": "string",\
"match_options": ["string"],\
"values": ["string"],\
},\
"tags": {\
"key": "string",\
"match_options": ["string"],\
"values": ["string"],\
},\
}],
"cost_category": {
"key": "string",
"match_options": ["string"],
"values": ["string"],
},
"dimension": {
"key": "string",
"match_options": ["string"],
"values": ["string"],
},
"not_": {
"cost_category": {
"key": "string",
"match_options": ["string"],
"values": ["string"],
},
"dimension": {
"key": "string",
"match_options": ["string"],
"values": ["string"],
},
"tags": {
"key": "string",
"match_options": ["string"],
"values": ["string"],
},
},
"ors": [{\
"cost_category": {\
"key": "string",\
"match_options": ["string"],\
"values": ["string"],\
},\
"dimension": {\
"key": "string",\
"match_options": ["string"],\
"values": ["string"],\
},\
"tags": {\
"key": "string",\
"match_options": ["string"],\
"values": ["string"],\
},\
}],
"tags": {
"key": "string",
"match_options": ["string"],
"values": ["string"],
},
})
Copy
const anomalySubscriptionResource = new aws.costexplorer.AnomalySubscription("anomalySubscriptionResource", {
frequency: "string",
monitorArnLists: ["string"],
subscribers: [{\
address: "string",\
type: "string",\
}],
accountId: "string",
name: "string",
tags: {
string: "string",
},
thresholdExpression: {
ands: [{\
costCategory: {\
key: "string",\
matchOptions: ["string"],\
values: ["string"],\
},\
dimension: {\
key: "string",\
matchOptions: ["string"],\
values: ["string"],\
},\
tags: {\
key: "string",\
matchOptions: ["string"],\
values: ["string"],\
},\
}],
costCategory: {
key: "string",
matchOptions: ["string"],
values: ["string"],
},
dimension: {
key: "string",
matchOptions: ["string"],
values: ["string"],
},
not: {
costCategory: {
key: "string",
matchOptions: ["string"],
values: ["string"],
},
dimension: {
key: "string",
matchOptions: ["string"],
values: ["string"],
},
tags: {
key: "string",
matchOptions: ["string"],
values: ["string"],
},
},
ors: [{\
costCategory: {\
key: "string",\
matchOptions: ["string"],\
values: ["string"],\
},\
dimension: {\
key: "string",\
matchOptions: ["string"],\
values: ["string"],\
},\
tags: {\
key: "string",\
matchOptions: ["string"],\
values: ["string"],\
},\
}],
tags: {
key: "string",
matchOptions: ["string"],
values: ["string"],
},
},
});
Copy
type: aws:costexplorer:AnomalySubscription
properties:
accountId: string
frequency: string
monitorArnLists:
- string
name: string
subscribers:
- address: string
type: string
tags:
string: string
thresholdExpression:
ands:
- costCategory:
key: string
matchOptions:
- string
values:
- string
dimension:
key: string
matchOptions:
- string
values:
- string
tags:
key: string
matchOptions:
- string
values:
- string
costCategory:
key: string
matchOptions:
- string
values:
- string
dimension:
key: string
matchOptions:
- string
values:
- string
not:
costCategory:
key: string
matchOptions:
- string
values:
- string
dimension:
key: string
matchOptions:
- string
values:
- string
tags:
key: string
matchOptions:
- string
values:
- string
ors:
- costCategory:
key: string
matchOptions:
- string
values:
- string
dimension:
key: string
matchOptions:
- string
values:
- string
tags:
key: string
matchOptions:
- string
values:
- string
tags:
key: string
matchOptions:
- string
values:
- string
Copy
AnomalySubscription Resource Properties Anchor
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs Anchor
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The AnomalySubscription resource accepts the following input properties:
FrequencyThis property is required.stringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.MonitorArnListsThis property is required.ListdefaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.ThresholdExpressionAnomalySubscriptionThresholdExpressionAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
FrequencyThis property is required.stringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.MonitorArnListsThis property is required.[]stringA list of cost anomaly monitors.SubscribersThis property is required.[]AnomalySubscriptionSubscriberArgsA subscriber configuration. Multiple subscribers can be defined.AccountIdChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.NameChanges to this property will trigger replacement.stringThe name for the subscription.Tagsmap[string]stringA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.ThresholdExpressionAnomalySubscriptionThresholdExpressionArgsAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
frequencyThis property is required.stringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitor_arn_listsThis property is required.list(string)A list of cost anomaly monitors.subscribersThis property is required.list(object)A subscriber configuration. Multiple subscribers can be defined.account_idChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.nameChanges to this property will trigger replacement.stringThe name for the subscription.tagsmap(string)A map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.threshold_expressionobjectAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
frequencyThis property is required.StringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitorArnListsThis property is required.ListdefaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.thresholdExpressionAnomalySubscriptionThresholdExpressionAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
frequencyThis property is required.stringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitorArnListsThis property is required.string[]A list of cost anomaly monitors.subscribersThis property is required.AnomalySubscriptionSubscriber[]A subscriber configuration. Multiple subscribers can be defined.accountIdChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.nameChanges to this property will trigger replacement.stringThe name for the subscription.tags{[key: string]: string}A map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.thresholdExpressionAnomalySubscriptionThresholdExpressionAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
frequencyThis property is required.strThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitor_arn_listsThis property is required.Sequence[str]A list of cost anomaly monitors.subscribersThis property is required.Sequence[AnomalySubscriptionSubscriberArgs]A subscriber configuration. Multiple subscribers can be defined.account_idChanges to this property will trigger replacement.strThe unique identifier for the AWS account in which the anomaly subscription ought to be created.nameChanges to this property will trigger replacement.strThe name for the subscription.tagsMapping[str, str]A map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.threshold_expressionAnomalySubscriptionThresholdExpressionArgsAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
frequencyThis property is required.StringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitorArnListsThis property is required.ListdefaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.thresholdExpressionProperty MapAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
Outputs Anchor
All input properties are implicitly available as output properties. Additionally, the AnomalySubscription resource produces the following output properties:
ArnstringARN of the anomaly subscription.IdstringThe provider-assigned unique ID for this managed resource.TagsAllDictionary<string, string>A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
ArnstringARN of the anomaly subscription.IdstringThe provider-assigned unique ID for this managed resource.TagsAllmap[string]stringA map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
arnstringARN of the anomaly subscription.idstringThe provider-assigned unique ID for this managed resource.tags_allmap(string)A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
arnStringARN of the anomaly subscription.idStringThe provider-assigned unique ID for this managed resource.tagsAllMap<String,String>A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
arnstringARN of the anomaly subscription.idstringThe provider-assigned unique ID for this managed resource.tagsAll{[key: string]: string}A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
arnstrARN of the anomaly subscription.idstrThe provider-assigned unique ID for this managed resource.tags_allMapping[str, str]A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
arnStringARN of the anomaly subscription.idStringThe provider-assigned unique ID for this managed resource.tagsAllMapdefaultTags configuration block.
Look up Existing AnomalySubscription Resource Anchor
Get an existing AnomalySubscription resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
- TypeScript
- Python
- Go
- C#
- Java
- YAML
- HCL PREVIEW
public static get(name: string, id: Input<ID>, state?: AnomalySubscriptionState, opts?: CustomResourceOptions): AnomalySubscription
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
account_id: Optional[str] = None,
arn: Optional[str] = None,
frequency: Optional[str] = None,
monitor_arn_lists: Optional[Sequence[str]] = None,
name: Optional[str] = None,
subscribers: Optional[Sequence[AnomalySubscriptionSubscriberArgs]] = None,
tags: Optional[Mapping[str, str]] = None,
tags_all: Optional[Mapping[str, str]] = None,
threshold_expression: Optional[AnomalySubscriptionThresholdExpressionArgs] = None) -> AnomalySubscription
func GetAnomalySubscription(ctx *Context, name string, id IDInput, state *AnomalySubscriptionState, opts ...ResourceOption) (*AnomalySubscription, error)
public static AnomalySubscription Get(string name, Input<string> id, AnomalySubscriptionState? state, CustomResourceOptions? opts = null)
public static AnomalySubscription get(String name, Output<String> id, AnomalySubscriptionState state, CustomResourceOptions options)
resources: _: type: aws:costexplorer:AnomalySubscription get: id: ${id}
import {
to = aws_costexplorer_anomalysubscription.example
id = "${id}"
}
nameThis property is required.The unique name of the resulting resource.idThis property is required.The unique provider ID of the resource to lookup.stateAny extra arguments used during the lookup.optsA bag of options that control this resource's behavior.
resource_nameThis property is required.The unique name of the resulting resource.idThis property is required.The unique provider ID of the resource to lookup.
The following state arguments are supported:
AccountIdChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.ArnstringARN of the anomaly subscription.FrequencystringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.MonitorArnListsListdefaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.TagsAllDictionary<string, string>A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.ThresholdExpressionAnomalySubscriptionThresholdExpressionAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
AccountIdChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.ArnstringARN of the anomaly subscription.FrequencystringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.MonitorArnLists[]stringA list of cost anomaly monitors.NameChanges to this property will trigger replacement.stringThe name for the subscription.Subscribers[]AnomalySubscriptionSubscriberArgsA subscriber configuration. Multiple subscribers can be defined.Tagsmap[string]stringA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.TagsAllmap[string]stringA map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.ThresholdExpressionAnomalySubscriptionThresholdExpressionArgsAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
account_idChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.arnstringARN of the anomaly subscription.frequencystringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitor_arn_listslist(string)A list of cost anomaly monitors.nameChanges to this property will trigger replacement.stringThe name for the subscription.subscriberslist(object)A subscriber configuration. Multiple subscribers can be defined.tagsmap(string)A map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.tags_allmap(string)A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.threshold_expressionobjectAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
accountIdChanges to this property will trigger replacement.StringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.arnStringARN of the anomaly subscription.frequencyStringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitorArnListsListdefaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.tagsAllMap<String,String>A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.thresholdExpressionAnomalySubscriptionThresholdExpressionAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
accountIdChanges to this property will trigger replacement.stringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.arnstringARN of the anomaly subscription.frequencystringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitorArnListsstring[]A list of cost anomaly monitors.nameChanges to this property will trigger replacement.stringThe name for the subscription.subscribersAnomalySubscriptionSubscriber[]A subscriber configuration. Multiple subscribers can be defined.tags{[key: string]: string}A map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.tagsAll{[key: string]: string}A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.thresholdExpressionAnomalySubscriptionThresholdExpressionAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
account_idChanges to this property will trigger replacement.strThe unique identifier for the AWS account in which the anomaly subscription ought to be created.arnstrARN of the anomaly subscription.frequencystrThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitor_arn_listsSequence[str]A list of cost anomaly monitors.nameChanges to this property will trigger replacement.strThe name for the subscription.subscribersSequence[AnomalySubscriptionSubscriberArgs]A subscriber configuration. Multiple subscribers can be defined.tagsMapping[str, str]A map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.tags_allMapping[str, str]A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.threshold_expressionAnomalySubscriptionThresholdExpressionArgsAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
accountIdChanges to this property will trigger replacement.StringThe unique identifier for the AWS account in which the anomaly subscription ought to be created.arnStringARN of the anomaly subscription.frequencyStringThe frequency that anomaly reports are sent. Valid Values: DAILY | IMMEDIATE | WEEKLY.monitorArnListsListdefaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.tagsAllMapdefaultTags configuration block.thresholdExpressionProperty MapAn Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
Supporting Types Anchor
AnomalySubscriptionSubscriber , AnomalySubscriptionSubscriberArgs Anchor
AddressThis property is required.stringThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.TypeThis property is required.stringThe type of subscription. Valid Values: SNS | EMAIL.
AddressThis property is required.stringThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.TypeThis property is required.stringThe type of subscription. Valid Values: SNS | EMAIL.
addressThis property is required.stringThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.typeThis property is required.stringThe type of subscription. Valid Values: SNS | EMAIL.
addressThis property is required.StringThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.typeThis property is required.StringThe type of subscription. Valid Values: SNS | EMAIL.
addressThis property is required.stringThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.typeThis property is required.stringThe type of subscription. Valid Values: SNS | EMAIL.
addressThis property is required.strThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.typeThis property is required.strThe type of subscription. Valid Values: SNS | EMAIL.
addressThis property is required.StringThe address of the subscriber. If type is SNS, this will be the arn of the sns topic. If type is EMAIL, this will be the destination email address.typeThis property is required.StringThe type of subscription. Valid Values: SNS | EMAIL.
AnomalySubscriptionThresholdExpression , AnomalySubscriptionThresholdExpressionArgs Anchor
AndsList
Ands[]AnomalySubscriptionThresholdExpressionAndReturn results that match both Dimension objects.CostCategoryAnomalySubscriptionThresholdExpressionCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionDimensionConfiguration block for the specific Dimension to use for.NotAnomalySubscriptionThresholdExpressionNotReturn results that do not match the Dimension object.Ors[]AnomalySubscriptionThresholdExpressionOrReturn results that match either Dimension object.TagsAnomalySubscriptionThresholdExpressionTagsConfiguration block for the specific Tag to use for. See Tags below.
andslist(object)Return results that match both Dimension objects.cost_categoryobjectConfiguration block for the filter that's based on values. See Cost Category below.dimensionobjectConfiguration block for the specific Dimension to use for.notobjectReturn results that do not match the Dimension object.orslist(object)Return results that match either Dimension object.tagsobjectConfiguration block for the specific Tag to use for. See Tags below.
andsList
andsAnomalySubscriptionThresholdExpressionAnd[]Return results that match both Dimension objects.costCategoryAnomalySubscriptionThresholdExpressionCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionDimensionConfiguration block for the specific Dimension to use for.notAnomalySubscriptionThresholdExpressionNotReturn results that do not match the Dimension object.orsAnomalySubscriptionThresholdExpressionOr[]Return results that match either Dimension object.tagsAnomalySubscriptionThresholdExpressionTagsConfiguration block for the specific Tag to use for. See Tags below.
andsSequence[AnomalySubscriptionThresholdExpressionAnd]Return results that match both Dimension objects.cost_categoryAnomalySubscriptionThresholdExpressionCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionDimensionConfiguration block for the specific Dimension to use for.not_AnomalySubscriptionThresholdExpressionNotReturn results that do not match the Dimension object.orsSequence[AnomalySubscriptionThresholdExpressionOr]Return results that match either Dimension object.tagsAnomalySubscriptionThresholdExpressionTagsConfiguration block for the specific Tag to use for. See Tags below.
andsList
AnomalySubscriptionThresholdExpressionAnd , AnomalySubscriptionThresholdExpressionAndArgs Anchor
CostCategoryAnomalySubscriptionThresholdExpressionAndCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionAndDimensionConfiguration block for the specific Dimension to use for.TagsAnomalySubscriptionThresholdExpressionAndTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
CostCategoryAnomalySubscriptionThresholdExpressionAndCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionAndDimensionConfiguration block for the specific Dimension to use for.TagsAnomalySubscriptionThresholdExpressionAndTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
cost_categoryobjectConfiguration block for the filter that's based on values. See Cost Category below.dimensionobjectConfiguration block for the specific Dimension to use for.tagsobjectA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryAnomalySubscriptionThresholdExpressionAndCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionAndDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionAndTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryAnomalySubscriptionThresholdExpressionAndCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionAndDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionAndTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
cost_categoryAnomalySubscriptionThresholdExpressionAndCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionAndDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionAndTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryProperty MapConfiguration block for the filter that's based on values. See Cost Category below.dimensionProperty MapConfiguration block for the specific Dimension to use for.tagsProperty MapA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
AnomalySubscriptionThresholdExpressionAndCostCategory , AnomalySubscriptionThresholdExpressionAndCostCategoryArgs Anchor
KeystringUnique name of the Cost Category.MatchOptionsListEQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.ValuesList
KeystringUnique name of the Cost Category.MatchOptions[]stringMatch options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.Values[]stringSpecific value of the Cost Category.
keystringUnique name of the Cost Category.match_optionslist(string)Match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valueslist(string)Specific value of the Cost Category.
keyStringUnique name of the Cost Category.matchOptionsListEQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesList
keystringUnique name of the Cost Category.matchOptionsstring[]Match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesstring[]Specific value of the Cost Category.
keystrUnique name of the Cost Category.match_optionsSequence[str]Match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesSequence[str]Specific value of the Cost Category.
keyStringUnique name of the Cost Category.matchOptionsListEQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesList
AnomalySubscriptionThresholdExpressionAndDimension , AnomalySubscriptionThresholdExpressionAndDimensionArgs Anchor
AnomalySubscriptionThresholdExpressionAndTags , AnomalySubscriptionThresholdExpressionAndTagsArgs Anchor
KeystringKey for the tag.MatchOptionsListEQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.ValuesList
KeystringKey for the tag.MatchOptions[]stringMatch options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.Values[]stringSpecific value of the Cost Category.
keystringKey for the tag.match_optionslist(string)Match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valueslist(string)Specific value of the Cost Category.
keyStringKey for the tag.matchOptionsListEQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesList
keystringKey for the tag.matchOptionsstring[]Match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesstring[]Specific value of the Cost Category.
keystrKey for the tag.match_optionsSequence[str]Match options that you can use to filter your results. MatchOptions is only applicable for actions related to cost category. The default values for MatchOptions is EQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesSequence[str]Specific value of the Cost Category.
keyStringKey for the tag.matchOptionsListEQUALS and CASE_SENSITIVE. Valid values are: EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE.valuesList
AnomalySubscriptionThresholdExpressionCostCategory , AnomalySubscriptionThresholdExpressionCostCategoryArgs Anchor
AnomalySubscriptionThresholdExpressionDimension , AnomalySubscriptionThresholdExpressionDimensionArgs Anchor
AnomalySubscriptionThresholdExpressionNot , AnomalySubscriptionThresholdExpressionNotArgs Anchor
CostCategoryAnomalySubscriptionThresholdExpressionNotCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionNotDimensionConfiguration block for the specific Dimension to use for.TagsAnomalySubscriptionThresholdExpressionNotTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
CostCategoryAnomalySubscriptionThresholdExpressionNotCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionNotDimensionConfiguration block for the specific Dimension to use for.TagsAnomalySubscriptionThresholdExpressionNotTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
cost_categoryobjectConfiguration block for the filter that's based on values. See Cost Category below.dimensionobjectConfiguration block for the specific Dimension to use for.tagsobjectA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryAnomalySubscriptionThresholdExpressionNotCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionNotDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionNotTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryAnomalySubscriptionThresholdExpressionNotCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionNotDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionNotTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
cost_categoryAnomalySubscriptionThresholdExpressionNotCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionNotDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionNotTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryProperty MapConfiguration block for the filter that's based on values. See Cost Category below.dimensionProperty MapConfiguration block for the specific Dimension to use for.tagsProperty MapA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
AnomalySubscriptionThresholdExpressionNotCostCategory , AnomalySubscriptionThresholdExpressionNotCostCategoryArgs Anchor
AnomalySubscriptionThresholdExpressionNotDimension , AnomalySubscriptionThresholdExpressionNotDimensionArgs Anchor
AnomalySubscriptionThresholdExpressionNotTags , AnomalySubscriptionThresholdExpressionNotTagsArgs Anchor
AnomalySubscriptionThresholdExpressionOr , AnomalySubscriptionThresholdExpressionOrArgs Anchor
CostCategoryAnomalySubscriptionThresholdExpressionOrCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionOrDimensionConfiguration block for the specific Dimension to use for.TagsAnomalySubscriptionThresholdExpressionOrTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
CostCategoryAnomalySubscriptionThresholdExpressionOrCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.DimensionAnomalySubscriptionThresholdExpressionOrDimensionConfiguration block for the specific Dimension to use for.TagsAnomalySubscriptionThresholdExpressionOrTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
cost_categoryobjectConfiguration block for the filter that's based on values. See Cost Category below.dimensionobjectConfiguration block for the specific Dimension to use for.tagsobjectA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryAnomalySubscriptionThresholdExpressionOrCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionOrDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionOrTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryAnomalySubscriptionThresholdExpressionOrCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionOrDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionOrTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
cost_categoryAnomalySubscriptionThresholdExpressionOrCostCategoryConfiguration block for the filter that's based on values. See Cost Category below.dimensionAnomalySubscriptionThresholdExpressionOrDimensionConfiguration block for the specific Dimension to use for.tagsAnomalySubscriptionThresholdExpressionOrTagsA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
costCategoryProperty MapConfiguration block for the filter that's based on values. See Cost Category below.dimensionProperty MapConfiguration block for the specific Dimension to use for.tagsProperty MapA map of tags to assign to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
AnomalySubscriptionThresholdExpressionOrCostCategory , AnomalySubscriptionThresholdExpressionOrCostCategoryArgs Anchor
AnomalySubscriptionThresholdExpressionOrDimension , AnomalySubscriptionThresholdExpressionOrDimensionArgs Anchor
AnomalySubscriptionThresholdExpressionOrTags , AnomalySubscriptionThresholdExpressionOrTagsArgs Anchor
AnomalySubscriptionThresholdExpressionTags , AnomalySubscriptionThresholdExpressionTagsArgs Anchor
Import Anchor
Identity Schema Anchor
Required Anchor
arn(String) Amazon Resource Name (ARN) of the Cost Explorer anomaly subscription.
Using pulumi import, import aws.costexplorer.AnomalySubscription using the id. For example:
$ pulumi import aws:costexplorer/anomalySubscription:AnomalySubscription example AnomalySubscriptionARN
Copy
To learn more about importing existing cloud resources, see Importing resources.
Package Details Anchor
Viewing docs for AWS v7.32.0
published on Friday, May 29, 2026 by Pulumi
v7.32.0 (7.x, latest)v6.83.1 (6.x)v5.43.0 (5.x)
On this page
On this page
- Copy Page
[Scroll to top](/content/registry/packages/aws/api-docs/costexplorer/anomalysubscription/# "Scroll to top"/index.html)