Budget
A budget resource. Uses Azure REST API version 2024-08-01. In version 2.x of the Azure Native provider, it used API version 2023-04-01-preview. Other available API versions: 2019-04-01-preview, 2023-04-01-preview, 2023-08-01, 2023-09-01, 2023-11-01, 2024-10-01-preview. These can be accessed by generating a local SDK package using the CLI command pulumi package add azure-native costmanagement [ApiVersion]
. See the ../../../version-guide/#accessing-any-api-version-via-local-packages for details.
Example Usage
CreateOrUpdate-Cost-Subscription-Budget
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
Amount = 100.65,
BudgetName = "TestBudget",
Category = AzureNative.CostManagement.CategoryType.Cost,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
And = new[]
{
new AzureNative.CostManagement.Inputs.BudgetFilterPropertiesArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ResourceId",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/MSVM2",
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/platformcloudplatformGeneric1",
},
},
},
new AzureNative.CostManagement.Inputs.BudgetFilterPropertiesArgs
{
Tags = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "category",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"Dev",
"Prod",
},
},
},
new AzureNative.CostManagement.Inputs.BudgetFilterPropertiesArgs
{
Tags = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "department",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"engineering",
"sales",
},
},
},
},
},
Notifications =
{
{ "Actual_GreaterThan_80_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
ContactGroups = new[]
{
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/microsoft.insights/actionGroups/SampleActionGroup",
},
ContactRoles = new[]
{
"Contributor",
"Reader",
},
Enabled = true,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.GreaterThan,
Threshold = 80,
ThresholdType = AzureNative.CostManagement.ThresholdType.Actual,
} },
},
Scope = "subscriptions/00000000-0000-0000-0000-000000000000",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Monthly,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2024-10-31T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
Amount: pulumi.Float64(100.65),
BudgetName: pulumi.String("TestBudget"),
Category: pulumi.String(costmanagement.CategoryTypeCost),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
And: costmanagement.BudgetFilterPropertiesArray{
&costmanagement.BudgetFilterPropertiesArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ResourceId"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/MSVM2"),
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/platformcloudplatformGeneric1"),
},
},
},
&costmanagement.BudgetFilterPropertiesArgs{
Tags: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("category"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("Dev"),
pulumi.String("Prod"),
},
},
},
&costmanagement.BudgetFilterPropertiesArgs{
Tags: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("department"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("engineering"),
pulumi.String("sales"),
},
},
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_GreaterThan_80_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
ContactGroups: pulumi.StringArray{
pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/microsoft.insights/actionGroups/SampleActionGroup"),
},
ContactRoles: pulumi.StringArray{
pulumi.String("Contributor"),
pulumi.String("Reader"),
},
Enabled: pulumi.Bool(true),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeGreaterThan),
Threshold: pulumi.Float64(80),
ThresholdType: pulumi.String(costmanagement.ThresholdTypeActual),
},
},
Scope: pulumi.String("subscriptions/00000000-0000-0000-0000-000000000000"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeMonthly),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2024-10-31T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.amount(100.65)
.budgetName("TestBudget")
.category("Cost")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.and(
BudgetFilterPropertiesArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ResourceId")
.operator("In")
.values(
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/MSVM2",
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/platformcloudplatformGeneric1")
.build())
.build(),
BudgetFilterPropertiesArgs.builder()
.tags(BudgetComparisonExpressionArgs.builder()
.name("category")
.operator("In")
.values(
"Dev",
"Prod")
.build())
.build(),
BudgetFilterPropertiesArgs.builder()
.tags(BudgetComparisonExpressionArgs.builder()
.name("department")
.operator("In")
.values(
"engineering",
"sales")
.build())
.build())
.build())
.notifications(Map.of("Actual_GreaterThan_80_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("contactGroups", "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/microsoft.insights/actionGroups/SampleActionGroup"),
Map.entry("contactRoles",
"Contributor",
"Reader"),
Map.entry("enabled", true),
Map.entry("locale", "en-us"),
Map.entry("operator", "GreaterThan"),
Map.entry("threshold", 80),
Map.entry("thresholdType", "Actual")
)))
.scope("subscriptions/00000000-0000-0000-0000-000000000000")
.timeGrain("Monthly")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2024-10-31T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-BillingAccountEA-AlertRule
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = null,
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Weekly,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/123456",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last7Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyWeekly),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/123456"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast7Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter()
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Weekly"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/123456")
.timeGrain("Last7Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-BillingAccountEA-AlertRule-ReservationIdFilter
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ReservationId",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002",
},
},
},
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Weekly,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/123456",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last7Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ReservationId"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("00000000-0000-0000-0000-000000000000"),
pulumi.String("00000000-0000-0000-0000-000000000001"),
pulumi.String("00000000-0000-0000-0000-000000000002"),
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyWeekly),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/123456"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast7Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetComparisonExpressionArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ReservationId")
.operator("In")
.values(
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002")
.build())
.build())
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Weekly"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/123456")
.timeGrain("Last7Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-BillingAccountEA-AlertRule-ReservedResourceTypeFilter
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ReservedResourceType",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"VirtualMachines",
"SqlDatabases",
"CosmosDb",
},
},
},
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Weekly,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/123456",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last7Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ReservedResourceType"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("VirtualMachines"),
pulumi.String("SqlDatabases"),
pulumi.String("CosmosDb"),
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyWeekly),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/123456"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast7Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetComparisonExpressionArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ReservedResourceType")
.operator("In")
.values(
"VirtualMachines",
"SqlDatabases",
"CosmosDb")
.build())
.build())
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Weekly"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/123456")
.timeGrain("Last7Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-BillingProfileMCA-AlertRule-ReservationIdFilter
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ReservationId",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002",
},
},
},
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Daily,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last30Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ReservationId"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("00000000-0000-0000-0000-000000000000"),
pulumi.String("00000000-0000-0000-0000-000000000001"),
pulumi.String("00000000-0000-0000-0000-000000000002"),
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyDaily),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast30Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetComparisonExpressionArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ReservationId")
.operator("In")
.values(
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002")
.build())
.build())
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Daily"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN")
.timeGrain("Last30Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-BillingProfileMCA-AlertRule-ReservedResourceTypeFilter
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ReservedResourceType",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"VirtualMachines",
"SqlDatabases",
"CosmosDb",
},
},
},
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Daily,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last30Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ReservedResourceType"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("VirtualMachines"),
pulumi.String("SqlDatabases"),
pulumi.String("CosmosDb"),
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyDaily),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast30Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetComparisonExpressionArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ReservedResourceType")
.operator("In")
.values(
"VirtualMachines",
"SqlDatabases",
"CosmosDb")
.build())
.build())
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Daily"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN")
.timeGrain("Last30Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-BillingProfileMCA-AlertRule.json
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = null,
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Daily,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last30Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyDaily),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast30Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter()
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Daily"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN")
.timeGrain("Last30Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-CustomerCSP-AlertRule-ReservationIdFilter
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ReservationId",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002",
},
},
},
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Daily,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last30Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ReservationId"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("00000000-0000-0000-0000-000000000000"),
pulumi.String("00000000-0000-0000-0000-000000000001"),
pulumi.String("00000000-0000-0000-0000-000000000002"),
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyDaily),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast30Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetComparisonExpressionArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ReservationId")
.operator("In")
.values(
"00000000-0000-0000-0000-000000000000",
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002")
.build())
.build())
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Daily"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444")
.timeGrain("Last30Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-CustomerCSP-AlertRule-ReservedResourceTypeFilter
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = new AzureNative.CostManagement.Inputs.BudgetFilterArgs
{
Dimensions = new AzureNative.CostManagement.Inputs.BudgetComparisonExpressionArgs
{
Name = "ReservedResourceType",
Operator = AzureNative.CostManagement.BudgetOperatorType.In,
Values = new[]
{
"VirtualMachines",
"SqlDatabases",
"CosmosDb",
},
},
},
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Daily,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last30Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{
Dimensions: &costmanagement.BudgetComparisonExpressionArgs{
Name: pulumi.String("ReservedResourceType"),
Operator: pulumi.String(costmanagement.BudgetOperatorTypeIn),
Values: pulumi.StringArray{
pulumi.String("VirtualMachines"),
pulumi.String("SqlDatabases"),
pulumi.String("CosmosDb"),
},
},
},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyDaily),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast30Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetComparisonExpressionArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter(BudgetFilterArgs.builder()
.dimensions(BudgetComparisonExpressionArgs.builder()
.name("ReservedResourceType")
.operator("In")
.values(
"VirtualMachines",
"SqlDatabases",
"CosmosDb")
.build())
.build())
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Daily"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444")
.timeGrain("Last30Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
CreateOrUpdate-ReservationUtilization-CustomerCSP-AlertRule.json
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var budget = new AzureNative.CostManagement.Budget("budget", new()
{
BudgetName = "TestAlertRule",
Category = AzureNative.CostManagement.CategoryType.ReservationUtilization,
ETag = "\"1d34d016a593709\"",
Filter = null,
Notifications =
{
{ "Actual_LessThan_99_Percent", new AzureNative.CostManagement.Inputs.NotificationArgs
{
ContactEmails = new[]
{
"johndoe@contoso.com",
"janesmith@contoso.com",
},
Enabled = true,
Frequency = AzureNative.CostManagement.Frequency.Daily,
Locale = AzureNative.CostManagement.CultureCode.En_us,
Operator = AzureNative.CostManagement.BudgetNotificationOperatorType.LessThan,
Threshold = 99,
} },
},
Scope = "providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444",
TimeGrain = AzureNative.CostManagement.TimeGrainType.Last30Days,
TimePeriod = new AzureNative.CostManagement.Inputs.BudgetTimePeriodArgs
{
EndDate = "2025-04-01T00:00:00Z",
StartDate = "2023-04-01T00:00:00Z",
},
});
});
package main
import (
costmanagement "github.com/pulumi/pulumi-azure-native-sdk/costmanagement/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := costmanagement.NewBudget(ctx, "budget", &costmanagement.BudgetArgs{
BudgetName: pulumi.String("TestAlertRule"),
Category: pulumi.String(costmanagement.CategoryTypeReservationUtilization),
ETag: pulumi.String("\"1d34d016a593709\""),
Filter: &costmanagement.BudgetFilterArgs{},
Notifications: costmanagement.NotificationMap{
"Actual_LessThan_99_Percent": &costmanagement.NotificationArgs{
ContactEmails: pulumi.StringArray{
pulumi.String("johndoe@contoso.com"),
pulumi.String("janesmith@contoso.com"),
},
Enabled: pulumi.Bool(true),
Frequency: pulumi.String(costmanagement.FrequencyDaily),
Locale: pulumi.String(costmanagement.CultureCode_En_Us),
Operator: pulumi.String(costmanagement.BudgetNotificationOperatorTypeLessThan),
Threshold: pulumi.Float64(99),
},
},
Scope: pulumi.String("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444"),
TimeGrain: pulumi.String(costmanagement.TimeGrainTypeLast30Days),
TimePeriod: &costmanagement.BudgetTimePeriodArgs{
EndDate: pulumi.String("2025-04-01T00:00:00Z"),
StartDate: pulumi.String("2023-04-01T00:00:00Z"),
},
})
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.azurenative.costmanagement.Budget;
import com.pulumi.azurenative.costmanagement.BudgetArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetFilterArgs;
import com.pulumi.azurenative.costmanagement.inputs.BudgetTimePeriodArgs;
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) {
var budget = new Budget("budget", BudgetArgs.builder()
.budgetName("TestAlertRule")
.category("ReservationUtilization")
.eTag("\"1d34d016a593709\"")
.filter()
.notifications(Map.of("Actual_LessThan_99_Percent", Map.ofEntries(
Map.entry("contactEmails",
"johndoe@contoso.com",
"janesmith@contoso.com"),
Map.entry("enabled", true),
Map.entry("frequency", "Daily"),
Map.entry("locale", "en-us"),
Map.entry("operator", "LessThan"),
Map.entry("threshold", 99)
)))
.scope("providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444")
.timeGrain("Last30Days")
.timePeriod(BudgetTimePeriodArgs.builder()
.endDate("2025-04-01T00:00:00Z")
.startDate("2023-04-01T00:00:00Z")
.build())
.build());
}
}
Import
An existing resource can be imported using its type token, name, and identifier, e.g.
$ pulumi import azure-native:costmanagement:Budget TestAlertRule /{scope}/providers/Microsoft.CostManagement/budgets/{budgetName}
Properties
The Azure API version of the resource.
The current amount of cost which is being tracked for a budget. Supported for CategoryType(s): Cost.
May be used to filter budgets by user-specified dimensions and/or tags. Supported for CategoryType(s): Cost, ReservationUtilization.
The forecasted cost which is being tracked for a budget. Supported for CategoryType(s): Cost.
Dictionary of notifications associated with the budget. Supported for CategoryType(s): Cost, ReservationUtilization.
The time period that defines the active period of the budget. The budget will evaluate data on or after the startDate and will expire on the endDate. Supported for CategoryType(s): Cost, ReservationUtilization. Required for CategoryType(s): Cost, ReservationUtilization.