import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Front Door (standard/premium) Route. * * > **Note:** The `azure.cdn.FrontdoorRoute` resource must **explicitly** reference its associated `azure.cdn.FrontdoorOrigin` resource(s). This can be achieved either by using a `dependsOn` meta-argument that points to the `azure.cdn.FrontdoorOrigin` resource(s), or by specifying the `azure.cdn.FrontdoorOrigin` IDs via the `cdnFrontdoorOriginIds` field. * * ## Example Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * import * as std from "@pulumi/std"; * * const example = new azure.core.ResourceGroup("example", { * name: "example-cdn-frontdoor", * location: "West Europe", * }); * const exampleZone = new azure.dns.Zone("example", { * name: "example.com", * resourceGroupName: example.name, * }); * const exampleFrontdoorProfile = new azure.cdn.FrontdoorProfile("example", { * name: "example-profile", * resourceGroupName: example.name, * skuName: "Standard_AzureFrontDoor", * }); * const exampleFrontdoorOriginGroup = new azure.cdn.FrontdoorOriginGroup("example", { * name: "example-originGroup", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * loadBalancing: { * additionalLatencyInMilliseconds: 0, * sampleSize: 16, * successfulSamplesRequired: 3, * }, * }); * const exampleFrontdoorOrigin = new azure.cdn.FrontdoorOrigin("example", { * name: "example-origin", * cdnFrontdoorOriginGroupId: exampleFrontdoorOriginGroup.id, * enabled: true, * certificateNameCheckEnabled: false, * hostName: "contoso.com", * httpPort: 80, * httpsPort: 443, * originHostHeader: "www.contoso.com", * priority: 1, * weight: 1, * }); * const exampleFrontdoorEndpoint = new azure.cdn.FrontdoorEndpoint("example", { * name: "example-endpoint", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * }); * const exampleFrontdoorRuleSet = new azure.cdn.FrontdoorRuleSet("example", { * name: "ExampleRuleSet", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * }); * const contoso = new azure.cdn.FrontdoorCustomDomain("contoso", { * name: "contoso-custom-domain", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * dnsZoneId: exampleZone.id, * hostName: std.joinOutput({ * separator: ".", * input: [ * "contoso", * exampleZone.name, * ], * }).apply(invoke => invoke.result), * tls: { * certificateType: "ManagedCertificate", * minimumTlsVersion: "TLS12", * }, * }); * const fabrikam = new azure.cdn.FrontdoorCustomDomain("fabrikam", { * name: "fabrikam-custom-domain", * cdnFrontdoorProfileId: exampleFrontdoorProfile.id, * dnsZoneId: exampleZone.id, * hostName: std.joinOutput({ * separator: ".", * input: [ * "fabrikam", * exampleZone.name, * ], * }).apply(invoke => invoke.result), * tls: { * certificateType: "ManagedCertificate", * minimumTlsVersion: "TLS12", * }, * }); * const exampleFrontdoorRoute = new azure.cdn.FrontdoorRoute("example", { * name: "example-route", * cdnFrontdoorEndpointId: exampleFrontdoorEndpoint.id, * cdnFrontdoorOriginGroupId: exampleFrontdoorOriginGroup.id, * cdnFrontdoorOriginIds: [exampleFrontdoorOrigin.id], * cdnFrontdoorRuleSetIds: [exampleFrontdoorRuleSet.id], * enabled: true, * forwardingProtocol: "HttpsOnly", * httpsRedirectEnabled: true, * patternsToMatches: ["/*"], * supportedProtocols: [ * "Http", * "Https", * ], * cdnFrontdoorCustomDomainIds: [ * contoso.id, * fabrikam.id, * ], * linkToDefaultDomain: false, * cache: { * queryStringCachingBehavior: "IgnoreSpecifiedQueryStrings", * queryStrings: [ * "account", * "settings", * ], * compressionEnabled: true, * contentTypesToCompresses: [ * "text/html", * "text/javascript", * "text/xml", * ], * }, * }); * const contosoFrontdoorCustomDomainAssociation = new azure.cdn.FrontdoorCustomDomainAssociation("contoso", { * cdnFrontdoorCustomDomainId: contoso.id, * cdnFrontdoorRouteIds: [exampleFrontdoorRoute.id], * }); * const fabrikamFrontdoorCustomDomainAssociation = new azure.cdn.FrontdoorCustomDomainAssociation("fabrikam", { * cdnFrontdoorCustomDomainId: fabrikam.id, * cdnFrontdoorRouteIds: [exampleFrontdoorRoute.id], * }); * ``` * * ## Import * * Front Door Routes can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:cdn/frontdoorRoute:FrontdoorRoute example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceGroup1/providers/Microsoft.Cdn/profiles/profile1/afdEndpoints/endpoint1/routes/route1 * ``` */ export declare class FrontdoorRoute extends pulumi.CustomResource { /** * Get an existing FrontdoorRoute resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: FrontdoorRouteState, opts?: pulumi.CustomResourceOptions): FrontdoorRoute; /** * Returns true if the given object is an instance of FrontdoorRoute. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is FrontdoorRoute; /** * A `cache` block as defined below. * * > **Note:** To disable caching, do not provide the `cache` block in the configuration file. */ readonly cache: pulumi.Output; /** * The IDs of the Front Door Custom Domains which are associated with this Front Door Route. */ readonly cdnFrontdoorCustomDomainIds: pulumi.Output; /** * The resource ID of the Front Door Endpoint where this Front Door Route should exist. Changing this forces a new Front Door Route to be created. */ readonly cdnFrontdoorEndpointId: pulumi.Output; /** * The resource ID of the Front Door Origin Group where this Front Door Route should be created. */ readonly cdnFrontdoorOriginGroupId: pulumi.Output; /** * One or more Front Door Origin resource IDs for this Front Door Route. * * > **Note:** The `cdnFrontdoorOriginIds` field is not transmitted to the Azure API; it is used exclusively by Terraform to determine correct resource provisioning and destruction order. If this field is omitted, a `dependsOn` meta-argument referencing the corresponding `azure.cdn.FrontdoorOrigin` resource(s) is required. When importing an existing `azure.cdn.FrontdoorRoute resource`, you must manually add either the `cdnFrontdoorOriginIds` field or the `dependsOn` meta-argument to the configuration post-import. */ readonly cdnFrontdoorOriginIds: pulumi.Output; /** * A directory path on the Front Door Origin that can be used to retrieve content (e.g. `contoso.cloudapp.net/originpath`). */ readonly cdnFrontdoorOriginPath: pulumi.Output; /** * A list of the Front Door Rule Set IDs which should be assigned to this Front Door Route. */ readonly cdnFrontdoorRuleSetIds: pulumi.Output; /** * Is this Front Door Route enabled? Possible values are `true` or `false`. Defaults to `true`. */ readonly enabled: pulumi.Output; /** * The Protocol that will be use when forwarding traffic to backends. Possible values are `HttpOnly`, `HttpsOnly` or `MatchRequest`. Defaults to `MatchRequest`. */ readonly forwardingProtocol: pulumi.Output; /** * Automatically redirect HTTP traffic to HTTPS traffic? Possible values are `true` or `false`. Defaults to `true`. * * > **Note:** The `httpsRedirectEnabled` rule is the first rule that will be executed. */ readonly httpsRedirectEnabled: pulumi.Output; /** * Should this Front Door Route be linked to the default endpoint? Possible values include `true` or `false`. Defaults to `true`. */ readonly linkToDefaultDomain: pulumi.Output; /** * The name which should be used for this Front Door Route. Valid values must begin with a letter or number, end with a letter or number and may only contain letters, numbers and hyphens with a maximum length of 90 characters. Changing this forces a new Front Door Route to be created. */ readonly name: pulumi.Output; /** * The route patterns of the rule. */ readonly patternsToMatches: pulumi.Output; /** * One or more Protocols supported by this Front Door Route. Possible values are `Http` or `Https`. * * > **Note:** If `httpsRedirectEnabled` is set to `true` the `supportedProtocols` field must contain both `Http` and `Https` values. */ readonly supportedProtocols: pulumi.Output; /** * Create a FrontdoorRoute resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: FrontdoorRouteArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering FrontdoorRoute resources. */ export interface FrontdoorRouteState { /** * A `cache` block as defined below. * * > **Note:** To disable caching, do not provide the `cache` block in the configuration file. */ cache?: pulumi.Input; /** * The IDs of the Front Door Custom Domains which are associated with this Front Door Route. */ cdnFrontdoorCustomDomainIds?: pulumi.Input[]>; /** * The resource ID of the Front Door Endpoint where this Front Door Route should exist. Changing this forces a new Front Door Route to be created. */ cdnFrontdoorEndpointId?: pulumi.Input; /** * The resource ID of the Front Door Origin Group where this Front Door Route should be created. */ cdnFrontdoorOriginGroupId?: pulumi.Input; /** * One or more Front Door Origin resource IDs for this Front Door Route. * * > **Note:** The `cdnFrontdoorOriginIds` field is not transmitted to the Azure API; it is used exclusively by Terraform to determine correct resource provisioning and destruction order. If this field is omitted, a `dependsOn` meta-argument referencing the corresponding `azure.cdn.FrontdoorOrigin` resource(s) is required. When importing an existing `azure.cdn.FrontdoorRoute resource`, you must manually add either the `cdnFrontdoorOriginIds` field or the `dependsOn` meta-argument to the configuration post-import. */ cdnFrontdoorOriginIds?: pulumi.Input[]>; /** * A directory path on the Front Door Origin that can be used to retrieve content (e.g. `contoso.cloudapp.net/originpath`). */ cdnFrontdoorOriginPath?: pulumi.Input; /** * A list of the Front Door Rule Set IDs which should be assigned to this Front Door Route. */ cdnFrontdoorRuleSetIds?: pulumi.Input[]>; /** * Is this Front Door Route enabled? Possible values are `true` or `false`. Defaults to `true`. */ enabled?: pulumi.Input; /** * The Protocol that will be use when forwarding traffic to backends. Possible values are `HttpOnly`, `HttpsOnly` or `MatchRequest`. Defaults to `MatchRequest`. */ forwardingProtocol?: pulumi.Input; /** * Automatically redirect HTTP traffic to HTTPS traffic? Possible values are `true` or `false`. Defaults to `true`. * * > **Note:** The `httpsRedirectEnabled` rule is the first rule that will be executed. */ httpsRedirectEnabled?: pulumi.Input; /** * Should this Front Door Route be linked to the default endpoint? Possible values include `true` or `false`. Defaults to `true`. */ linkToDefaultDomain?: pulumi.Input; /** * The name which should be used for this Front Door Route. Valid values must begin with a letter or number, end with a letter or number and may only contain letters, numbers and hyphens with a maximum length of 90 characters. Changing this forces a new Front Door Route to be created. */ name?: pulumi.Input; /** * The route patterns of the rule. */ patternsToMatches?: pulumi.Input[]>; /** * One or more Protocols supported by this Front Door Route. Possible values are `Http` or `Https`. * * > **Note:** If `httpsRedirectEnabled` is set to `true` the `supportedProtocols` field must contain both `Http` and `Https` values. */ supportedProtocols?: pulumi.Input[]>; } /** * The set of arguments for constructing a FrontdoorRoute resource. */ export interface FrontdoorRouteArgs { /** * A `cache` block as defined below. * * > **Note:** To disable caching, do not provide the `cache` block in the configuration file. */ cache?: pulumi.Input; /** * The IDs of the Front Door Custom Domains which are associated with this Front Door Route. */ cdnFrontdoorCustomDomainIds?: pulumi.Input[]>; /** * The resource ID of the Front Door Endpoint where this Front Door Route should exist. Changing this forces a new Front Door Route to be created. */ cdnFrontdoorEndpointId: pulumi.Input; /** * The resource ID of the Front Door Origin Group where this Front Door Route should be created. */ cdnFrontdoorOriginGroupId: pulumi.Input; /** * One or more Front Door Origin resource IDs for this Front Door Route. * * > **Note:** The `cdnFrontdoorOriginIds` field is not transmitted to the Azure API; it is used exclusively by Terraform to determine correct resource provisioning and destruction order. If this field is omitted, a `dependsOn` meta-argument referencing the corresponding `azure.cdn.FrontdoorOrigin` resource(s) is required. When importing an existing `azure.cdn.FrontdoorRoute resource`, you must manually add either the `cdnFrontdoorOriginIds` field or the `dependsOn` meta-argument to the configuration post-import. */ cdnFrontdoorOriginIds?: pulumi.Input[]>; /** * A directory path on the Front Door Origin that can be used to retrieve content (e.g. `contoso.cloudapp.net/originpath`). */ cdnFrontdoorOriginPath?: pulumi.Input; /** * A list of the Front Door Rule Set IDs which should be assigned to this Front Door Route. */ cdnFrontdoorRuleSetIds?: pulumi.Input[]>; /** * Is this Front Door Route enabled? Possible values are `true` or `false`. Defaults to `true`. */ enabled?: pulumi.Input; /** * The Protocol that will be use when forwarding traffic to backends. Possible values are `HttpOnly`, `HttpsOnly` or `MatchRequest`. Defaults to `MatchRequest`. */ forwardingProtocol?: pulumi.Input; /** * Automatically redirect HTTP traffic to HTTPS traffic? Possible values are `true` or `false`. Defaults to `true`. * * > **Note:** The `httpsRedirectEnabled` rule is the first rule that will be executed. */ httpsRedirectEnabled?: pulumi.Input; /** * Should this Front Door Route be linked to the default endpoint? Possible values include `true` or `false`. Defaults to `true`. */ linkToDefaultDomain?: pulumi.Input; /** * The name which should be used for this Front Door Route. Valid values must begin with a letter or number, end with a letter or number and may only contain letters, numbers and hyphens with a maximum length of 90 characters. Changing this forces a new Front Door Route to be created. */ name?: pulumi.Input; /** * The route patterns of the rule. */ patternsToMatches: pulumi.Input[]>; /** * One or more Protocols supported by this Front Door Route. Possible values are `Http` or `Https`. * * > **Note:** If `httpsRedirectEnabled` is set to `true` the `supportedProtocols` field must contain both `Http` and `Https` values. */ supportedProtocols: pulumi.Input[]>; }