Package com.pulumi.aws.costexplorer
Class AnomalySubscription
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.costexplorer.AnomalySubscription
-
public class AnomalySubscription extends com.pulumi.resources.CustomResourceProvides a CE Anomaly Subscription. ## Example Usage ### Basic Example
### Threshold Expression Example ### Using a Percentage Thresholdpackage 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.AnomalySubscriptionThresholdExpressionArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionDimensionArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs; 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() .thresholdExpression(AnomalySubscriptionThresholdExpressionArgs.builder() .dimension(AnomalySubscriptionThresholdExpressionDimensionArgs.builder() .key("ANOMALY_TOTAL_IMPACT_ABSOLUTE") .matchOptions("GREATER_THAN_OR_EQUAL") .values("100") .build()) .build()) .subscribers(AnomalySubscriptionSubscriberArgs.builder() .type("EMAIL") .address("abc@example.com") .build()) .name("DAILYSUBSCRIPTION") .frequency("DAILY") .monitorArnLists(test.arn()) .build());}}
### Using an `and` Expressionpackage 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.AnomalySubscriptionThresholdExpressionArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionDimensionArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs; 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() .thresholdExpression(AnomalySubscriptionThresholdExpressionArgs.builder() .dimension(AnomalySubscriptionThresholdExpressionDimensionArgs.builder() .key("ANOMALY_TOTAL_IMPACT_PERCENTAGE") .matchOptions("GREATER_THAN_OR_EQUAL") .values("100") .build()) .build()) .subscribers(AnomalySubscriptionSubscriberArgs.builder() .type("EMAIL") .address("abc@example.com") .build()) .name("AWSServiceMonitor") .frequency("DAILY") .monitorArnLists(testAwsCeAnomalyMonitor.arn()) .build());}}
### SNS Examplepackage 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.AnomalySubscriptionThresholdExpressionArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionAndArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionThresholdExpressionAndDimensionArgs; import com.pulumi.aws.costexplorer.inputs.AnomalySubscriptionSubscriberArgs; 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() .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()) .subscribers(AnomalySubscriptionSubscriberArgs.builder() .type("EMAIL") .address("abc@example.com") .build()) .name("AWSServiceMonitor") .frequency("DAILY") .monitorArnLists(testAwsCeAnomalyMonitor.arn()) .build());}}
## Import ### Identity Schema #### Required - `arn` (String) ARN of the Cost Explorer anomaly subscription. Using `pulumi import`, import `aws.costexplorer.AnomalySubscription` using the `id`. For example: ```sh $ pulumi import aws:costexplorer/anomalySubscription:AnomalySubscription example AnomalySubscriptionARN ```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.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs; 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() .statements( GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("costalerts.amazonaws.com") .build()) .sid("AWSAnomalyDetectionSNSPublishingPermissions") .actions("SNS:Publish") .effect("Allow") .resources(costAnomalyUpdates.arn()) .build(), GetPolicyDocumentStatementArgs.builder() .conditions(GetPolicyDocumentStatementConditionArgs.builder() .test("StringEquals") .variable("AWS:SourceOwner") .values(accountId) .build()) .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("AWS") .identifiers("*") .build()) .sid("__default_statement_ID") .actions( "SNS:Subscribe", "SNS:SetTopicAttributes", "SNS:RemovePermission", "SNS:Receive", "SNS:Publish", "SNS:ListSubscriptionsByTopic", "SNS:GetTopicAttributes", "SNS:DeleteTopic", "SNS:AddPermission") .effect("Allow") .resources(costAnomalyUpdates.arn()) .build()) .policyId("__default_policy_ID") .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() .subscribers(AnomalySubscriptionSubscriberArgs.builder() .type("SNS") .address(costAnomalyUpdates.arn()) .build()) .name("RealtimeAnomalySubscription") .frequency("IMMEDIATE") .monitorArnLists(anomalyMonitor.arn()) .build(), CustomResourceOptions.builder() .dependsOn(default_) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description AnomalySubscription(java.lang.String name)AnomalySubscription(java.lang.String name, AnomalySubscriptionArgs args)AnomalySubscription(java.lang.String name, AnomalySubscriptionArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>accountId()com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.lang.String>frequency()static AnomalySubscriptionget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, AnomalySubscriptionState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.util.List<java.lang.String>>monitorArnLists()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.util.List<AnomalySubscriptionSubscriber>>subscribers()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<AnomalySubscriptionThresholdExpression>thresholdExpression()
-
-
-
Constructor Detail
-
AnomalySubscription
public AnomalySubscription(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
AnomalySubscription
public AnomalySubscription(java.lang.String name, AnomalySubscriptionArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
AnomalySubscription
public AnomalySubscription(java.lang.String name, AnomalySubscriptionArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
accountId
public com.pulumi.core.Output<java.lang.String> accountId()
- Returns:
- The unique identifier for the AWS account in which the anomaly subscription ought to be created.
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the anomaly subscription.
-
frequency
public com.pulumi.core.Output<java.lang.String> frequency()
- Returns:
- The frequency that anomaly reports are sent. Valid Values: `DAILY` | `IMMEDIATE` | `WEEKLY`.
-
monitorArnLists
public com.pulumi.core.Output<java.util.List<java.lang.String>> monitorArnLists()
- Returns:
- A list of cost anomaly monitors.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- The name for the subscription.
-
subscribers
public com.pulumi.core.Output<java.util.List<AnomalySubscriptionSubscriber>> subscribers()
- Returns:
- A subscriber configuration. Multiple subscribers can be defined.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- 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
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
thresholdExpression
public com.pulumi.core.Output<AnomalySubscriptionThresholdExpression> thresholdExpression()
- Returns:
- An Expression object used to specify the anomalies that you want to generate alerts for. See Threshold Expression.
-
get
public static AnomalySubscription get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable AnomalySubscriptionState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-