Skip to content

Commit 46310b2

Browse files
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into resource-manager-add-caf-relocate
2 parents 17d1ab5 + be8a33d commit 46310b2

File tree

281 files changed

+3928
-2005
lines changed

Some content is hidden

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

281 files changed

+3928
-2005
lines changed

.openpublishing.redirection.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
{
22
"redirections": [
3+
{
4+
"source_path": "articles/cdn/cdn-advanced-http-reports.md",
5+
"redirect_url": "/previous-versions/azure/cdn/cdn-advanced-http-reports",
6+
"redirect_document_id": false
7+
},
8+
{
9+
"source_path": "articles/cdn/cdn-preload-endpoint.md",
10+
"redirect_url": "/previous-versions/azure/cdn/cdn-preload-endpoint",
11+
"redirect_document_id": false
12+
},
13+
{
14+
"source_path": "articles/cdn/cdn-real-time-stats.md",
15+
"redirect_url": "/previous-versions/azure/cdn/cdn-real-time-stats",
16+
"redirect_document_id": false
17+
},
18+
{
19+
"source_path": "articles/cdn/cdn-token-auth.md",
20+
"redirect_url": "/previous-versions/azure/cdn/cdn-token-auth",
21+
"redirect_document_id": false
22+
},
323
{
424
"source_path": "articles/cdn/edgio-retirement-faq.md",
525
"redirect_url": "/previous-versions/azure/cdn/edgio-retirement-faq",

articles/api-center/frequently-asked-questions.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,6 @@ additionalContent: |
5959
## Related content
6060
6161
* [Azure API Center overview](overview.md)
62-
* [Build APIs | Microsoft Developer](https://developer.microsoft.com/build-apis
62+
* [Build APIs | Microsoft Developer](https://developer.microsoft.com/build-apis)
63+
* [API Center flash workshop](https://azure-samples.github.io/API-Center-Workshop/)
6364

articles/api-center/synchronize-aws-gateway-apis.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ ms.date: 02/10/2025
88
ms.author: danlep
99
ms.custom:
1010
- devx-track-azurecli
11-
- migration
12-
- aws-to-azure
11+
ms.collection:
12+
- migration
13+
- aws-to-azure
1314
# Customer intent: As an API program manager, I want to integrate my Azure API Management instance with my API center and synchronize API Management APIs to my inventory.
1415
---
1516

articles/api-management/api-management-error-handling-policies.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,13 @@ The following errors are predefined for error conditions that can occur during p
113113
| ip-filter | Caller IP is in blocked list | CallerIpBlocked | Caller IP address is blocked. Access denied. |
114114
| check-header | Required header not presented or value is missing | HeaderNotFound | Header {header-name} was not found in the request. Access denied. |
115115
| check-header | Required header not presented or value is missing | HeaderValueNotAllowed | Header {header-name} value of {header-value} is not allowed. Access denied. |
116-
| validate-jwt | Jwt token is missing in request | TokenNotPresent | JWT not present. |
116+
| validate-jwt | JWT is missing in request | TokenNotPresent | JWT not present. |
117117
| validate-jwt | Signature validation failed | TokenSignatureInvalid | <message from jwt library\>. Access denied. |
118118
| validate-jwt | Invalid audience | TokenAudienceNotAllowed | <message from jwt library\>. Access denied. |
119119
| validate-jwt | Invalid issuer | TokenIssuerNotAllowed | <message from jwt library\>. Access denied. |
120120
| validate-jwt | Token expired | TokenExpired | <message from jwt library\>. Access denied. |
121121
| validate-jwt | Signature key was not resolved by ID | TokenSignatureKeyNotFound | <message from jwt library\>. Access denied. |
122-
| validate-jwt | Required claims are missing from token | TokenClaimNotFound | JWT token is missing the following claims: <c1\>, <c2\>, … Access denied. |
122+
| validate-jwt | Required claims are missing from token | TokenClaimNotFound | JWT is missing the following claims: <c1\>, <c2\>, … Access denied. |
123123
| validate-jwt | Claim values mismatch | TokenClaimValueNotAllowed | Claim {claim-name} value of {claim-value} is not allowed. Access denied. |
124124
| validate-jwt | Other validation failures | JwtInvalid | <message from jwt library\> |
125125
| forward-request or send-request | HTTP response status code and headers were not received from the backend within the configured timeout | Timeout | multiple |

articles/api-management/api-management-key-concepts-experiment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ All requests from client applications first reach the API gateway, which then fo
5858
The API gateway:
5959

6060
* Accepts API calls and routes them to configured backends
61-
* Verifies API keys, JWT tokens, certificates, and other credentials
61+
* Verifies API keys, JWTs, certificates, and other credentials
6262
* Enforces usage quotas and rate limits
6363
* Optionally transforms requests and responses as specified in [policy statements](#policies)
6464
* If configured, caches responses to improve response latency and minimize the load on backend services

articles/api-management/api-management-policy-expressions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,8 @@ The `context` variable is implicitly available in every policy [expression](api-
230230
|`BasicAuthCredentials AsBasic(input: this string)`|`input`: `string`<br /><br /> If the input parameter contains a valid HTTP Basic Authentication authorization request header value, the method returns an object of type `BasicAuthCredentials`; otherwise the method returns null.|
231231
|`bool TryParseBasic(input: this string, result: out BasicAuthCredentials)`|`input`: `string`<br /><br /> `result`: `out BasicAuthCredentials`<br /><br /> If the input parameter contains a valid HTTP Basic Authentication authorization value in the request header, the method returns `true` and the result parameter contains a value of type `BasicAuthCredentials`; otherwise the method returns `false`.|
232232
|`BasicAuthCredentials`|`Password`: `string`<br /><br /> `UserId`: `string`|
233-
|`Jwt AsJwt(input: this string)`|`input`: `string`<br /><br /> If the input parameter contains a valid JWT token value, the method returns an object of type `Jwt`; otherwise the method returns `null`.|
234-
|`bool TryParseJwt(input: this string, result: out Jwt)`|`input`: `string`<br /><br /> `result`: `out Jwt`<br /><br /> If the input parameter contains a valid JWT token value, the method returns `true` and the result parameter contains a value of type `Jwt`; otherwise the method returns `false`.|
233+
|`Jwt AsJwt(input: this string)`|`input`: `string`<br /><br /> If the input parameter contains a valid JWT value, the method returns an object of type `Jwt`; otherwise the method returns `null`.|
234+
|`bool TryParseJwt(input: this string, result: out Jwt)`|`input`: `string`<br /><br /> `result`: `out Jwt`<br /><br /> If the input parameter contains a valid JWT value, the method returns `true` and the result parameter contains a value of type `Jwt`; otherwise the method returns `false`.|
235235
|`Jwt`|`Algorithm`: `string`<br /><br /> `Audiences`: `IEnumerable<string>`<br /><br /> `Claims`: `IReadOnlyDictionary<string, string[]>`<br /><br /> `ExpirationTime`: `DateTime?`<br /><br /> `Id`: `string`<br /><br /> `Issuer`: `string`<br /><br /> `IssuedAt`: `DateTime?`<br /><br /> `NotBefore`: `DateTime?`<br /><br /> `Subject`: `string`<br /><br /> `Type`: `string`|
236236
|`string Jwt.Claims.GetValueOrDefault(claimName: string, defaultValue: string)`|`claimName`: `string`<br /><br /> `defaultValue`: `string`<br /><br /> Returns comma-separated claim values or `defaultValue` if the header isn't found.|
237237
|`byte[] Encrypt(input: this byte[], alg: string, key:byte[], iv:byte[])`|`input` - plaintext to be encrypted<br /><br />`alg` - name of a symmetric encryption algorithm<br /><br />`key` - encryption key<br /><br />`iv` - initialization vector<br /><br />Returns encrypted plaintext.|

articles/api-management/genai-gateway-capabilities.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ In API Management, enable semantic caching by using Azure Redis Enterprise or an
107107

108108
## Labs and samples
109109

110-
* [Labs for the AI gateway capabilities of Azure API Management](https://github.com/Azure-Samples/genai-gateway)
110+
* [Labs for the AI gateway capabilities of Azure API Management](https://github.com/Azure-Samples/ai-gateway)
111111
* [Azure API Management (APIM) - Azure OpenAI Sample (Node.js)](https://github.com/Azure-Samples/genai-gateway-apim)
112112
* [Python sample code for using Azure OpenAI with API Management](https://github.com/Azure-Samples/openai-apim-lb/blob/main/docs/sample-code.md)
113113

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: 'Quickstart: Use Terraform to configure an Azure App Service Environment v3'
3+
description: In this quickstart, you learn how to configure an Azure App Service Environment v3.
4+
ms.topic: quickstart
5+
ms.date: 04/08/2025
6+
ms.custom: devx-track-terraform
7+
ms.service: azure-app-service
8+
author: cephalin
9+
ms.author: cephalin
10+
#customer intent: As a Terraform user, I want to learn how to configure an Azure App Service Environment v3.
11+
content_well_notification:
12+
- AI-contribution
13+
---
14+
15+
# Quickstart: Use Terraform to configure an Azure App Service Environment v3
16+
17+
In this quickstart, you use [Terraform](/azure/developer/terraform) to create an App Service Environment, single-tenant deployment of Azure App Service. You use it with an Azure virtual network. You need one subnet for a deployment of App Service Environment, and this subnet can't be used for anything else. You create a resource group, virtual network, and a subnet to configure an Azure App Service Environment v3.
18+
19+
In this article, you learn how to:
20+
21+
> [!div class="checklist"]
22+
> * Create an Azure resource group with a unique name.
23+
> * Establish a virtual network with a specified name and address.
24+
> * Generate a random name for the subnet, and create a subnet in the virtual network.
25+
> * Delegate the subnet to the Microsoft.Web/hostingEnvironments service.
26+
> * Generate a random name for the App Service Environment v3, and create an App Service Environment v3 in the subnet.
27+
> * Set the internal load-balancing mode for the App Service Environment v3.
28+
> * Set cluster settings for the App Service Environment v3.
29+
> * Tag the App Service Environment v3.
30+
> * Output the names of the resource group, virtual network, subnet, and App Service Environment v3.
31+
32+
## Prerequisites
33+
34+
- An Azure account with an active subscription. You can [create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
35+
- Terraform. For more information, see [Install and configure Terraform](/azure/developer/terraform/quickstart-configure).
36+
37+
> [!IMPORTANT]
38+
> If you're using the 4.x azurerm provider, you must [explicitly specify the Azure subscription ID](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/4.0-upgrade-guide#specifying-subscription-id-is-now-mandatory) to authenticate to Azure before running the Terraform commands.
39+
>
40+
> One way to specify the Azure subscription ID without putting it in the `providers` block is to specify the subscription ID in an environment variable named `ARM_SUBSCRIPTION_ID`.
41+
>
42+
> For more information, see the [Azure provider reference documentation](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs#argument-reference).
43+
44+
## Implement the Terraform code
45+
46+
The sample code for this article is located in the [Azure Terraform GitHub repo](https://github.com/Azure/terraform/tree/master/quickstart/101-app-service-environment). You can view the log file containing the [test results from current and previous versions of Terraform](https://github.com/Azure/terraform/tree/master/quickstart/101-app-service-environment/TestRecord.md). See more [articles and sample code showing how to use Terraform to manage Azure resources](/azure/terraform).
47+
48+
1. Create a directory in which to test and run the sample Terraform code, and make it the current directory.
49+
50+
1. Create a file named `main.tf`, and insert the following code:
51+
:::code language="Terraform" source="~/terraform_samples/quickstart/101-app-service-environment/main.tf":::
52+
53+
1. Create a file named `outputs.tf`, and insert the following code:
54+
:::code language="Terraform" source="~/terraform_samples/quickstart/101-app-service-environment/outputs.tf":::
55+
56+
1. Create a file named `providers.tf`, and insert the following code:
57+
:::code language="Terraform" source="~/terraform_samples/quickstart/101-app-service-environment/providers.tf":::
58+
59+
1. Create a file named `variables.tf`, and insert the following code:
60+
:::code language="Terraform" source="~/terraform_samples/quickstart/101-app-service-environment/variables.tf":::
61+
62+
## Initialize Terraform
63+
64+
[!INCLUDE [terraform-init.md](~/azure-dev-docs-pr/articles/terraform/includes/terraform-init.md)]
65+
66+
## Create a Terraform execution plan
67+
68+
[!INCLUDE [terraform-plan.md](~/azure-dev-docs-pr/articles/terraform/includes/terraform-plan.md)]
69+
70+
## Apply a Terraform execution plan
71+
72+
[!INCLUDE [terraform-apply-plan.md](~/azure-dev-docs-pr/articles/terraform/includes/terraform-apply-plan.md)]
73+
74+
## Verify the results
75+
76+
### [Azure CLI](#tab/azure-cli)
77+
78+
1. Get the Azure resource group name.
79+
80+
```console
81+
resource_group_name=$(terraform output -raw resource_group_name)
82+
```
83+
84+
1. Get the virtual network name.
85+
86+
```console
87+
virtual_network_name=$(terraform output -raw virtual_network_name)
88+
```
89+
90+
1. Get the subnet name.
91+
92+
```console
93+
subnet_name=$(terraform output -raw subnet_name)
94+
```
95+
96+
1. Run `az appservice ase show` to view the App Service Environment v3.
97+
98+
```azurecli
99+
az appservice ase show --name $app_service_environment_v3_name --resource-group $resource_group_name
100+
```
101+
102+
### [Azure PowerShell](#tab/azure-powershell)
103+
104+
1. Get the Azure resource group name.
105+
106+
```console
107+
$resource_group_name=$(terraform output -raw resource_group_name)
108+
```
109+
110+
1. Get the virtual network name.
111+
112+
```console
113+
$virtual_network_name=$(terraform output -virtual_network_name)
114+
```
115+
116+
1. Get the subnet name.
117+
118+
```console
119+
$subnet_name=$(terraform output -subnet_name)
120+
```
121+
122+
1. Run `Get-AzAppServiceEnvironment` to view the AKS cluster within the Azure Extended Zone.
123+
124+
```azurepowershell
125+
Get-AzAppServiceEnvironment -Name $app_service_environment_v3_name -ResourceGroupName $resource_group_name
126+
```
127+
128+
---
129+
130+
## Clean up resources
131+
132+
[!INCLUDE [terraform-plan-destroy.md](~/azure-dev-docs-pr/articles/terraform/includes/terraform-plan-destroy.md)]
133+
134+
## Troubleshoot Terraform on Azure
135+
136+
[Troubleshoot common problems when using Terraform on Azure](/azure/developer/terraform/troubleshoot).
137+
138+
## Next steps
139+
140+
> [!div class="nextstepaction"]
141+
> [See more articles about Azure app service environment v3.](/search/?terms=Azure%20app%20service%20environment%20v3%20and%20terraform)

articles/app-service/environment/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
items:
1212
- name: Create App Service Environment in portal
1313
href: creation.md
14+
- name: Create an App Service Environment using Terraform
15+
href: creation-terraform.md
1416
- name: Tutorials
1517
items:
1618
- name: Integrate with Application Gateway

articles/application-gateway/application-gateway-probe-overview.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services: application-gateway
55
author: greg-lindsay
66
ms.service: azure-application-gateway
77
ms.topic: concept-article
8-
ms.date: 09/14/2023
8+
ms.date: 04/09/2025
99
ms.author: greglin
1010
ms.custom: devx-track-azurepowershell
1111
---
@@ -46,15 +46,15 @@ Once the probe detects a failed response, the counter for "Unhealthy threshold"
4646

4747
An application gateway automatically configures a default health probe when you don't set up any custom probe configuration. The monitoring behavior works by making an HTTP GET request to the IP addresses or FQDN configured in the backend pool. For default probes if the backend http settings are configured for HTTPS, the probe uses HTTPS to test health of the backend servers.
4848

49-
For example: You configure your application gateway to use backend servers A, B, and C to receive HTTP network traffic on port 80. The default health monitoring tests the three servers every 30 seconds for a healthy HTTP response with a 30-second-timeout for each request. A healthy HTTP response has a [status code](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code) between 200 and 399. In this case, the HTTP GET host header for the health probe looks like `http://127.0.0.1/`. Also see [HTTP response codes in Application Gateway](http-response-codes.md).
49+
For example: You configure your application gateway to use backend servers A, B, and C to receive HTTP network traffic on port 80. The default health monitoring tests the three servers every 30 seconds for a healthy HTTP response with a 30-second-timeout for each request. A healthy HTTP response has a [status code](/troubleshoot/developer/webapps/iis/www-administration-management/http-status-code) between 200 and 399. In this case, the HTTP GET Host header for the health probe appears as `http://127.0.0.1/`, unless a hostname is configured in the [Backend Settings](configuration-http-settings.md#configuring-the-host-name).
5050

5151
If the default probe check fails for server A, the application gateway stops forwarding requests to this server. The default probe still continues to check for server A every 30 seconds. When server A responds successfully to one request from a default health probe, application gateway starts forwarding the requests to the server again.
5252

5353
### Default health probe settings
5454

5555
| Probe property | Value | Description |
5656
| --- | --- | --- |
57-
| Probe URL |\<protocol\>://127.0.0.1:\<port\>/ |The protocol and port are inherited from the backend HTTP settings to which the probe is associated |
57+
| Probe URL |\<protocol\>://127.0.0.1:\<port\>/ |The protocol and port are inherited from the Backend Settings to which the probe is associated. The default host is 127.0.0.1 unless one is specified in the associated Backend Settings. |
5858
| Interval |30 |The amount of time in seconds to wait before the next health probe is sent.|
5959
| Time-out |30 |The amount of time in seconds the application gateway waits for a probe response before marking the probe as unhealthy. If a probe returns as healthy, the corresponding backend is immediately marked as healthy.|
6060
| Unhealthy threshold |3 |Governs how many probes to send in case there's a failure of the regular health probe. In v1 SKU, these additional health probes are sent in quick succession to determine the health of the backend quickly and don't wait for the probe interval. For v2 SKU, the health probes wait the interval. The backend server is marked down after the consecutive probe failure count reaches the unhealthy threshold. |

0 commit comments

Comments
 (0)