import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Logic App (Standard / Single Tenant) * * ## Example Usage * * ### With App Service Plan) * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example", * location: "West Europe", * }); * const exampleAccount = new azure.storage.Account("example", { * name: "examplestorageaccount", * resourceGroupName: example.name, * location: example.location, * accountTier: "Standard", * accountReplicationType: "LRS", * }); * const exampleServicePlan = new azure.appservice.ServicePlan("example", { * name: "example-service-plan", * location: example.location, * resourceGroupName: example.name, * osType: "Windows", * skuName: "WS1", * }); * const exampleStandard = new azure.logicapps.Standard("example", { * name: "example-logic-app", * location: example.location, * resourceGroupName: example.name, * appServicePlanId: exampleAzurermAppServicePlan.id, * storageAccountName: exampleAccount.name, * storageAccountAccessKey: exampleAccount.primaryAccessKey, * appSettings: { * FUNCTIONS_WORKER_RUNTIME: "node", * WEBSITE_NODE_DEFAULT_VERSION: "~18", * }, * }); * ``` * * ### For Container Mode) * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example", * location: "West Europe", * }); * const exampleAccount = new azure.storage.Account("example", { * name: "examplestorageaccount", * resourceGroupName: example.name, * location: example.location, * accountTier: "Standard", * accountReplicationType: "LRS", * }); * const examplePlan = new azure.appservice.Plan("example", { * name: "example-service-plan", * location: example.location, * resourceGroupName: example.name, * kind: "Linux", * reserved: true, * sku: { * tier: "WorkflowStandard", * size: "WS1", * }, * }); * const exampleStandard = new azure.logicapps.Standard("example", { * name: "example-logic-app", * location: example.location, * resourceGroupName: example.name, * appServicePlanId: examplePlan.id, * storageAccountName: exampleAccount.name, * storageAccountAccessKey: exampleAccount.primaryAccessKey, * siteConfig: { * linuxFxVersion: "DOCKER|mcr.microsoft.com/azure-functions/dotnet:3.0-appservice", * }, * appSettings: { * DOCKER_REGISTRY_SERVER_URL: "https://.azurecr.io", * DOCKER_REGISTRY_SERVER_USERNAME: "username", * DOCKER_REGISTRY_SERVER_PASSWORD: "password", * }, * }); * ``` * * ## API Providers * * * This resource uses the following Azure API Providers: * * * `Microsoft.Web` - 2023-12-01, 2023-01-01 * * ## Import * * Logic Apps can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:logicapps/standard:Standard logicapp1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Web/sites/logicapp1 * ``` */ export declare class Standard extends pulumi.CustomResource { /** * Get an existing Standard 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?: StandardState, opts?: pulumi.CustomResourceOptions): Standard; /** * Returns true if the given object is an instance of Standard. 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 Standard; /** * The ID of the App Service Plan within which to create this Logic App. */ readonly appServicePlanId: pulumi.Output; /** * A map of key-value pairs for [App Settings](https://docs.microsoft.com/azure/azure-functions/functions-app-settings) and custom values. * * > **Note:** There are a number of application settings that will be managed for you by this resource type and *shouldn't* be configured separately as part of the appSettings you specify. `AzureWebJobsStorage` is filled based on `storageAccountName` and `storageAccountAccessKey`. `WEBSITE_CONTENTSHARE` is detailed below. `FUNCTIONS_EXTENSION_VERSION` is filled based on `version`. `APP_KIND` is set to workflowApp and `AzureFunctionsJobHost__extensionBundle__id` and `AzureFunctionsJobHost__extensionBundle__version` are set as detailed below. */ readonly appSettings: pulumi.Output<{ [key: string]: string; }>; /** * If `useExtensionBundle` is set to `true` this controls the allowed range for bundle versions. Defaults to `[1.*, 2.0.0)`. */ readonly bundleVersion: pulumi.Output; /** * Should the Logic App send session affinity cookies, which route client requests in the same session to the same instance? */ readonly clientAffinityEnabled: pulumi.Output; /** * The mode of the Logic App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. */ readonly clientCertificateMode: pulumi.Output; /** * A `connectionString` block as defined below. */ readonly connectionStrings: pulumi.Output; /** * An identifier used by App Service to perform domain ownership verification via DNS TXT record. */ readonly customDomainVerificationId: pulumi.Output; /** * The default hostname associated with the Logic App - such as `mysite.azurewebsites.net`. */ readonly defaultHostname: pulumi.Output; /** * Is the Logic App enabled? Defaults to `true`. */ readonly enabled: pulumi.Output; /** * Whether the FTP basic authentication publishing profile is enabled. Defaults to `true`. */ readonly ftpPublishBasicAuthenticationEnabled: pulumi.Output; /** * Can the Logic App only be accessed via HTTPS? Defaults to `false`. */ readonly httpsOnly: pulumi.Output; /** * An `identity` block as defined below. */ readonly identity: pulumi.Output; /** * The Logic App kind. */ readonly kind: pulumi.Output; /** * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. */ readonly location: pulumi.Output; /** * Specifies the name of the Logic App. Changing this forces a new resource to be created. */ readonly name: pulumi.Output; /** * A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12`. */ readonly outboundIpAddresses: pulumi.Output; /** * A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12,52.143.43.17` - not all of which are necessarily in use. Superset of `outboundIpAddresses`. */ readonly possibleOutboundIpAddresses: pulumi.Output; /** * Whether Public Network Access should be enabled or not. Possible values are `Enabled` and `Disabled`. Defaults to `Enabled`. * * > **Note:** Setting this property will also set it in the Site Config. */ readonly publicNetworkAccess: pulumi.Output; /** * The name of the resource group in which to create the Logic App. Changing this forces a new resource to be created. */ readonly resourceGroupName: pulumi.Output; /** * Whether the default SCM basic authentication publishing profile is enabled. Defaults to `true`. */ readonly scmPublishBasicAuthenticationEnabled: pulumi.Output; /** * A `siteConfig` object as defined below. */ readonly siteConfig: pulumi.Output; /** * A `siteCredential` block as defined below, which contains the site-level credentials used to publish to this App Service. */ readonly siteCredentials: pulumi.Output; /** * The access key which will be used to access the backend storage account for the Logic App. */ readonly storageAccountAccessKey: pulumi.Output; /** * The backend storage account name which will be used by this Logic App (e.g. for Stateful workflows data). Changing this forces a new resource to be created. */ readonly storageAccountName: pulumi.Output; /** * The name of the share used by the logic app, if you want to use a custom name. This corresponds to the WEBSITE_CONTENTSHARE appsetting, which this resource will create for you. If you don't specify a name, then this resource will generate a dynamic name. This setting is useful if you want to provision a storage account and create a share using `azure.storage.Share`. * * > **Note:** When integrating a `CI/CD pipeline` and expecting to run from a deployed package in `Azure` you must seed your `app settings` as part of terraform code for Logic App to be successfully deployed. `Important Default key pairs`: (`"WEBSITE_RUN_FROM_PACKAGE" = ""`, `"FUNCTIONS_WORKER_RUNTIME" = "node"` (or Python, etc.), `"WEBSITE_NODE_DEFAULT_VERSION" = "10.14.1"`, `"APPINSIGHTS_INSTRUMENTATIONKEY" = ""`). * * > **Note:** When using an App Service Plan in the `Free` or `Shared` Tiers `use32BitWorkerProcess` must be set to `true`. */ readonly storageAccountShareName: pulumi.Output; /** * A mapping of tags to assign to the resource. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Should the logic app use the bundled extension package? If true, then application settings for `AzureFunctionsJobHost__extensionBundle__id` and `AzureFunctionsJobHost__extensionBundle__version` will be created. Defaults to `true`. */ readonly useExtensionBundle: pulumi.Output; /** * The runtime version associated with the Logic App. Defaults to `~4`. */ readonly version: pulumi.Output; /** * The subnet ID which will be used by this resource for [regional virtual network integration](https://docs.microsoft.com/en-us/azure/app-service/overview-vnet-integration#regional-virtual-network-integration). * * > **Note:** The AzureRM Terraform provider provides regional virtual network integration via the standalone resource appServiceVirtualNetworkSwiftConnection and in-line within this resource using the `virtualNetworkSubnetId` property. You cannot use both methods simultaneously. * * > **Note:** Assigning the `virtualNetworkSubnetId` property requires [RBAC permissions on the subnet](https://docs.microsoft.com/en-us/azure/app-service/overview-vnet-integration#permissions) */ readonly virtualNetworkSubnetId: pulumi.Output; /** * Specifies whether allow routing traffic between the Logic App and Storage Account content share through a virtual network. Defaults to `false`. */ readonly vnetContentShareEnabled: pulumi.Output; /** * Create a Standard 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: StandardArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Standard resources. */ export interface StandardState { /** * The ID of the App Service Plan within which to create this Logic App. */ appServicePlanId?: pulumi.Input; /** * A map of key-value pairs for [App Settings](https://docs.microsoft.com/azure/azure-functions/functions-app-settings) and custom values. * * > **Note:** There are a number of application settings that will be managed for you by this resource type and *shouldn't* be configured separately as part of the appSettings you specify. `AzureWebJobsStorage` is filled based on `storageAccountName` and `storageAccountAccessKey`. `WEBSITE_CONTENTSHARE` is detailed below. `FUNCTIONS_EXTENSION_VERSION` is filled based on `version`. `APP_KIND` is set to workflowApp and `AzureFunctionsJobHost__extensionBundle__id` and `AzureFunctionsJobHost__extensionBundle__version` are set as detailed below. */ appSettings?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * If `useExtensionBundle` is set to `true` this controls the allowed range for bundle versions. Defaults to `[1.*, 2.0.0)`. */ bundleVersion?: pulumi.Input; /** * Should the Logic App send session affinity cookies, which route client requests in the same session to the same instance? */ clientAffinityEnabled?: pulumi.Input; /** * The mode of the Logic App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. */ clientCertificateMode?: pulumi.Input; /** * A `connectionString` block as defined below. */ connectionStrings?: pulumi.Input[]>; /** * An identifier used by App Service to perform domain ownership verification via DNS TXT record. */ customDomainVerificationId?: pulumi.Input; /** * The default hostname associated with the Logic App - such as `mysite.azurewebsites.net`. */ defaultHostname?: pulumi.Input; /** * Is the Logic App enabled? Defaults to `true`. */ enabled?: pulumi.Input; /** * Whether the FTP basic authentication publishing profile is enabled. Defaults to `true`. */ ftpPublishBasicAuthenticationEnabled?: pulumi.Input; /** * Can the Logic App only be accessed via HTTPS? Defaults to `false`. */ httpsOnly?: pulumi.Input; /** * An `identity` block as defined below. */ identity?: pulumi.Input; /** * The Logic App kind. */ kind?: pulumi.Input; /** * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. */ location?: pulumi.Input; /** * Specifies the name of the Logic App. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12`. */ outboundIpAddresses?: pulumi.Input; /** * A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12,52.143.43.17` - not all of which are necessarily in use. Superset of `outboundIpAddresses`. */ possibleOutboundIpAddresses?: pulumi.Input; /** * Whether Public Network Access should be enabled or not. Possible values are `Enabled` and `Disabled`. Defaults to `Enabled`. * * > **Note:** Setting this property will also set it in the Site Config. */ publicNetworkAccess?: pulumi.Input; /** * The name of the resource group in which to create the Logic App. Changing this forces a new resource to be created. */ resourceGroupName?: pulumi.Input; /** * Whether the default SCM basic authentication publishing profile is enabled. Defaults to `true`. */ scmPublishBasicAuthenticationEnabled?: pulumi.Input; /** * A `siteConfig` object as defined below. */ siteConfig?: pulumi.Input; /** * A `siteCredential` block as defined below, which contains the site-level credentials used to publish to this App Service. */ siteCredentials?: pulumi.Input[]>; /** * The access key which will be used to access the backend storage account for the Logic App. */ storageAccountAccessKey?: pulumi.Input; /** * The backend storage account name which will be used by this Logic App (e.g. for Stateful workflows data). Changing this forces a new resource to be created. */ storageAccountName?: pulumi.Input; /** * The name of the share used by the logic app, if you want to use a custom name. This corresponds to the WEBSITE_CONTENTSHARE appsetting, which this resource will create for you. If you don't specify a name, then this resource will generate a dynamic name. This setting is useful if you want to provision a storage account and create a share using `azure.storage.Share`. * * > **Note:** When integrating a `CI/CD pipeline` and expecting to run from a deployed package in `Azure` you must seed your `app settings` as part of terraform code for Logic App to be successfully deployed. `Important Default key pairs`: (`"WEBSITE_RUN_FROM_PACKAGE" = ""`, `"FUNCTIONS_WORKER_RUNTIME" = "node"` (or Python, etc.), `"WEBSITE_NODE_DEFAULT_VERSION" = "10.14.1"`, `"APPINSIGHTS_INSTRUMENTATIONKEY" = ""`). * * > **Note:** When using an App Service Plan in the `Free` or `Shared` Tiers `use32BitWorkerProcess` must be set to `true`. */ storageAccountShareName?: pulumi.Input; /** * A mapping of tags to assign to the resource. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Should the logic app use the bundled extension package? If true, then application settings for `AzureFunctionsJobHost__extensionBundle__id` and `AzureFunctionsJobHost__extensionBundle__version` will be created. Defaults to `true`. */ useExtensionBundle?: pulumi.Input; /** * The runtime version associated with the Logic App. Defaults to `~4`. */ version?: pulumi.Input; /** * The subnet ID which will be used by this resource for [regional virtual network integration](https://docs.microsoft.com/en-us/azure/app-service/overview-vnet-integration#regional-virtual-network-integration). * * > **Note:** The AzureRM Terraform provider provides regional virtual network integration via the standalone resource appServiceVirtualNetworkSwiftConnection and in-line within this resource using the `virtualNetworkSubnetId` property. You cannot use both methods simultaneously. * * > **Note:** Assigning the `virtualNetworkSubnetId` property requires [RBAC permissions on the subnet](https://docs.microsoft.com/en-us/azure/app-service/overview-vnet-integration#permissions) */ virtualNetworkSubnetId?: pulumi.Input; /** * Specifies whether allow routing traffic between the Logic App and Storage Account content share through a virtual network. Defaults to `false`. */ vnetContentShareEnabled?: pulumi.Input; } /** * The set of arguments for constructing a Standard resource. */ export interface StandardArgs { /** * The ID of the App Service Plan within which to create this Logic App. */ appServicePlanId: pulumi.Input; /** * A map of key-value pairs for [App Settings](https://docs.microsoft.com/azure/azure-functions/functions-app-settings) and custom values. * * > **Note:** There are a number of application settings that will be managed for you by this resource type and *shouldn't* be configured separately as part of the appSettings you specify. `AzureWebJobsStorage` is filled based on `storageAccountName` and `storageAccountAccessKey`. `WEBSITE_CONTENTSHARE` is detailed below. `FUNCTIONS_EXTENSION_VERSION` is filled based on `version`. `APP_KIND` is set to workflowApp and `AzureFunctionsJobHost__extensionBundle__id` and `AzureFunctionsJobHost__extensionBundle__version` are set as detailed below. */ appSettings?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * If `useExtensionBundle` is set to `true` this controls the allowed range for bundle versions. Defaults to `[1.*, 2.0.0)`. */ bundleVersion?: pulumi.Input; /** * Should the Logic App send session affinity cookies, which route client requests in the same session to the same instance? */ clientAffinityEnabled?: pulumi.Input; /** * The mode of the Logic App's client certificates requirement for incoming requests. Possible values are `Required`, `Optional`, and `OptionalInteractiveUser`. */ clientCertificateMode?: pulumi.Input; /** * A `connectionString` block as defined below. */ connectionStrings?: pulumi.Input[]>; /** * Is the Logic App enabled? Defaults to `true`. */ enabled?: pulumi.Input; /** * Whether the FTP basic authentication publishing profile is enabled. Defaults to `true`. */ ftpPublishBasicAuthenticationEnabled?: pulumi.Input; /** * Can the Logic App only be accessed via HTTPS? Defaults to `false`. */ httpsOnly?: pulumi.Input; /** * An `identity` block as defined below. */ identity?: pulumi.Input; /** * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. */ location?: pulumi.Input; /** * Specifies the name of the Logic App. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * Whether Public Network Access should be enabled or not. Possible values are `Enabled` and `Disabled`. Defaults to `Enabled`. * * > **Note:** Setting this property will also set it in the Site Config. */ publicNetworkAccess?: pulumi.Input; /** * The name of the resource group in which to create the Logic App. Changing this forces a new resource to be created. */ resourceGroupName: pulumi.Input; /** * Whether the default SCM basic authentication publishing profile is enabled. Defaults to `true`. */ scmPublishBasicAuthenticationEnabled?: pulumi.Input; /** * A `siteConfig` object as defined below. */ siteConfig?: pulumi.Input; /** * The access key which will be used to access the backend storage account for the Logic App. */ storageAccountAccessKey: pulumi.Input; /** * The backend storage account name which will be used by this Logic App (e.g. for Stateful workflows data). Changing this forces a new resource to be created. */ storageAccountName: pulumi.Input; /** * The name of the share used by the logic app, if you want to use a custom name. This corresponds to the WEBSITE_CONTENTSHARE appsetting, which this resource will create for you. If you don't specify a name, then this resource will generate a dynamic name. This setting is useful if you want to provision a storage account and create a share using `azure.storage.Share`. * * > **Note:** When integrating a `CI/CD pipeline` and expecting to run from a deployed package in `Azure` you must seed your `app settings` as part of terraform code for Logic App to be successfully deployed. `Important Default key pairs`: (`"WEBSITE_RUN_FROM_PACKAGE" = ""`, `"FUNCTIONS_WORKER_RUNTIME" = "node"` (or Python, etc.), `"WEBSITE_NODE_DEFAULT_VERSION" = "10.14.1"`, `"APPINSIGHTS_INSTRUMENTATIONKEY" = ""`). * * > **Note:** When using an App Service Plan in the `Free` or `Shared` Tiers `use32BitWorkerProcess` must be set to `true`. */ storageAccountShareName?: pulumi.Input; /** * A mapping of tags to assign to the resource. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Should the logic app use the bundled extension package? If true, then application settings for `AzureFunctionsJobHost__extensionBundle__id` and `AzureFunctionsJobHost__extensionBundle__version` will be created. Defaults to `true`. */ useExtensionBundle?: pulumi.Input; /** * The runtime version associated with the Logic App. Defaults to `~4`. */ version?: pulumi.Input; /** * The subnet ID which will be used by this resource for [regional virtual network integration](https://docs.microsoft.com/en-us/azure/app-service/overview-vnet-integration#regional-virtual-network-integration). * * > **Note:** The AzureRM Terraform provider provides regional virtual network integration via the standalone resource appServiceVirtualNetworkSwiftConnection and in-line within this resource using the `virtualNetworkSubnetId` property. You cannot use both methods simultaneously. * * > **Note:** Assigning the `virtualNetworkSubnetId` property requires [RBAC permissions on the subnet](https://docs.microsoft.com/en-us/azure/app-service/overview-vnet-integration#permissions) */ virtualNetworkSubnetId?: pulumi.Input; /** * Specifies whether allow routing traffic between the Logic App and Storage Account content share through a virtual network. Defaults to `false`. */ vnetContentShareEnabled?: pulumi.Input; }