Policy Exemption
    The policy exemption. Azure REST API version: 2022-07-01-preview. Prior API version in Azure Native 1.x: 2020-07-01-preview.
Example Usage
Create or update a policy exemption
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
    var policyExemption = new AzureNative.Authorization.PolicyExemption("policyExemption", new()
    {
        Description = "Exempt demo cluster from limit sku",
        DisplayName = "Exempt demo cluster",
        ExemptionCategory = "Waiver",
        Metadata =
        {
            { "reason", "Temporary exemption for a expensive VM demo" },
        },
        PolicyAssignmentId = "/subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        PolicyDefinitionReferenceIds = new[]
        {
            "Limit_Skus",
        },
        PolicyExemptionName = "DemoExpensiveVM",
        Scope = "subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/resourceGroups/demoCluster",
    });
});Content copied to clipboard
package main
import (
	"github.com/pulumi/pulumi-azure-native-sdk/authorization/v2"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := authorization.NewPolicyExemption(ctx, "policyExemption", &authorization.PolicyExemptionArgs{
			Description:       pulumi.String("Exempt demo cluster from limit sku"),
			DisplayName:       pulumi.String("Exempt demo cluster"),
			ExemptionCategory: pulumi.String("Waiver"),
			Metadata: pulumi.Any{
				Reason: "Temporary exemption for a expensive VM demo",
			},
			PolicyAssignmentId: pulumi.String("/subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/providers/Microsoft.Authorization/policyAssignments/CostManagement"),
			PolicyDefinitionReferenceIds: pulumi.StringArray{
				pulumi.String("Limit_Skus"),
			},
			PolicyExemptionName: pulumi.String("DemoExpensiveVM"),
			Scope:               pulumi.String("subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/resourceGroups/demoCluster"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.authorization.PolicyExemption;
import com.pulumi.azurenative.authorization.PolicyExemptionArgs;
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 policyExemption = new PolicyExemption("policyExemption", PolicyExemptionArgs.builder()
            .description("Exempt demo cluster from limit sku")
            .displayName("Exempt demo cluster")
            .exemptionCategory("Waiver")
            .metadata(Map.of("reason", "Temporary exemption for a expensive VM demo"))
            .policyAssignmentId("/subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/providers/Microsoft.Authorization/policyAssignments/CostManagement")
            .policyDefinitionReferenceIds("Limit_Skus")
            .policyExemptionName("DemoExpensiveVM")
            .scope("subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/resourceGroups/demoCluster")
            .build());
    }
}Content copied to clipboard
Create or update a policy exemption with resource selectors
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
    var policyExemption = new AzureNative.Authorization.PolicyExemption("policyExemption", new()
    {
        AssignmentScopeValidation = "Default",
        Description = "Exempt demo cluster from limit sku",
        DisplayName = "Exempt demo cluster",
        ExemptionCategory = "Waiver",
        Metadata =
        {
            { "reason", "Temporary exemption for a expensive VM demo" },
        },
        PolicyAssignmentId = "/subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        PolicyDefinitionReferenceIds = new[]
        {
            "Limit_Skus",
        },
        PolicyExemptionName = "DemoExpensiveVM",
        ResourceSelectors = new[]
        {
            new AzureNative.Authorization.Inputs.ResourceSelectorArgs
            {
                Name = "SDPRegions",
                Selectors = new[]
                {
                    new AzureNative.Authorization.Inputs.SelectorArgs
                    {
                        In = new[]
                        {
                            "eastus2euap",
                            "centraluseuap",
                        },
                        Kind = "resourceLocation",
                    },
                },
            },
        },
        Scope = "subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/resourceGroups/demoCluster",
    });
});Content copied to clipboard
package main
import (
	"github.com/pulumi/pulumi-azure-native-sdk/authorization/v2"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := authorization.NewPolicyExemption(ctx, "policyExemption", &authorization.PolicyExemptionArgs{
			AssignmentScopeValidation: pulumi.String("Default"),
			Description:               pulumi.String("Exempt demo cluster from limit sku"),
			DisplayName:               pulumi.String("Exempt demo cluster"),
			ExemptionCategory:         pulumi.String("Waiver"),
			Metadata: pulumi.Any{
				Reason: "Temporary exemption for a expensive VM demo",
			},
			PolicyAssignmentId: pulumi.String("/subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/providers/Microsoft.Authorization/policyAssignments/CostManagement"),
			PolicyDefinitionReferenceIds: pulumi.StringArray{
				pulumi.String("Limit_Skus"),
			},
			PolicyExemptionName: pulumi.String("DemoExpensiveVM"),
			ResourceSelectors: []authorization.ResourceSelectorArgs{
				{
					Name: pulumi.String("SDPRegions"),
					Selectors: authorization.SelectorArray{
						{
							In: pulumi.StringArray{
								pulumi.String("eastus2euap"),
								pulumi.String("centraluseuap"),
							},
							Kind: pulumi.String("resourceLocation"),
						},
					},
				},
			},
			Scope: pulumi.String("subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/resourceGroups/demoCluster"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.authorization.PolicyExemption;
import com.pulumi.azurenative.authorization.PolicyExemptionArgs;
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 policyExemption = new PolicyExemption("policyExemption", PolicyExemptionArgs.builder()
            .assignmentScopeValidation("Default")
            .description("Exempt demo cluster from limit sku")
            .displayName("Exempt demo cluster")
            .exemptionCategory("Waiver")
            .metadata(Map.of("reason", "Temporary exemption for a expensive VM demo"))
            .policyAssignmentId("/subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/providers/Microsoft.Authorization/policyAssignments/CostManagement")
            .policyDefinitionReferenceIds("Limit_Skus")
            .policyExemptionName("DemoExpensiveVM")
            .resourceSelectors(Map.ofEntries(
                Map.entry("name", "SDPRegions"),
                Map.entry("selectors", Map.ofEntries(
                    Map.entry("in",
                        "eastus2euap",
                        "centraluseuap"),
                    Map.entry("kind", "resourceLocation")
                ))
            ))
            .scope("subscriptions/ae640e6b-ba3e-4256-9d62-2993eecfa6f2/resourceGroups/demoCluster")
            .build());
    }
}Content copied to clipboard
Import
An existing resource can be imported using its type token, name, and identifier, e.g.
$ pulumi import azure-native:authorization:PolicyExemption DemoExpensiveVM /{scope}/providers/Microsoft.Authorization/policyExemptions/{policyExemptionName}Content copied to clipboard