Skip to content

Commit 3321740

Browse files
committed
resolve merge conflict
2 parents 5775a56 + cd4dff8 commit 3321740

File tree

80 files changed

+1106
-724
lines changed

Some content is hidden

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

80 files changed

+1106
-724
lines changed
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
{
22
"redirections": [
3+
{
4+
"source_path_from_root": "/articles/azure-functions/functions-bindings-return-value.md",
5+
"redirect_url": "/azure/azure-functions/functions-triggers-bindings",
6+
"redirect_document_id": false
7+
},
38
{
49
"source_path_from_root": "/articles/azure-functions/durable/durable-functions-configure-durable-functions-with-credentials.md",
510
"redirect_url": "/azure/azure-functions/durable/durable-functions-configure-managed-identity",
611
"redirect_document_id": false
7-
}
12+
}
813
]
914
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: Route traffic using parameter based path selection in portal - Azure Application Gateway
3+
description: Learn how to use the Azure portal to configure an Azure Application Gateway to choose the backend pool based on the value of a header, part of URL, or query string in the request.
4+
services: application-gateway
5+
author: greg-lindsay
6+
ms.service: azure-application-gateway
7+
ms.topic: how-to
8+
ms.date: 09/10/2024
9+
ms.author: greglin
10+
ms.custom: mvc
11+
---
12+
# Perform parameter based path selection with Azure Application Gateway - Azure portal
13+
14+
This article describes how to use the Azure portal to configure an [Application Gateway v2 SKU](./application-gateway-autoscaling-zone-redundant.md) instance to perform parameter based path selection by combining the capabilities of URL Rewrite with path-based routing.
15+
16+
If you don't have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin.
17+
18+
## Before you begin
19+
20+
You need to have an Application Gateway v2 SKU instance to complete the steps in this article. URL rewrite and rewriting headers aren't supported in the v1 SKU. If you don't have the v2 SKU, create an [Application Gateway v2 SKU](./tutorial-autoscale-ps.md) instance before you begin.
21+
22+
23+
## Sign in to Azure
24+
25+
Sign in to the [Azure portal](https://portal.azure.com/) with your Azure account.
26+
27+
## Configure parameter based path selection
28+
29+
For this example, you have a shopping website and the product category is passed as query string in the URL, and you want to route the request to backend based on the query string, then:
30+
31+
**Step 1:** Create a path-map as shown in the following image:
32+
33+
:::image type="content" source="./media/rewrite-http-headers-url/url-scenario1-1.png" alt-text="A screenshot of URL rewrite scenario 1-1.":::
34+
35+
**Step 2 (a):** Create a rewrite set which has 3 rewrite rules:
36+
37+
* The first rule has a condition that checks the *query_string* variable for *category=shoes* and has an action that rewrites the URL path to /*listing1* and has **Reevaluate path map** enabled
38+
39+
* The second rule has a condition that checks the *query_string* variable for *category=bags* and has an action that rewrites the URL path to /*listing2* and has **Reevaluate path map** enabled
40+
41+
* The third rule has a condition that checks the *query_string* variable for *category=accessories* and has an action that rewrites the URL path to /*listing3* and has **Reevaluate path map** enabled
42+
43+
:::image type="content" source="./media/rewrite-http-headers-url/url-scenario1-2.png" alt-text="A screenshot of URL rewrite scenario 1-2.":::
44+
45+
46+
**Step 2 (b):** Associate this rewrite set with the default path of the previous path-based rule:
47+
48+
:::image type="content" source="./media/rewrite-http-headers-url/url-scenario1-3.png" alt-text="A screenshot of URL rewrite scenario 1-3.":::
49+
50+
If the user requests *contoso.com/listing?category=any*, then it's matched with the default path since none of the path patterns in the path map (/listing1, /listing2, /listing3) are matched. Since you associated the previous rewrite set with this path, this rewrite set is evaluated. Because the query string doesn't match the condition in any of the 3 rewrite rules in this rewrite set, no rewrite action takes place. Therefore, the request is routed unchanged to the backend associated with the default path (which is *GenericList*).
51+
52+
If the user requests *contoso.com/listing?category=shoes*, then the default path is matched. However, in this case, the condition in the first rule matches. Therefore, the action associated with the condition is executed, which rewrites the URL path to /*listing1* and reevaluates the path-map. When the path-map is reevaluated, the request matches the path associated with pattern */listing1* and the request is routed to the backend associated with this pattern (ShoesListBackendPool).
53+
54+
> [!NOTE]
55+
> This scenario can be extended to any header or cookie value, URL path, query string or server variables based on the conditions defined and essentially enables you to route requests based on those conditions.
56+
57+
## Next steps
58+
59+
To learn more about how to set up some common use cases, see [common header rewrite scenarios](./rewrite-http-headers-url.md).

articles/application-gateway/rewrite-http-headers-url.md

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: This article provides an overview of rewriting HTTP headers and URL
44
author: greg-lindsay
55
ms.service: azure-application-gateway
66
ms.topic: conceptual
7-
ms.date: 09/06/2024
7+
ms.date: 09/10/2024
88
ms.author: greglin
99
---
1010

@@ -203,7 +203,7 @@ Here are the steps for replacing the hostname:
203203
1. Create a rewrite rule with a condition that evaluates if the location header in the response contains azurewebsites.net. Enter the pattern `(https?):\/\/.*azurewebsites\.net(.*)$`.
204204
2. Perform an action to rewrite the location header so that it has the application gateway's hostname. Do this by entering `{http_resp_Location_1}://contoso.com{http_resp_Location_2}` as the header value. Alternatively, you can also use the server variable `host` to set the hostname to match the original request.
205205

206-
![A screenshow of the modify location header action.](./media/rewrite-http-headers-url/app-service-redirection.png)
206+
![A screenshot of the modify location header action.](./media/rewrite-http-headers-url/app-service-redirection.png)
207207

208208
#### Implement security HTTP headers to prevent vulnerabilities
209209

@@ -229,34 +229,14 @@ You can evaluate an HTTP request or response header for the presence of a header
229229

230230
#### Parameter based path selection
231231

232-
To accomplish scenarios where you want to choose the backend pool based on the value of a header, part of the URL, or query string in the request, you can use the combination of URL Rewrite capability and path-based routing. For example, if you have a shopping website and the product category is passed as query string in the URL, and you want to route the request to backend based on the query string, then:
232+
To accomplish scenarios where you want to choose the backend pool based on the value of a header, part of the URL, or query string in the request, you can use a combination of URL Rewrite capability and path-based routing.
233233

234-
**Step1:** Create a path-map as shown in the image below
234+
To do this, create a rewrite set with a condition that checks for a specific parameter (query string, header, etc.) and then performs an action where it changes the URL path (ensure **Reevaluate path map** is enabled). The rewrite set must then be associated to a path based rule. The path based rule must contain the same URL paths specified in the rewrite set and their corresponding backend pool.
235235

236-
:::image type="content" source="./media/rewrite-http-headers-url/url-scenario1-1.png" alt-text="URL rewrite scenario 1-1.":::
236+
Thus, the rewrite set allows users to check for a specific parameter and assign it a new path, and the path based rule allows users to assign backend pools to those paths. As long as "Reevaluate path map" is enabled, traffic routs based on the path specified in the rewrite set.
237237

238-
**Step 2 (a):** Create a rewrite set which has 3 rewrite rules:
238+
For a use case example using query strings, see [Route traffic using parameter based path selection in portal](parameter-based-path-selection-portal.md).
239239

240-
* The first rule has a condition that checks the *query_string* variable for *category=shoes* and has an action that rewrites the URL path to /*listing1* and has **Reevaluate path map** enabled
241-
242-
* The second rule has a condition that checks the *query_string* variable for *category=bags* and has an action that rewrites the URL path to /*listing2* and has **Reevaluate path map** enabled
243-
244-
* The third rule has a condition that checks the *query_string* variable for *category=accessories* and has an action that rewrites the URL path to /*listing3* and has **Reevaluate path map** enabled
245-
246-
:::image type="content" source="./media/rewrite-http-headers-url/url-scenario1-2.png" alt-text="URL rewrite scenario 1-2.":::
247-
248-
249-
250-
**Step 2 (b):** Associate this rewrite set with the default path of the above path-based rule
251-
252-
:::image type="content" source="./media/rewrite-http-headers-url/url-scenario1-3.png" alt-text="URL rewrite scenario 1-3.":::
253-
254-
If the user requests *contoso.com/listing?category=any*, then it's matched with the default path since none of the path patterns in the path map (/listing1, /listing2, /listing3) are matched. Since you associated the previous rewrite set with this path, this rewrite set is evaluated. Because the query string won't match the condition in any of the 3 rewrite rules in this rewrite set, no rewrite action takes place. Therefore, the request is routed unchanged to the backend associated with the default path (which is *GenericList*).
255-
256-
If the user requests *contoso.com/listing?category=shoes*, then the default path is matched. However, in this case the condition in the first rule matches. Therefore, the action associated with the condition is executed, which rewrites the URL path to /*listing1* and reevaluates the path-map. When the path-map is reevaluated, the request matches the path associated with pattern */listing1* and the request is routed to the backend associated with this pattern (ShoesListBackendPool).
257-
258-
> [!NOTE]
259-
> This scenario can be extended to any header or cookie value, URL path, query string or server variables based on the conditions defined and essentially enables you to route requests based on those conditions.
260240

261241
#### Rewrite query string parameters based on the URL
262242

articles/application-gateway/toc.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,10 @@
271271
items:
272272
- name: Azure portal
273273
href: rewrite-url-portal.md
274+
- name: Parameter based path selection
275+
items:
276+
- name: Azure portal
277+
href: parameter-based-path-selection-portal.md
274278
- name: Configure custom probes
275279
items:
276280
- name: Portal

articles/azure-arc/kubernetes/extensions-release.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,15 @@ For more information, see [Try Azure AI Video Indexer enabled by Arc](/azure/azu
213213

214214
For more information, see [What is Edge Storage Accelerator?](../edge-storage-accelerator/overview.md).
215215

216+
## Connected registry on Arc-enabled Kubernetes
217+
218+
- **Supported distributions**: Connected registry for Arc-enabled Kubernetes clusters.
219+
- **Supported Azure regions**: All regions where Azure Arc-enabled Kubernetes is available.
220+
221+
The connected registry extension for Azure Arc enables you to sync container images between your Azure Container Registry (ACR) and your local on-prem Azure Arc-enabled Kubernetes cluster. The extension is deployed to the local or remote cluster and uses a synchronization schedule and window to sync images between the on-prem connected registry and the cloud ACR registry.
222+
223+
For more information, see [Connected Registry for Arc-enabled Kubernetes clusters](../../container-registry/quickstart-connected-registry-arc-cli.md).
224+
216225
## Next steps
217226

218227
- Read more about [cluster extensions for Azure Arc-enabled Kubernetes](conceptual-extensions.md).

articles/azure-boost/includes/azure-boost-series.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.custom:
1313

1414
| Size Series | Series Type | Deployment Status |
1515
|:-:|:-:|:-:|
16-
|[Msv3/Mdsv3](/azure/virtual-machines/msv3-mdsv3-medium-series)| Medium Memory | GA|
16+
|[Msv3/Mdsv3](/azure/virtual-machines/msv3-mdsv3-medium-series)| Medium Memory | Production |
1717
|[Mbsv3/Mbdsv3](/azure/virtual-machines/sizes/memory-optimized/mbsv3-mbdsv3-series)| Medium Memory| Preview|
1818
|Msv3/Mdsv3| High Memory | Preview|
1919
|Msv3/Mdsv3| Very High Memory | Preview|

articles/azure-functions/TOC.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,12 +383,8 @@
383383
displayName: bundles, extension bundles
384384
- name: Binding expression patterns
385385
href: functions-bindings-expressions-patterns.md
386-
- name: Use binding return values
387-
href: functions-bindings-return-value.md
388386
- name: Handle binding errors
389387
href: functions-bindings-errors.md
390-
- name: Binding definitions for Python v2
391-
href: functions-bindings-triggers-python.md
392388
- name: Frameworks
393389
items:
394390
- name: Express.js
@@ -451,6 +447,8 @@
451447
- name: Programming models
452448
displayName: python
453449
href: functions-reference-python.md#programming-model
450+
- name: Binding definitions for Python v2
451+
href: functions-bindings-triggers-python.md
454452
- name: Python worker extensions
455453
href: develop-python-worker-extensions.md
456454
- name: Scale and performance recommendations

articles/azure-functions/create-first-function-vs-code-python.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Create a Python function using Visual Studio Code - Azure Functions
33
description: Learn how to create a Python function, then publish the local project to serverless hosting in Azure Functions using the Azure Functions extension in Visual Studio Code.
44
ms.topic: quickstart
5-
ms.date: 06/03/2024
5+
ms.date: 09/10/2024
66
ms.devlang: python
77
ms.custom: devx-track-python, mode-api, devdivchpfy22, vscode-azure-extension-update-complete, ai-video-demo
88
ai-usage: ai-assisted
@@ -47,9 +47,9 @@ In this section, you use Visual Studio Code to create a local Azure Functions pr
4747

4848
1. In Visual Studio Code, press <kbd>F1</kbd> to open the command palette and search for and run the command `Azure Functions: Create New Project...`.
4949

50-
2. Choose the directory location for your project workspace and choose **Select**. You should either create a new folder or choose an empty folder for the project workspace. Don't choose a project folder that is already part of a workspace.
50+
1. Choose the directory location for your project workspace and choose **Select**. You should either create a new folder or choose an empty folder for the project workspace. Don't choose a project folder that is already part of a workspace.
5151

52-
3. Provide the following information at the prompts:
52+
1. Provide the following information at the prompts:
5353

5454
|Prompt|Selection|
5555
|--|--|
@@ -60,24 +60,21 @@ In this section, you use Visual Studio Code to create a local Azure Functions pr
6060
|**Authorization level**| Choose `ANONYMOUS`, which lets anyone call your function endpoint. For more information, see [Authorization level](functions-bindings-http-webhook-trigger.md#http-auth).|
6161
|**Select how you would like to open your project** | Choose `Open in current window`.|
6262

63-
4. Visual Studio Code uses the provided information and generates an Azure Functions project with an HTTP trigger. You can view the local project files in the Explorer. The generated `function_app.py` project file contains your functions.
64-
<!--- Remove these last steps after the next Core Tools version is released (4.28.0)--->
65-
5. Open the local.settings.json project file and verify that the `AzureWebJobsFeatureFlags` setting has a value of `EnableWorkerIndexing`. This is required for Functions to interpret your project correctly as the Python v2 model when running locally.
63+
1. Visual Studio Code uses the provided information and generates an Azure Functions project with an HTTP trigger. You can view the local project files in the Explorer. The generated `function_app.py` project file contains your functions.
6664

67-
6. In the local.settings.json file, update the `AzureWebJobsStorage` setting as in the following example:
65+
1. In the local.settings.json file, update the `AzureWebJobsStorage` setting as in the following example:
6866

6967
```json
7068
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
7169
```
72-
73-
This tells the local Functions host to use the storage emulator for the storage connection currently required by the Python v2 model. When you publish your project to Azure, you need to instead use the default storage account. If you're instead using an Azure Storage account, set your storage account connection string here.
70+
71+
This tells the local Functions host to use the storage emulator for the storage connection required by the Python v2 model. When you publish your project to Azure, this setting uses the default storage account instead. If you're using an Azure Storage account during local development, set your storage account connection string here.
7472

7573
## Start the emulator
7674

7775
1. In Visual Studio Code, press <kbd>F1</kbd> to open the command palette. In the command palette, search for and select `Azurite: Start`.
7876

79-
1. Check the bottom bar and verify that Azurite emulation services are running. If so, you can now run your function locally.
80-
::: zone-end
77+
1. Check the bottom bar and verify that Azurite emulation services are running. If so, you can now run your function locally.
8178

8279
[!INCLUDE [functions-run-function-test-local-vs-code](../../includes/functions-run-function-test-local-vs-code.md)]
8380

articles/azure-functions/durable/durable-functions-overview.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,15 +1472,9 @@ async def main(req: func.HttpRequest, client) -> func.HttpResponse:
14721472
::: zone-end
14731473
::: zone pivot="powershell"
14741474

1475-
> [!NOTE]
1476-
> Durable entities are currently not supported in PowerShell.
1477-
14781475
::: zone-end
14791476
::: zone pivot="java"
14801477

1481-
> [!NOTE]
1482-
> Durable entities are currently not supported in Java.
1483-
14841478
::: zone-end
14851479

14861480
Entity functions are available in [Durable Functions 2.0](durable-functions-versions.md) and above for C#, JavaScript, and Python.

articles/azure-functions/functions-bindings-event-grid-trigger.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ For explanations of the common and event-specific properties, see [Event propert
489489

490490
## Next steps
491491

492-
* If you have questions, submit an issue to the team [here](https://github.com/Azure/azure-functions-eventgrid-extension/issues)
492+
* If you have questions, submit an issue to the team [here](https://github.com/Azure/azure-sdk-for-net/issues)
493493
* [Dispatch an Event Grid event](./functions-bindings-event-grid-output.md)
494494

495495
[EventGridEvent]: /dotnet/api/microsoft.azure.eventgrid.models.eventgridevent

0 commit comments

Comments
 (0)