BudgetSubscriptionArgs

data class BudgetSubscriptionArgs(val amount: Output<Double>? = null, val etag: Output<String>? = null, val filter: Output<BudgetSubscriptionFilterArgs>? = null, val name: Output<String>? = null, val notifications: Output<List<BudgetSubscriptionNotificationArgs>>? = null, val subscriptionId: Output<String>? = null, val timeGrain: Output<String>? = null, val timePeriod: Output<BudgetSubscriptionTimePeriodArgs>? = null) : ConvertibleToJava<BudgetSubscriptionArgs>

Manages a Subscription Consumption Budget.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const current = azure.core.getSubscription({});
const example = new azure.core.ResourceGroup("example", {
name: "example",
location: "eastus",
});
const exampleActionGroup = new azure.monitoring.ActionGroup("example", {
name: "example",
resourceGroupName: example.name,
shortName: "example",
});
const exampleBudgetSubscription = new azure.consumption.BudgetSubscription("example", {
name: "example",
subscriptionId: current.then(current => current.id),
amount: 1000,
timeGrain: "Monthly",
timePeriod: {
startDate: "2022-06-01T00:00:00Z",
endDate: "2022-07-01T00:00:00Z",
},
filter: {
dimensions: [{
name: "ResourceGroupName",
values: [example&#46;name],
}],
tags: [{
name: "foo",
values: [
"bar",
"baz",
],
}],
},
notifications: [
{
enabled: true,
threshold: 90,
operator: "EqualTo",
contactEmails: [
"foo@example.com",
"bar@example.com",
],
contactGroups: [exampleActionGroup&#46;id],
contactRoles: ["Owner"],
},
{
enabled: false,
threshold: 100,
operator: "GreaterThan",
thresholdType: "Forecasted",
contactEmails: [
"foo@example.com",
"bar@example.com",
],
},
],
});
import pulumi
import pulumi_azure as azure
current = azure.core.get_subscription()
example = azure.core.ResourceGroup("example",
name="example",
location="eastus")
example_action_group = azure.monitoring.ActionGroup("example",
name="example",
resource_group_name=example.name,
short_name="example")
example_budget_subscription = azure.consumption.BudgetSubscription("example",
name="example",
subscription_id=current.id,
amount=1000,
time_grain="Monthly",
time_period={
"start_date": "2022-06-01T00:00:00Z",
"end_date": "2022-07-01T00:00:00Z",
},
filter={
"dimensions": [{
"name": "ResourceGroupName",
"values": [example&#46;name],
}],
"tags": [{
"name": "foo",
"values": [
"bar",
"baz",
],
}],
},
notifications=[
{
"enabled": True,
"threshold": 90,
"operator": "EqualTo",
"contact_emails": [
"foo@example.com",
"bar@example.com",
],
"contact_groups": [example_action_group&#46;id],
"contact_roles": ["Owner"],
},
{
"enabled": False,
"threshold": 100,
"operator": "GreaterThan",
"threshold_type": "Forecasted",
"contact_emails": [
"foo@example.com",
"bar@example.com",
],
},
])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var current = Azure.Core.GetSubscription.Invoke();
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "example",
Location = "eastus",
});
var exampleActionGroup = new Azure.Monitoring.ActionGroup("example", new()
{
Name = "example",
ResourceGroupName = example.Name,
ShortName = "example",
});
var exampleBudgetSubscription = new Azure.Consumption.BudgetSubscription("example", new()
{
Name = "example",
SubscriptionId = current.Apply(getSubscriptionResult => getSubscriptionResult.Id),
Amount = 1000,
TimeGrain = "Monthly",
TimePeriod = new Azure.Consumption.Inputs.BudgetSubscriptionTimePeriodArgs
{
StartDate = "2022-06-01T00:00:00Z",
EndDate = "2022-07-01T00:00:00Z",
},
Filter = new Azure.Consumption.Inputs.BudgetSubscriptionFilterArgs
{
Dimensions = new[]
{
new Azure.Consumption.Inputs.BudgetSubscriptionFilterDimensionArgs
{
Name = "ResourceGroupName",
Values = new[]
{
example.Name,
},
},
},
Tags = new[]
{
new Azure.Consumption.Inputs.BudgetSubscriptionFilterTagArgs
{
Name = "foo",
Values = new[]
{
"bar",
"baz",
},
},
},
},
Notifications = new[]
{
new Azure.Consumption.Inputs.BudgetSubscriptionNotificationArgs
{
Enabled = true,
Threshold = 90,
Operator = "EqualTo",
ContactEmails = new[]
{
"foo@example.com",
"bar@example.com",
},
ContactGroups = new[]
{
exampleActionGroup.Id,
},
ContactRoles = new[]
{
"Owner",
},
},
new Azure.Consumption.Inputs.BudgetSubscriptionNotificationArgs
{
Enabled = false,
Threshold = 100,
Operator = "GreaterThan",
ThresholdType = "Forecasted",
ContactEmails = new[]
{
"foo@example.com",
"bar@example.com",
},
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/consumption"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/monitoring"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
current, err := core.LookupSubscription(ctx, &core.LookupSubscriptionArgs{}, nil)
if err != nil {
return err
}
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("example"),
Location: pulumi.String("eastus"),
})
if err != nil {
return err
}
exampleActionGroup, err := monitoring.NewActionGroup(ctx, "example", &monitoring.ActionGroupArgs{
Name: pulumi.String("example"),
ResourceGroupName: example.Name,
ShortName: pulumi.String("example"),
})
if err != nil {
return err
}
_, err = consumption.NewBudgetSubscription(ctx, "example", &consumption.BudgetSubscriptionArgs{
Name: pulumi.String("example"),
SubscriptionId: pulumi.String(current.Id),
Amount: pulumi.Float64(1000),
TimeGrain: pulumi.String("Monthly"),
TimePeriod: &consumption.BudgetSubscriptionTimePeriodArgs{
StartDate: pulumi.String("2022-06-01T00:00:00Z"),
EndDate: pulumi.String("2022-07-01T00:00:00Z"),
},
Filter: &consumption.BudgetSubscriptionFilterArgs{
Dimensions: consumption.BudgetSubscriptionFilterDimensionArray{
&consumption.BudgetSubscriptionFilterDimensionArgs{
Name: pulumi.String("ResourceGroupName"),
Values: pulumi.StringArray{
example.Name,
},
},
},
Tags: consumption.BudgetSubscriptionFilterTagArray{
&consumption.BudgetSubscriptionFilterTagArgs{
Name: pulumi.String("foo"),
Values: pulumi.StringArray{
pulumi.String("bar"),
pulumi.String("baz"),
},
},
},
},
Notifications: consumption.BudgetSubscriptionNotificationArray{
&consumption.BudgetSubscriptionNotificationArgs{
Enabled: pulumi.Bool(true),
Threshold: pulumi.Int(90),
Operator: pulumi.String("EqualTo"),
ContactEmails: pulumi.StringArray{
pulumi.String("foo@example.com"),
pulumi.String("bar@example.com"),
},
ContactGroups: pulumi.StringArray{
exampleActionGroup.ID(),
},
ContactRoles: pulumi.StringArray{
pulumi.String("Owner"),
},
},
&consumption.BudgetSubscriptionNotificationArgs{
Enabled: pulumi.Bool(false),
Threshold: pulumi.Int(100),
Operator: pulumi.String("GreaterThan"),
ThresholdType: pulumi.String("Forecasted"),
ContactEmails: pulumi.StringArray{
pulumi.String("foo@example.com"),
pulumi.String("bar@example.com"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.CoreFunctions;
import com.pulumi.azure.core.inputs.GetSubscriptionArgs;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.monitoring.ActionGroup;
import com.pulumi.azure.monitoring.ActionGroupArgs;
import com.pulumi.azure.consumption.BudgetSubscription;
import com.pulumi.azure.consumption.BudgetSubscriptionArgs;
import com.pulumi.azure.consumption.inputs.BudgetSubscriptionTimePeriodArgs;
import com.pulumi.azure.consumption.inputs.BudgetSubscriptionFilterArgs;
import com.pulumi.azure.consumption.inputs.BudgetSubscriptionNotificationArgs;
import java.util.List;
import java.util.ArrayList;
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) {
final var current = CoreFunctions.getSubscription(GetSubscriptionArgs.builder()
.build());
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("example")
.location("eastus")
.build());
var exampleActionGroup = new ActionGroup("exampleActionGroup", ActionGroupArgs.builder()
.name("example")
.resourceGroupName(example.name())
.shortName("example")
.build());
var exampleBudgetSubscription = new BudgetSubscription("exampleBudgetSubscription", BudgetSubscriptionArgs.builder()
.name("example")
.subscriptionId(current.id())
.amount(1000.0)
.timeGrain("Monthly")
.timePeriod(BudgetSubscriptionTimePeriodArgs.builder()
.startDate("2022-06-01T00:00:00Z")
.endDate("2022-07-01T00:00:00Z")
.build())
.filter(BudgetSubscriptionFilterArgs.builder()
.dimensions(BudgetSubscriptionFilterDimensionArgs.builder()
.name("ResourceGroupName")
.values(example.name())
.build())
.tags(BudgetSubscriptionFilterTagArgs.builder()
.name("foo")
.values(
"bar",
"baz")
.build())
.build())
.notifications(
BudgetSubscriptionNotificationArgs.builder()
.enabled(true)
.threshold(90)
.operator("EqualTo")
.contactEmails(
"foo@example.com",
"bar@example.com")
.contactGroups(exampleActionGroup.id())
.contactRoles("Owner")
.build(),
BudgetSubscriptionNotificationArgs.builder()
.enabled(false)
.threshold(100)
.operator("GreaterThan")
.thresholdType("Forecasted")
.contactEmails(
"foo@example.com",
"bar@example.com")
.build())
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: example
location: eastus
exampleActionGroup:
type: azure:monitoring:ActionGroup
name: example
properties:
name: example
resourceGroupName: ${example.name}
shortName: example
exampleBudgetSubscription:
type: azure:consumption:BudgetSubscription
name: example
properties:
name: example
subscriptionId: ${current.id}
amount: 1000
timeGrain: Monthly
timePeriod:
startDate: 2022-06-01T00:00:00Z
endDate: 2022-07-01T00:00:00Z
filter:
dimensions:
- name: ResourceGroupName
values:
- ${example.name}
tags:
- name: foo
values:
- bar
- baz
notifications:
- enabled: true
threshold: 90
operator: EqualTo
contactEmails:
- foo@example.com
- bar@example.com
contactGroups:
- ${exampleActionGroup.id}
contactRoles:
- Owner
- enabled: false
threshold: 100
operator: GreaterThan
thresholdType: Forecasted
contactEmails:
- foo@example.com
- bar@example.com
variables:
current:
fn::invoke:
function: azure:core:getSubscription
arguments: {}

API Providers

This resource uses the following Azure API Providers:

  • Microsoft.Consumption: 2019-10-01

Import

Subscription Consumption Budgets can be imported using the resource id, e.g.

$ pulumi import azure:consumption/budgetSubscription:BudgetSubscription example /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Consumption/budgets/subscription1

Constructors

Link copied to clipboard
constructor(amount: Output<Double>? = null, etag: Output<String>? = null, filter: Output<BudgetSubscriptionFilterArgs>? = null, name: Output<String>? = null, notifications: Output<List<BudgetSubscriptionNotificationArgs>>? = null, subscriptionId: Output<String>? = null, timeGrain: Output<String>? = null, timePeriod: Output<BudgetSubscriptionTimePeriodArgs>? = null)

Properties

Link copied to clipboard
val amount: Output<Double>? = null

The total amount of cost to track with the budget.

Link copied to clipboard
val etag: Output<String>? = null

(Optional) The ETag of the Subscription Consumption Budget.

Link copied to clipboard

A filter block as defined below.

Link copied to clipboard
val name: Output<String>? = null

The name which should be used for this Subscription Consumption Budget. Changing this forces a new resource to be created.

Link copied to clipboard

One or more notification blocks as defined below.

Link copied to clipboard
val subscriptionId: Output<String>? = null

The ID of the Subscription for which to create a Consumption Budget. Changing this forces a new resource to be created.

Link copied to clipboard
val timeGrain: Output<String>? = null

The time covered by a budget. Tracking of the amount will be reset based on the time grain. Must be one of BillingAnnual, BillingMonth, BillingQuarter, Annually, Monthly and Quarterly. Defaults to Monthly. Changing this forces a new resource to be created.

Link copied to clipboard

A time_period block as defined below.

Functions

Link copied to clipboard
open override fun toJava(): BudgetSubscriptionArgs