Skip to content

Commit f65c251

Browse files
authored
Merge pull request #293830 from cephalin/aicontent
freshness for AI content
2 parents 27b9747 + 9c07d6c commit f65c251

7 files changed

+96
-73
lines changed

articles/app-service/configure-language-python.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ Existing web applications can be redeployed to Azure as follows:
115115
116116
1. **Continuous deployment**: Set up continuous deployment from GitHub Actions, Bitbucket, or Azure Repos as described in the article [Continuous deployment to Azure App Service](deploy-continuous-deployment.md). Or, set up continuous deployment from Local Git as described in the article [Local Git deployment to Azure App Service](deploy-local-git.md).
117117
118-
1. **Custom actions**: To perform actions within the App Service container that hosts your app, such as Django database migrations, you can [connect to the container through SSH](configure-linux-open-ssh-session.md). For an example of running Django database migrations, see [Tutorial: Deploy a Django web app with PostgreSQL - generate database schema](tutorial-python-postgresql-app-django.md#4-generate-database-schema).
118+
1. **Custom actions**: To perform actions within the App Service container that hosts your app, such as Django database migrations, you can [connect to the container through SSH](configure-linux-open-ssh-session.md). For an example of running Django database migrations, see [Tutorial: Deploy a Django web app with PostgreSQL - generate database schema](tutorial-python-postgresql-app-django.md#5-generate-database-schema).
119119
- When using continuous deployment, you can perform those actions using post-build commands as described earlier under [Customize build automation](#customize-build-automation).
120120
121121
With these steps completed, you should be able to commit changes to your source repository and have those updates automatically deployed to App Service.

articles/app-service/deploy-intelligent-apps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: 'Deploy an application that uses OpenAI on Azure App Service'
33
description: Get started with OpenAI on Azure App Service
44
author: jefmarti
55
ms.author: jefmarti
6-
ms.date: 04/10/2024
6+
ms.date: 01/31/2025
77
ms.topic: article
88
ms.custom: devx-track-dotnet, devx-track-extended-java, devx-track-python, linux-related-content
99
ms.collection: ce-skilling-ai-copilot

articles/app-service/overview-tls.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Transport Layer Security (TLS) overview
33
description: Learn about Transport Layer Security (TLS) on App Service.
44
keywords: app service, azure app service, tls, transport layer security, support, web app, troubleshooting,
55
ms.topic: article
6-
ms.date: 07/29/2024
6+
ms.date: 01/31/2025
77
ms.author: msangapu
88
author: msangapu-msft
99
ms.custom: UpdateFrequency3

articles/app-service/tutorial-dotnetcore-sqldb-app.md

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
title: Deploy ASP.NET Core and Azure SQL Database app
44
description: Learn how to deploy an ASP.NET Core web app to Azure App Service and connect to an Azure SQL Database.
55
ms.topic: tutorial
6-
ms.date: 09/06/2024
6+
ms.date: 01/31/2025
77
author: cephalin
88
ms.author: cephalin
99
ms.devlang: csharp
@@ -44,7 +44,7 @@ In this tutorial, you learn how to:
4444

4545
::: zone pivot="azure-developer-cli"
4646

47-
* An Azure account with an active subscription. If you don't have an Azure account, you [can create one for free](https://azure.microsoft.com/free/java).
47+
* An Azure account with an active subscription. If you don't have an Azure account, you [can create one for free](https://azure.microsoft.com/free).
4848
* [Azure Developer CLI](/azure/developer/azure-developer-cli/install-azd) installed. You can follow the steps with the [Azure Cloud Shell](https://shell.azure.com) because it already has Azure Developer CLI installed.
4949
* Knowledge of ASP.NET Core development.
5050
* **(Optional)** To try GitHub Copilot, a [GitHub Copilot account](https://docs.github.com/copilot/using-github-copilot/using-github-copilot-code-suggestions-in-your-editor). A 30-day free trial is available.
@@ -53,7 +53,7 @@ In this tutorial, you learn how to:
5353

5454
## Skip to the end
5555

56-
You can quickly deploy the sample app in this tutorial and see it running in Azure. Just run the following commands in the [Azure Cloud Shell](https://shell.azure.com), and follow the prompt:
56+
If you just want to see the sample app in this tutorial running in Azure, just run the following commands in the [Azure Cloud Shell](https://shell.azure.com), and follow the prompt:
5757

5858
```bash
5959
dotnet tool install --global dotnet-ef
@@ -176,47 +176,44 @@ Sign in to the [Azure portal](https://portal.azure.com/) and follow these steps
176176

177177
## 3. Secure connection secrets
178178

179-
The creation wizard generated the connectivity string for you already as [.NET connection strings](configure-common.md#configure-connection-strings) and [app settings](configure-common.md#configure-app-settings). However, the security best practice is to keep secrets out of App Service completely. You'll move your secrets to a key vault and change your app setting to [Key Vault references](app-service-key-vault-references.md) with the help of Service Connectors.
179+
The creation wizard generated the connectivity variable for you already as [.NET connection strings](configure-common.md#configure-connection-strings) and [app settings](configure-common.md#configure-app-settings). However, the security best practice is to keep secrets out of App Service completely. You'll move your secrets to a key vault and change your app setting to [Key Vault references](app-service-key-vault-references.md) with the help of Service Connectors.
180180

181181
> [!TIP]
182182
> To use passwordless authentication, see [How do I change the SQL Database connection to use a managed identity instead?](#how-do-i-change-the-sql-database-connection-to-use-a-managed-identity-instead)
183183
184184
:::row:::
185185
:::column span="2":::
186-
**Step 1:** In the App Service page:
187-
1. In the left menu, select **Settings > Environment variables > Connection strings**.
186+
**Step 1: Retrieve the existing connection string**
187+
1. In the left menu of the App Service page, select **Settings > Environment variables > Connection strings**.
188188
1. Select **AZURE_SQL_CONNECTIONSTRING**.
189189
1. In **Add/Edit connection string**, in the **Value** field, find the *Password=* part at the end of the string.
190190
1. Copy the password string after *Password=* for use later.
191-
This connection string lets you connect to the SQL database secured behind a private endpoint. The password is saved directly in the App Service app, which isn't the best. Likewise, the Redis cache connection string in the **App settings** tab contains a secret. You'll change this.
191+
This connection string lets you connect to the SQL database secured behind a private endpoint. However, the secrets are saved directly in the App Service app, which isn't the best. Likewise, the Redis cache connection string in the **App settings** tab contains a secret. You'll change this.
192192
:::column-end:::
193193
:::column:::
194194
:::image type="content" source="./media/tutorial-dotnetcore-sqldb-app/azure-portal-secure-connection-secrets-1.png" alt-text="A screenshot showing how to see the value of an app setting." lightbox="./media/tutorial-dotnetcore-sqldb-app/azure-portal-secure-connection-secrets-1.png":::
195195
:::column-end:::
196196
:::row-end:::
197197
:::row:::
198198
:::column span="2":::
199-
**Step 2:** Create a key vault for secure management of secrets.
199+
**Step 2: Create a key vault for secure management of secrets**
200200
1. In the top search bar, type "*key vault*", then select **Marketplace** > **Key Vault**.
201201
1. In **Resource Group**, select **msdocs-core-sql-tutorial**.
202202
1. In **Key vault name**, type a name that consists of only letters and numbers.
203-
1. In **Region**, set it to the sample location as the resource group.
203+
1. In **Region**, set it to the same location as the resource group.
204204
:::column-end:::
205205
:::column:::
206206
:::image type="content" source="./media/tutorial-dotnetcore-sqldb-app/azure-portal-secure-connection-secrets-2.png" alt-text="A screenshot showing how to create a key vault." lightbox="./media/tutorial-dotnetcore-sqldb-app/azure-portal-secure-connection-secrets-2.png":::
207207
:::column-end:::
208208
:::row-end:::
209209
:::row:::
210210
:::column span="2":::
211-
**Step 3:**
211+
**Step 3: Secure the key vault with a Private Endpoint**
212212
1. Select the **Networking** tab.
213213
1. Unselect **Enable public access**.
214214
1. Select **Create a private endpoint**.
215215
1. In **Resource Group**, select **msdocs-core-sql-tutorial**.
216-
1. In **Key vault name**, type a name that consists of only letters and numbers.
217-
1. In **Region**, set it to the sample location as the resource group.
218216
1. In the dialog, in **Location**, select the same location as your App Service app.
219-
1. In **Resource Group**, select **msdocs-core-sql-tutorial**.
220217
1. In **Name**, type **msdocs-core-sql-XYZVvaultEndpoint**.
221218
1. In **Virtual network**, select **msdocs-core-sql-XYZVnet**.
222219
1. In **Subnet**, **msdocs-core-sql-XYZSubnet**.
@@ -245,9 +242,9 @@ The creation wizard generated the connectivity string for you already as [.NET c
245242
:::row-end:::
246243
:::row:::
247244
:::column span="2":::
248-
**Step 5:** In the **Create connection** dialog for the Key Vault connection:
249-
1. In **Key Vault**, select the key vault you created earlier.
250-
1. Select **Review + Create**. You should see that **System assigned managed identity** is set to **Selected**.
245+
**Step 5: Establish the Key Vault connection**
246+
1. In the **Create connection** dialog for the Key Vault connection, in **Key Vault**, select the key vault you created earlier.
247+
1. Select **Review + Create**.
251248
1. When validation completes, select **Create**.
252249
:::column-end:::
253250
:::column:::
@@ -256,10 +253,9 @@ The creation wizard generated the connectivity string for you already as [.NET c
256253
:::row-end:::
257254
:::row:::
258255
:::column span="2":::
259-
**Step 6:** You're back in the edit dialog for **defaultConnector**.
260-
1. In the **Authentication** tab, wait for the key vault connector to be created. When it's finished, the **Key Vault Connection** dropdown automatically selects it.
256+
**Step 6: Finalize the SQL Database connector settings**
257+
1. You're back in the edit dialog for **defaultConnector**. In the **Authentication** tab, wait for the key vault connector to be created. When it's finished, the **Key Vault Connection** dropdown automatically selects it.
261258
1. Select **Next: Networking**.
262-
1. Select **Configure firewall rules to enable access to target service**. The app creation wizard already secured the SQL database with a private endpoint.
263259
1. Select **Save**. Wait until the **Update succeeded** notification appears.
264260
:::column-end:::
265261
:::column:::
@@ -268,8 +264,8 @@ The creation wizard generated the connectivity string for you already as [.NET c
268264
:::row-end:::
269265
:::row:::
270266
:::column span="2":::
271-
**Step 7:** In the Service Connectors page:
272-
1. Select checkbox next to the Cache for Redis connector, then select **Edit**.
267+
**Step 7: Configure the Redis connector to use Key Vault secrets**
268+
1. In the Service Connectors page, select the checkbox next to the Cache for Redis connector, then select **Edit**.
273269
1. Select the **Authentication** tab.
274270
1. Select **Store Secret in Key Vault**.
275271
1. Under **Key Vault Connection**, select the key vault you created.
@@ -283,8 +279,8 @@ The creation wizard generated the connectivity string for you already as [.NET c
283279
:::row-end:::
284280
:::row:::
285281
:::column span="2":::
286-
**Step 8:** To verify your changes:
287-
1. From the left menu, select **Environment variables > Connection strings** again.
282+
**Step 8: Verify the Key Vault integration**
283+
1. From the left menu, select **Settings > Environment variables > Connection strings** again.
288284
1. Next to **AZURE_SQL_CONNECTIONSTRING**, select **Show value**. The value should be `@Microsoft.KeyVault(...)`, which means that it's a [key vault reference](app-service-key-vault-references.md) because the secret is now managed in the key vault.
289285
1. To verify the Redis connection string, select the **App setting** tab. Next to **AZURE_REDIS_CONNECTIONSTRING**, select **Show value**. The value should be `@Microsoft.KeyVault(...)` too.
290286
:::column-end:::
@@ -293,6 +289,13 @@ The creation wizard generated the connectivity string for you already as [.NET c
293289
:::column-end:::
294290
:::row-end:::
295291

292+
To summarize, the process for securing your connection secrets involved:
293+
294+
- Retrieving the connection secrets from the App Service app's environment variables.
295+
- Creating a key vault.
296+
- Creating a Key Vault connection with the system-assigned managed identity.
297+
- Updating the service connectors to store the secrets in the key vault.
298+
296299
## 4. Deploy sample code
297300

298301
In this step, you configure GitHub deployment using GitHub Actions. It's just one of many ways to deploy to App Service, but also a great way to have continuous integration in your deployment process. By default, every `git push` to your GitHub repository kicks off the build and deploy action.
@@ -412,21 +415,25 @@ In this step, you configure GitHub deployment using GitHub Actions. It's just on
412415
:::column-end:::
413416
:::row-end:::
414417

418+
Having issues? Check the [Troubleshooting section](#troubleshooting).
419+
415420
## 5. Generate database schema
416421

417-
With the SQL Database protected by the virtual network, the easiest way to run [dotnet database migrations](/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli) is in an SSH session with the App Service container.
422+
With the SQL Database protected by the virtual network, the easiest way to run [dotnet database migrations](/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli) is in an SSH session with the Linux container in App Service.
418423

419424
:::row:::
420425
:::column span="2":::
421-
**Step 1:** Back in the App Service page, in the left menu, select **Development Tools** > **SSH**, then select **Go**.
426+
**Step 1:** Back in the App Service page, in the left menu,
427+
1. Select **Development Tools** > **SSH**.
428+
1. Select **Go**.
422429
:::column-end:::
423430
:::column:::
424431
:::image type="content" source="./media/tutorial-dotnetcore-sqldb-app/azure-portal-generate-db-schema-1.png" alt-text="A screenshot showing how to open the SSH shell for your app from the Azure portal." lightbox="./media/tutorial-dotnetcore-sqldb-app/azure-portal-generate-db-schema-1.png":::
425432
:::column-end:::
426433
:::row-end:::
427434
:::row:::
428435
:::column span="2":::
429-
**Step 2:** In the SSH terminal:
436+
**Step 2:** In the SSH session:
430437
1. Run `cd /home/site/wwwroot`. Here are all your deployed files.
431438
1. Run the migration bundle that the GitHub workflow generated, with the command `./migrationsbundle -- --environment Production`. If it succeeds, App Service is connecting successfully to the SQL Database. Remember that `--environment Production` corresponds to the code changes you made in *Program.cs*.
432439
:::column-end:::
@@ -454,7 +461,7 @@ Having issues? Check the [Troubleshooting section](#troubleshooting).
454461
:::row:::
455462
:::column span="2":::
456463
**Step 2:** Add a few tasks to the list.
457-
Congratulations, you're running a secure data-driven ASP.NET Core app in Azure App Service.
464+
Congratulations, you're running a web app in Azure App Service, with secure connectivity to Azure SQL Database.
458465
:::column-end:::
459466
:::column:::
460467
:::image type="content" source="./media/tutorial-dotnetcore-sqldb-app/azure-portal-browse-app-2.png" alt-text="A screenshot of the .NET Core app running in App Service." lightbox="./media/tutorial-dotnetcore-sqldb-app/azure-portal-browse-app-2.png":::
@@ -466,13 +473,14 @@ Having issues? Check the [Troubleshooting section](#troubleshooting).
466473
467474
## 7. Stream diagnostic logs
468475

469-
Azure App Service captures all messages logged to the console to assist you in diagnosing issues with your application. The sample app outputs console log messages in each of its endpoints to demonstrate this capability.
476+
Azure App Service captures all console logs to help you diagnose issues with your application. The sample app includes logging code in each of its endpoints to demonstrate this capability.
470477

471478
:::row:::
472479
:::column span="2":::
473480
**Step 1:** In the App Service page:
474481
1. From the left menu, select **Monitoring** > **App Service logs**.
475-
1. Under **Application logging**, select **File System**, then select **Save**.
482+
1. Under **Application logging**, select **File System**.
483+
1. In the top menu, select **Save**.
476484
:::column-end:::
477485
:::column:::
478486
:::image type="content" source="./media/tutorial-dotnetcore-sqldb-app/azure-portal-stream-diagnostic-logs-1.png" alt-text="A screenshot showing how to enable native logs in App Service in the Azure portal." lightbox="./media/tutorial-dotnetcore-sqldb-app/azure-portal-stream-diagnostic-logs-1.png":::
@@ -659,13 +667,13 @@ With the SQL Database protected by the virtual network, the easiest way to run d
659667
azd up
660668
```
661669
662-
1. In the azd output, find the URL for the SSH session and navigate to it in the browser. It looks like this in the output:
670+
1. In the AZD output, find the URL for the SSH session and navigate to it in the browser. It looks like this in the output:
663671
664672
<pre>
665-
Open SSH session to App Service container at: https://&lt;app-name>-&lt;hash>.scm.azurewebsites.net/webssh/host
673+
Open SSH session to App Service container at: https://&lt;app-name>.scm.azurewebsites.net/webssh/host
666674
</pre>
667675
668-
1. In the SSH terminal, run the following commands:
676+
1. In the SSH session, run the following commands:
669677
670678
```bash
671679
cd /home/site/wwwroot
@@ -674,7 +682,9 @@ With the SQL Database protected by the virtual network, the easiest way to run d
674682
675683
If it succeeds, App Service is connecting successfully to the database. Remember that `--environment Production` corresponds to the code changes you made in *Program.cs*.
676684
677-
In the SSH session, only changes to files in `/home` can persist beyond app restarts. Changes outside of `/home` aren't persisted.
685+
> [!NOTE]
686+
> Only changes to files in `/home` can persist beyond app restarts. Changes outside of `/home` aren't persisted.
687+
>
678688

679689
Having issues? Check the [Troubleshooting section](#troubleshooting).
680690

articles/app-service/tutorial-java-spring-cosmosdb.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: cephalin
66
ms.author: cephalin
77
ms.devlang: java
88
ms.topic: tutorial
9-
ms.date: 08/31/2024
9+
ms.date: 01/31/2025
1010
ms.custom: mvc, devx-track-java, devx-track-azurecli, devx-track-extended-java, AppServiceConnectivity, linux-related-content
1111
zone_pivot_groups: app-service-portal-azd
1212
ms.collection: ce-skilling-ai-copilot
@@ -634,7 +634,7 @@ Pricing for the created resources is as follows:
634634
The Java SE container in App Service already has network connectivity to Cosmos DB, but doesn't contain any migration tools or other MongoDB tools. You have a few options:
635635
636636
- Run database migrations automatically at app start, such as with Hibernate and or Flyway.
637-
- In the app's [SSH session](configure-language-java-deploy-run.md#linux-troubleshooting-tools), install a migration tool like [Flyway CLI](https://documentation.red-gate.com/fd/command-line-184127404.html), then run the migration script. Remember that the installed tool won't persist after an app restart unless it's in the */home* directory.
637+
- In the app's [SSH session](configure-language-java-deploy-run.md#linux-troubleshooting-tools), install a migration tool like Flyway, then run the migration script. Remember that the installed tool won't persist after an app restart unless it's in the */home* directory.
638638
- [Integrate the Azure cloud shell](../cloud-shell/private-vnet.md) with the virtual network and run database migrations from there.
639639

640640
#### How does local app development work with GitHub Actions?

0 commit comments

Comments
 (0)