Rules Engine Args
data class RulesEngineArgs(val frontDoorName: Output<String>? = null, val resourceGroupName: Output<String>? = null, val rules: Output<List<RulesEngineRuleArgs>>? = null, val rulesEngineName: Output<String>? = null) : ConvertibleToJava<RulesEngineArgs>
A rules engine configuration containing a list of rules that will run to modify the runtime behavior of the request and response. Uses Azure REST API version 2021-06-01. In version 1.x of the Azure Native provider, it used API version 2020-05-01.
Example Usage
Create or update a specific Rules Engine Configuration
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var rulesEngine = new AzureNative.Network.RulesEngine("rulesEngine", new()
{
FrontDoorName = "frontDoor1",
ResourceGroupName = "rg1",
Rules = new[]
{
new AzureNative.Network.Inputs.RulesEngineRuleArgs
{
Action = new AzureNative.Network.Inputs.RulesEngineActionArgs
{
RouteConfigurationOverride = new AzureNative.Network.Inputs.RedirectConfigurationArgs
{
CustomFragment = "fragment",
CustomHost = "www.bing.com",
CustomPath = "/api",
CustomQueryString = "a=b",
OdataType = "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration",
RedirectProtocol = AzureNative.Network.FrontDoorRedirectProtocol.HttpsOnly,
RedirectType = AzureNative.Network.FrontDoorRedirectType.Moved,
},
},
MatchConditions = new[]
{
new AzureNative.Network.Inputs.RulesEngineMatchConditionArgs
{
RulesEngineMatchValue = new[]
{
"CH",
},
RulesEngineMatchVariable = AzureNative.Network.RulesEngineMatchVariable.RemoteAddr,
RulesEngineOperator = AzureNative.Network.RulesEngineOperator.GeoMatch,
},
},
MatchProcessingBehavior = AzureNative.Network.MatchProcessingBehavior.Stop,
Name = "Rule1",
Priority = 1,
},
new AzureNative.Network.Inputs.RulesEngineRuleArgs
{
Action = new AzureNative.Network.Inputs.RulesEngineActionArgs
{
ResponseHeaderActions = new[]
{
new AzureNative.Network.Inputs.HeaderActionArgs
{
HeaderActionType = AzureNative.Network.HeaderActionType.Overwrite,
HeaderName = "Cache-Control",
Value = "public, max-age=31536000",
},
},
},
MatchConditions = new[]
{
new AzureNative.Network.Inputs.RulesEngineMatchConditionArgs
{
RulesEngineMatchValue = new[]
{
"jpg",
},
RulesEngineMatchVariable = AzureNative.Network.RulesEngineMatchVariable.RequestFilenameExtension,
RulesEngineOperator = AzureNative.Network.RulesEngineOperator.Equal,
Transforms = new[]
{
AzureNative.Network.Transform.Lowercase,
},
},
},
Name = "Rule2",
Priority = 2,
},
new AzureNative.Network.Inputs.RulesEngineRuleArgs
{
Action = new AzureNative.Network.Inputs.RulesEngineActionArgs
{
RouteConfigurationOverride = new AzureNative.Network.Inputs.ForwardingConfigurationArgs
{
BackendPool = new AzureNative.Network.Inputs.SubResourceArgs
{
Id = "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1",
},
CacheConfiguration = new AzureNative.Network.Inputs.CacheConfigurationArgs
{
CacheDuration = "P1DT12H20M30S",
DynamicCompression = AzureNative.Network.DynamicCompressionEnabled.Disabled,
QueryParameterStripDirective = AzureNative.Network.FrontDoorQuery.StripOnly,
QueryParameters = "a=b,p=q",
},
ForwardingProtocol = AzureNative.Network.FrontDoorForwardingProtocol.HttpsOnly,
OdataType = "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration",
},
},
MatchConditions = new[]
{
new AzureNative.Network.Inputs.RulesEngineMatchConditionArgs
{
NegateCondition = false,
RulesEngineMatchValue = new[]
{
"allowoverride",
},
RulesEngineMatchVariable = AzureNative.Network.RulesEngineMatchVariable.RequestHeader,
RulesEngineOperator = AzureNative.Network.RulesEngineOperator.Equal,
Selector = "Rules-Engine-Route-Forward",
Transforms = new[]
{
AzureNative.Network.Transform.Lowercase,
},
},
},
Name = "Rule3",
Priority = 3,
},
},
RulesEngineName = "rulesEngine1",
});
});
Content copied to clipboard
package main
import (
network "github.com/pulumi/pulumi-azure-native-sdk/network/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := network.NewRulesEngine(ctx, "rulesEngine", &network.RulesEngineArgs{
FrontDoorName: pulumi.String("frontDoor1"),
ResourceGroupName: pulumi.String("rg1"),
Rules: network.RulesEngineRuleArray{
&network.RulesEngineRuleArgs{
Action: &network.RulesEngineActionArgs{
RouteConfigurationOverride: network.RedirectConfiguration{
CustomFragment: "fragment",
CustomHost: "www.bing.com",
CustomPath: "/api",
CustomQueryString: "a=b",
OdataType: "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration",
RedirectProtocol: network.FrontDoorRedirectProtocolHttpsOnly,
RedirectType: network.FrontDoorRedirectTypeMoved,
},
},
MatchConditions: network.RulesEngineMatchConditionArray{
&network.RulesEngineMatchConditionArgs{
RulesEngineMatchValue: pulumi.StringArray{
pulumi.String("CH"),
},
RulesEngineMatchVariable: pulumi.String(network.RulesEngineMatchVariableRemoteAddr),
RulesEngineOperator: pulumi.String(network.RulesEngineOperatorGeoMatch),
},
},
MatchProcessingBehavior: pulumi.String(network.MatchProcessingBehaviorStop),
Name: pulumi.String("Rule1"),
Priority: pulumi.Int(1),
},
&network.RulesEngineRuleArgs{
Action: &network.RulesEngineActionArgs{
ResponseHeaderActions: network.HeaderActionArray{
&network.HeaderActionArgs{
HeaderActionType: pulumi.String(network.HeaderActionTypeOverwrite),
HeaderName: pulumi.String("Cache-Control"),
Value: pulumi.String("public, max-age=31536000"),
},
},
},
MatchConditions: network.RulesEngineMatchConditionArray{
&network.RulesEngineMatchConditionArgs{
RulesEngineMatchValue: pulumi.StringArray{
pulumi.String("jpg"),
},
RulesEngineMatchVariable: pulumi.String(network.RulesEngineMatchVariableRequestFilenameExtension),
RulesEngineOperator: pulumi.String(network.RulesEngineOperatorEqual),
Transforms: pulumi.StringArray{
pulumi.String(network.TransformLowercase),
},
},
},
Name: pulumi.String("Rule2"),
Priority: pulumi.Int(2),
},
&network.RulesEngineRuleArgs{
Action: &network.RulesEngineActionArgs{
RouteConfigurationOverride: network.ForwardingConfiguration{
BackendPool: network.SubResource{
Id: "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1",
},
CacheConfiguration: network.CacheConfiguration{
CacheDuration: "P1DT12H20M30S",
DynamicCompression: network.DynamicCompressionEnabledDisabled,
QueryParameterStripDirective: network.FrontDoorQueryStripOnly,
QueryParameters: "a=b,p=q",
},
ForwardingProtocol: network.FrontDoorForwardingProtocolHttpsOnly,
OdataType: "#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration",
},
},
MatchConditions: network.RulesEngineMatchConditionArray{
&network.RulesEngineMatchConditionArgs{
NegateCondition: pulumi.Bool(false),
RulesEngineMatchValue: pulumi.StringArray{
pulumi.String("allowoverride"),
},
RulesEngineMatchVariable: pulumi.String(network.RulesEngineMatchVariableRequestHeader),
RulesEngineOperator: pulumi.String(network.RulesEngineOperatorEqual),
Selector: pulumi.String("Rules-Engine-Route-Forward"),
Transforms: pulumi.StringArray{
pulumi.String(network.TransformLowercase),
},
},
},
Name: pulumi.String("Rule3"),
Priority: pulumi.Int(3),
},
},
RulesEngineName: pulumi.String("rulesEngine1"),
})
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.network.RulesEngine;
import com.pulumi.azurenative.network.RulesEngineArgs;
import com.pulumi.azurenative.network.inputs.RulesEngineRuleArgs;
import com.pulumi.azurenative.network.inputs.RulesEngineActionArgs;
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 rulesEngine = new RulesEngine("rulesEngine", RulesEngineArgs.builder()
.frontDoorName("frontDoor1")
.resourceGroupName("rg1")
.rules(
RulesEngineRuleArgs.builder()
.action(RulesEngineActionArgs.builder()
.routeConfigurationOverride(ForwardingConfigurationArgs.builder()
.customFragment("fragment")
.customHost("www.bing.com")
.customPath("/api")
.customQueryString("a=b")
.odataType("#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration")
.redirectProtocol("HttpsOnly")
.redirectType("Moved")
.build())
.build())
.matchConditions(RulesEngineMatchConditionArgs.builder()
.rulesEngineMatchValue("CH")
.rulesEngineMatchVariable("RemoteAddr")
.rulesEngineOperator("GeoMatch")
.build())
.matchProcessingBehavior("Stop")
.name("Rule1")
.priority(1)
.build(),
RulesEngineRuleArgs.builder()
.action(RulesEngineActionArgs.builder()
.responseHeaderActions(HeaderActionArgs.builder()
.headerActionType("Overwrite")
.headerName("Cache-Control")
.value("public, max-age=31536000")
.build())
.build())
.matchConditions(RulesEngineMatchConditionArgs.builder()
.rulesEngineMatchValue("jpg")
.rulesEngineMatchVariable("RequestFilenameExtension")
.rulesEngineOperator("Equal")
.transforms("Lowercase")
.build())
.name("Rule2")
.priority(2)
.build(),
RulesEngineRuleArgs.builder()
.action(RulesEngineActionArgs.builder()
.routeConfigurationOverride(ForwardingConfigurationArgs.builder()
.backendPool(SubResourceArgs.builder()
.id("/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/frontDoors/frontDoor1/backendPools/backendPool1")
.build())
.cacheConfiguration(CacheConfigurationArgs.builder()
.cacheDuration("P1DT12H20M30S")
.dynamicCompression("Disabled")
.queryParameterStripDirective("StripOnly")
.queryParameters("a=b,p=q")
.build())
.forwardingProtocol("HttpsOnly")
.odataType("#Microsoft.Azure.FrontDoor.Models.FrontdoorForwardingConfiguration")
.build())
.build())
.matchConditions(RulesEngineMatchConditionArgs.builder()
.negateCondition(false)
.rulesEngineMatchValue("allowoverride")
.rulesEngineMatchVariable("RequestHeader")
.rulesEngineOperator("Equal")
.selector("Rules-Engine-Route-Forward")
.transforms("Lowercase")
.build())
.name("Rule3")
.priority(3)
.build())
.rulesEngineName("rulesEngine1")
.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:network:RulesEngine rulesEngine1 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/frontDoors/{frontDoorName}/rulesEngines/{rulesEngineName}
Content copied to clipboard
Constructors
Link copied to clipboard
constructor(frontDoorName: Output<String>? = null, resourceGroupName: Output<String>? = null, rules: Output<List<RulesEngineRuleArgs>>? = null, rulesEngineName: Output<String>? = null)
Properties
Link copied to clipboard
Name of the Front Door which is globally unique.
Link copied to clipboard
Name of the Resource group within the Azure subscription.
Link copied to clipboard
A list of rules that define a particular Rules Engine Configuration.
Link copied to clipboard
Name of the Rules Engine which is unique within the Front Door.