You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/application-gateway/configuration-http-settings.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -181,6 +181,9 @@ This capability establishes direct, one-to-one mapping between frontend and back
181
181
>[!NOTE]
182
182
>To enable NTLM or Kerberos passthrough authentication, ensure that the Dedicated Backend Connection setting is turned on. This configuration maintains a one-to-one mapping between frontend and backend connections, which is essential for preserving session integrity required by these authentication protocols.
183
183
184
+
>[!NOTE]
185
+
>If your environment includes legacy clients running older browsers like MSIE 6 or clients that send legacy User-Agent header (eg:MSIE6), enabling Dedicated Backend Connection will lead to connectivity issues. This is due to known defects in MSIE 6's HTTP/1.1 and keep-alive implementations, which can result in unexpected connection failures.To ensure a stable and reliable experience, upgrading these clients to a modern browser or client stack is recommended.
186
+
184
187
>[!IMPORTANT]
185
188
>Dedicated backend connection leads to an increase in the number of backend connections and hence could require more resources to support the increased concurrent connections on Application Gateway and the backend servers. On Application Gateway, you must consider increasing the number of instances or enabling auto scale.
Copy file name to clipboardExpand all lines: articles/azure-functions/durable-functions/durable-functions-perf-and-scale.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ The following diagram illustrates this concept:
26
26
In the Consumption and Elastic Premium plans, Durable Functions supports autoscale through the [Azure Functions scale controller](../event-driven-scaling.md#runtime-scaling). The scale controller monitors how long messages and tasks wait before processing. Based on these latencies, it adds or removes workers.
27
27
28
28
> [!NOTE]
29
-
> Starting with Durable Functions 2.0, you can configure function apps to run in VNet-protected service endpoints in the Elastic Premium plan. In this configuration, the Durable Functions triggers start scale requests instead of the scale controller. For more information, see [Runtime scale monitoring](../functions-networking-options.md#elastic-premium-plan-with-virtual-network-triggers).
29
+
> Starting with Durable Functions 2.0, you can configure function apps to run in virtual network-protected service endpoints in the Elastic Premium plan. In this configuration, the Durable Functions triggers start scale requests instead of the scale controller. For more information, see [Runtime scale monitoring](../functions-target-based-scaling.md#premium-plan-with-runtime-scale-monitoring-enabled).
30
30
31
31
On the Premium plan, automatic scaling keeps the number of workers (and operating cost) roughly proportional to the application's load.
|**Premium plan**| • [Implement a Warmup trigger in your function app](functions-bindings-warmup.md)<br/>• [Set the values for Always-Ready instances and Max Burst limit](functions-premium-plan.md#plan-and-sku-settings)<br/>• [Use virtual network trigger support when using non-HTTP triggers on a virtual network](functions-networking-options.md#elastic-premium-plan-with-virtual-network-triggers)|
195
+
|**Premium plan**| • [Implement a Warmup trigger in your function app](functions-bindings-warmup.md)<br/>• [Set the values for Always-Ready instances and Max Burst limit](functions-premium-plan.md#plan-and-sku-settings)<br/>• [Use virtual network trigger support when using non-HTTP triggers on a virtual network](./functions-target-based-scaling.md#premium-plan-with-runtime-scale-monitoring-enabled)|
196
196
|**Dedicated plans**| • [Run on at least two instances with Azure App Service Health Check enabled](../app-service/monitor-instances-health-check.md)<br/>• [Implement autoscaling](/azure/architecture/best-practices/auto-scaling)|
197
197
|**Consumption plan**| • Review your use of Singleton patterns and the concurrency settings for bindings and triggers to avoid artificially placing limits on how your function app scales.<br/>• [Review the `functionAppScaleLimit` setting, which can limit scale-out](event-driven-scaling.md#limit-scale-out)<br/>• Check for a Daily Usage Quota (GB-Sec) limit set during development and testing. Consider removing this limit in production environments. |
Copy file name to clipboardExpand all lines: articles/azure-functions/functions-create-vnet.md
+38-25Lines changed: 38 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,18 +42,18 @@ You create a C# function app in an [Elastic Premium plan](./functions-premium-pl
42
42
|**Function App name**| Globally unique name | Name that identifies your new function app. Valid characters are `a-z` (case insensitive), `0-9`, and `-`. |
43
43
|**Publish**| Code | Choose to publish code files or a Docker container. |
44
44
|**Runtime stack**| .NET | This tutorial uses .NET. |
45
-
|**Version**| 8 (LTS)| This tutorial uses .NET 8.0 running [in the same process as the Functions host](./functions-dotnet-class-library.md). |
45
+
|**Version**| 8 (LTS), Isolated worker model | This tutorial uses .NET 8.0 running in the [isolated worker model](./dotnet-isolated-process-guide.md). |
46
46
|**Region**| Preferred region | Choose a [region](https://azure.microsoft.com/explore/global-infrastructure/geographies/) near you or near other services that your functions access. |
47
47
|**Operating system**| Windows | This tutorial uses Windows but also works for Linux. |
48
48
|**[Plan](./functions-scale.md)**| Functions Premium | Hosting plan that defines how resources are allocated to your function app. By default, when you select **Premium**, a new App Service plan is created. The default **Sku and size** is **EP1**, where *EP* stands for _elastic premium_. For more information, see the list of [Premium SKUs](./functions-premium-plan.md#available-instance-skus).<br/><br/>When you run JavaScript functions on a Premium plan, choose an instance that has fewer vCPUs. For more information, see [Choose single-core Premium plans](./functions-reference-node.md#considerations-for-javascript-functions). |
49
49
50
-
1.Select **Next: Storage**. On the **Storage** page, enter the following settings.
50
+
1. On the **Storage** page, enter the following settings.
51
51
52
52
| Setting | Suggested value | Description |
53
53
| ------------ | ---------------- | ----------- |
54
54
|**[Storage account](../storage/common/storage-account-create.md)**| Globally unique name | Create a storage account used by your function app. Storage account names must be between 3 and 24 characters long. They might contain numbers and lowercase letters only. You can also use an existing account that isn't restricted by firewall rules and meets the [storage account requirements](./storage-considerations.md#storage-account-requirements). When you use Functions with a locked down storage account, you need a v2 storage account. This version is the default storage version created when creating a function app with networking capabilities through the Azure portal. |
55
55
56
-
1.Select **Next: Networking**. On the **Networking** page, enter the following settings.
56
+
1. On the **Networking** page, enter the following settings.
57
57
58
58
> [!NOTE]
59
59
> Some of these settings aren't visible until other options are selected.
@@ -92,12 +92,18 @@ You create a C# function app in an [Elastic Premium plan](./functions-premium-pl
92
92
|**Private endpoint subnet**| Create New | This setting creates a new subnet for your inbound private endpoint on the storage account. Multiple private endpoints might be added to a singular subnet. Provide a **Subnet Name**. The **Subnet Address Block** might be left at the default value. Select **Ok**. |
93
93
|**DNS**| Azure Private DNS Zone | This value indicates which DNS server your private endpoint uses. In most cases if you're working within Azure, Azure Private DNS Zone is the DNS zone you should use as using **Manual** for custom DNS zones will have increased complexity. |
94
94
95
-
1.Select **Next: Monitoring**. On the **Monitoring** page, enter the following settings.
95
+
1. On the **Monitoring** page, enter the following settings.
96
96
97
97
| Setting | Suggested value | Description |
98
98
| ------------ | ---------------- | ----------- |
99
99
|**[Application Insights](./functions-monitoring.md)**| Default | Create an Application Insights resource of the same app name in the nearest supported region. Expand this setting if you need to change the **New resource name** or store your data in a different **Location** in an [Azure geography](https://azure.microsoft.com/explore/global-infrastructure/geographies/). |
100
100
101
+
1. On the **Advanced** page, enable the following setting.
102
+
103
+
| Setting | Suggested value | Description |
104
+
| ------------ | ---------------- | ----------- |
105
+
|**System assigned identity**| On | Enables a system-assigned managed identity for the function app, which you use later to connect to Service Bus without connection strings. |
106
+
101
107
1. Select **Review + create** to review the app configuration selections.
102
108
103
109
1. On the **Review + create** page, review your settings. Then select **Create** to create and deploy the function app.
@@ -106,10 +112,11 @@ You create a C# function app in an [Elastic Premium plan](./functions-premium-pl
106
112
107
113
1. Select **Go to resource** to view your new function app. You can also select **Pin to dashboard**. Pinning makes it easier to return to this function app resource from your dashboard.
108
114
109
-
Congratulations! You successfully created your premium function app.
115
+
Keep these considerations in mind when creating and deploying your app:
110
116
111
-
> [!NOTE]
112
-
> Some deployments might occasionally fail to create the private endpoints in the storage account with the error `StorageAccountOperationInProgress`. This failure occurs even though the function app itself gets created successfully. When you encounter such an error, delete the function app and retry the operation. You can instead create the private endpoints on the storage account manually.
117
+
- When you create a Premium plan function app in the portal with a storage account that uses private endpoints, the portal automatically sets the `vnetContentShareEnabled` site property to `true`. This property ensures that traffic to the Azure Files content share, used to scale-out a Premium plan app, is routed through the virtual network. For more information, see the [vnetContentShareEnabled](functions-app-settings.md#vnetcontentshareenabled) site property reference. For automated deployments, you must explicitly set this site property in your deployment template. For more information, see [Secured deployments](functions-infrastructure-as-code.md?pivots=premium-plan#secured-deployments).
118
+
119
+
- Some deployments might occasionally fail to create the private endpoints in the storage account with the error `StorageAccountOperationInProgress`. This failure occurs even though the function app itself gets created successfully. When you encounter such an error, delete the function app and retry the operation. You can instead create the private endpoints on the storage account manually.
113
120
114
121
### Create a Service Bus
115
122
@@ -196,29 +203,31 @@ Create the queue where your Azure Functions Service Bus trigger gets events:
196
203
197
204
1. Select **Create**.
198
205
199
-
> [!IMPORTANT]
200
-
> This tutorial currently shows you how to connect to Service Bus using a connection string, which requires you to handle a share secret. For improved security, you should instead use managed identities when connecting to Service Bus from your app. For more information, see [Identity-based connections](functions-bindings-service-bus-trigger.md?tabs=identity-based#connections) in the Service Bus binding reference article.
206
+
## Grant your function app access to Service Bus
201
207
202
-
## Get a Service Bus connection string
208
+
Since you enabled a system-assigned managed identity during app creation, you can now use role-based access control (RBAC) to grant the function app access to your Service Bus.
203
209
204
-
1. In your Service Bus, in the menu under **Settings**, select **Shared access policies**.
210
+
1. In your Service Bus namespace, select **Access control (IAM)**.
205
211
206
-
1. Select **RootManageSharedAccessKey**. Copy and save the **Primary Connection String**. You need this connection string when you configure the app settings.
212
+
1. Select **Add** > **Add role assignment**.
207
213
208
-
:::image type="content" source="./media/functions-create-vnet/7-get-service-bus-connection-string.png" alt-text="Screenshot of how to get a Service Bus connection string.":::
214
+
1. Search for **Azure Service Bus Data Receiver**, select the role, and then select **Next**.
209
215
210
-
## Configure your function app settings
216
+
1. On the **Members** tab, for **Assign access to**, select **Managed identity**.
211
217
212
-
1.In your function app, in the menu under **Settings**, select **Configuration**.
218
+
1.Select **+ Select members**, find and select the managed identity for your function app, and then select **Select**.
213
219
214
-
1.To use your function app with virtual networks and service bus, update the app settings shown in the following table. To add or edit a setting, select **+ New application setting**or the **Edit** icon in the rightmost column of the app settings table. When you finish, select **Save**.
220
+
1.Select **Review + assign**to complete the role assignment.
|**SERVICEBUS_CONNECTION**| myServiceBusConnectionString | Create this app setting for the connection string of your Service Bus. This storage connection string is from the [Get a Service Bus connection string](#get-a-service-bus-connection-string) section. |
219
-
|**WEBSITE_CONTENTOVERVNET**| 1 | Create this app setting. A value of 1 enables your function app to scale when your storage account is restricted to a virtual network. |
222
+
For more information about identity-based connections, see [Identity-based connections](functions-bindings-service-bus-trigger.md?tabs=extensionv5#connections) in the Service Bus binding reference article.
223
+
224
+
## Configure your function app settings
225
+
226
+
1. In your function app, in the menu under **Settings**, select **Environment variables**.
227
+
228
+
1. To connect your function app to the Service Bus using managed identity, you need to add a Service Bus namespace setting. Select **+ Add** to create a new setting named **SERVICEBUS_CONNECTION__fullyQualifiedNamespace** with a value of **\<SERVICE_BUS_NAMESPACE\>.servicebus.windows.net**, replacing **\<SERVICE_BUS_NAMESPACE\>** with the name of your Service Bus namespace. When you finish, select **Apply**.
220
229
221
-
1. Since you're using an Elastic Premium hosting plan, In the **Configuration** view, select the **Function runtime settings** tab. Set **Runtime Scale Monitoring** to **On**. Then select **Apply**. Runtime-driven scaling allows you to connect non-HTTP trigger functions to services that run inside your virtual network.
230
+
1. Since you're using an Elastic Premium hosting plan, In the **Environment variables** view, select the **App settings** tab. Verify that the **FUNCTIONS_WORKER_RUNTIME** setting has a value of **dotnet-isolated**. Then select the **Function runtime settings** tab. Set **Runtime Scale Monitoring** to **On**. Then select **Apply**. Runtime-driven scaling allows you to connect non-HTTP trigger functions to services that run inside your virtual network.
222
231
223
232
:::image type="content" source="./media/functions-create-vnet/11-enable-runtime-scaling.png" alt-text="Screenshot of how to enable runtime-driven scaling for Azure Functions.":::
224
233
@@ -227,8 +236,10 @@ Create the queue where your Azure Functions Service Bus trigger gets events:
227
236
228
237
## Deploy a Service Bus trigger and HTTP trigger
229
238
230
-
> [!NOTE]
231
-
> Enabling private endpoints on a function app also makes the Source Control Manager (SCM) site publicly inaccessible. The following instructions give deployment directions using the Deployment Center within the function app. Alternatively, use [zip deploy](functions-deployment-technologies.md#zip-deploy) or [self-hosted](/azure/devops/pipelines/agents/docker) agents that are deployed into a subnet on the virtual network.
239
+
> [!IMPORTANT]
240
+
> Because public access is disabled, the SCM deployment site isn't reachable. You must temporarily re-enable public access so that Deployment Center can deploy your code. For production workloads, deploy from a [self-hosted](/azure/devops/pipelines/agents/docker) agent deployed into a subnet on the virtual network, or connect your development machine by using a [point-to-site VPN](../vpn-gateway/point-to-site-about.md). For more information, see [Secured virtual networks](functions-deployment-technologies.md#secured-virtual-networks).
241
+
242
+
1. In your function app, in the menu under **Settings**, select **Networking**. Set **Public network access** to **Enabled from select virtual networks and IP addresses**, and then select **Save**.
232
243
233
244
1. In GitHub, go to the following sample repository. It contains a function app and two functions, an HTTP trigger, and a Service Bus queue trigger.
234
245
@@ -247,19 +258,21 @@ Create the queue where your Azure Functions Service Bus trigger gets events:
247
258
|**Repository**| functions-vnet-tutorial | The repository forked [from here](https://github.com/Azure-Samples/functions-vnet-tutorial). |
248
259
|**Branch**| main | The main branch of the repository you created. |
249
260
|**Runtime stack**| .NET | The sample code is in C#. |
250
-
|**Version**| .NET Core 3.1| The runtime version. |
261
+
|**Version**| .NET 8 Isolated| The runtime version. |
251
262
252
263
1. Select **Save**.
253
264
254
265
:::image type="content" source="./media/functions-create-vnet/12-deploy-portal.png" alt-text="Screenshot of how to deploy Azure Functions code through the portal.":::
255
266
256
267
1. Your initial deployment might take a few minutes. When your app is successfully deployed, on the **Logs** tab, you see a **Success (Active)** status message. If necessary, refresh the page.
257
268
269
+
1. Now that deployment is complete, re-secure your app. In your function app, go to **Settings** > **Networking** and set **Public network access** back to **Disabled**. Select **Save**.
270
+
258
271
Congratulations! You successfully deployed your sample function app.
259
272
260
273
### Test your locked-down function app
261
274
262
-
Here's a way to monitor your function by using Application Insights:
275
+
Because the function app has public access disabled, you can't invoke the HTTP trigger endpoint from the public internet. Instead, you verify the Service Bus queue trigger by sending a message and monitoring the function execution in Application Insights.
263
276
264
277
1. In your function app, in the menu under **Monitoring**, select **Application Insights**. Choose **Apply**, and then select **View Application Insights data**.
0 commit comments