Skip to content

Commit a2fac3c

Browse files
Merge branch 'MicrosoftDocs:release-microsoft-discovery' into release-microsoft-discovery
2 parents dbfa2c9 + 9ac6baa commit a2fac3c

41 files changed

Lines changed: 1348 additions & 269 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

articles/app-service/reference-app-settings.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ The following table shows environment variable prefixes that App Service uses fo
8787
| `SERVICEBUSCONNSTR_` | Connection string to an instance of Azure Service Bus. |
8888
| `EVENTHUBCONNSTR_` | Connection string to an event hub in Azure Event Hubs. |
8989
| `DOCDBCONNSTR_` | Connection string to a database in Azure Cosmos DB. |
90-
| `REDISCACHECONNSTR_` | Connection string to a cache in Azure Cache for Redis. |
90+
| `REDISCACHECONNSTR_` | Connection string to a Redis cache. |
9191
| `FILESHARESTORAGE_` | Connection string to a custom file share. |
9292

9393
## Deployment

articles/application-gateway/configuration-http-settings.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ This capability establishes direct, one-to-one mapping between frontend and back
181181
>[!NOTE]
182182
>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.
183183
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+
184187
>[!IMPORTANT]
185188
>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.
186189
>

articles/azure-functions/durable-functions/durable-functions-perf-and-scale.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ The following diagram illustrates this concept:
2626
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.
2727

2828
> [!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).
3030
3131
On the Premium plan, automatic scaling keeps the number of workers (and operating cost) roughly proportional to the application's load.
3232

articles/azure-functions/functions-best-practices.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ Both Flex Consumption and Premium plans are recommended for reducing cold starts
192192
| Plan | Guidance |
193193
|:--- |: --- |
194194
| **Flex Consumption plan** |[Use always ready instances to keep instances running](flex-consumption-plan.md#always-ready-instances)<br/>• [Set always ready instance counts](flex-consumption-how-to.md#set-always-ready-instance-counts) |
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-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)|
196196
| **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)|
197197
| **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. |
198198

articles/azure-functions/functions-create-vnet.md

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,18 @@ You create a C# function app in an [Elastic Premium plan](./functions-premium-pl
4242
| **Function App name** | Globally unique name | Name that identifies your new function app. Valid characters are `a-z` (case insensitive), `0-9`, and `-`. |
4343
| **Publish** | Code | Choose to publish code files or a Docker container. |
4444
| **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). |
4646
| **Region** | Preferred region | Choose a [region](https://azure.microsoft.com/explore/global-infrastructure/geographies/) near you or near other services that your functions access. |
4747
| **Operating system** | Windows | This tutorial uses Windows but also works for Linux. |
4848
| **[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). |
4949

50-
1. Select **Next: Storage**. On the **Storage** page, enter the following settings.
50+
1. On the **Storage** page, enter the following settings.
5151

5252
| Setting | Suggested value | Description |
5353
| ------------ | ---------------- | ----------- |
5454
| **[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. |
5555

56-
1. Select **Next: Networking**. On the **Networking** page, enter the following settings.
56+
1. On the **Networking** page, enter the following settings.
5757

5858
> [!NOTE]
5959
> 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
9292
| **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**. |
9393
| **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. |
9494

95-
1. Select **Next: Monitoring**. On the **Monitoring** page, enter the following settings.
95+
1. On the **Monitoring** page, enter the following settings.
9696

9797
| Setting | Suggested value | Description |
9898
| ------------ | ---------------- | ----------- |
9999
| **[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/). |
100100

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+
101107
1. Select **Review + create** to review the app configuration selections.
102108

103109
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
106112

107113
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.
108114

109-
Congratulations! You successfully created your premium function app.
115+
Keep these considerations in mind when creating and deploying your app:
110116

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.
113120

114121
### Create a Service Bus
115122

@@ -196,29 +203,31 @@ Create the queue where your Azure Functions Service Bus trigger gets events:
196203

197204
1. Select **Create**.
198205

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
201207

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.
203209

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)**.
205211

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**.
207213

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**.
209215

210-
## Configure your function app settings
216+
1. On the **Members** tab, for **Assign access to**, select **Managed identity**.
211217

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**.
213219

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.
215221

216-
| Setting | Suggested value | Description |
217-
| ------------ | ---------------- | ---------------- |
218-
| **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**.
220229

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.
222231

223232
:::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.":::
224233

@@ -227,8 +236,10 @@ Create the queue where your Azure Functions Service Bus trigger gets events:
227236
228237
## Deploy a Service Bus trigger and HTTP trigger
229238

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**.
232243

233244
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.
234245

@@ -247,19 +258,21 @@ Create the queue where your Azure Functions Service Bus trigger gets events:
247258
| **Repository** | functions-vnet-tutorial | The repository forked [from here](https://github.com/Azure-Samples/functions-vnet-tutorial). |
248259
| **Branch** | main | The main branch of the repository you created. |
249260
| **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. |
251262

252263
1. Select **Save**.
253264

254265
:::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.":::
255266

256267
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.
257268

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+
258271
Congratulations! You successfully deployed your sample function app.
259272

260273
### Test your locked-down function app
261274

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.
263276

264277
1. In your function app, in the menu under **Monitoring**, select **Application Insights**. Choose **Apply**, and then select **View Application Insights data**.
265278

0 commit comments

Comments
 (0)