Skip to content

Commit a6ab4d5

Browse files
committed
Merge branch 'ignite-fixup' into post-ignite-flex
2 parents 830f58b + 0a7a65c commit a6ab4d5

File tree

394 files changed

+7256
-3267
lines changed

Some content is hidden

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

394 files changed

+7256
-3267
lines changed

.openpublishing.redirection.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3714,6 +3714,21 @@
37143714
"source_path_from_root": "/articles/reliability/resiliency-recommendations/recommend-cosmos-db-nosql.md",
37153715
"redirect_url": "/azure/reliability/reliability-cosmos-db-nosql",
37163716
"redirect_document_id": false
3717+
},
3718+
{
3719+
"source_path_from_root": "/articles/virtual-network/tutorial-create-route-table-portal.md",
3720+
"redirect_url": "/azure/virtual-network/tutorial-create-route-table",
3721+
"redirect_document_id": false
3722+
},
3723+
{
3724+
"source_path_from_root": "/articles/virtual-network/tutorial-create-route-table-powershell.md",
3725+
"redirect_url": "/azure/virtual-network/tutorial-create-route-table",
3726+
"redirect_document_id": false
3727+
},
3728+
{
3729+
"source_path_from_root": "/articles/virtual-network/tutorial-create-route-table-cli.md",
3730+
"redirect_url": "/azure/virtual-network/tutorial-create-route-table",
3731+
"redirect_document_id": false
37173732
}
37183733
]
37193734
}

articles/api-center/build-register-apis-vscode-extension.md

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: API developers can use the Azure API Center extension for Visual St
44
author: dlepow
55
ms.service: azure-api-center
66
ms.topic: how-to
7-
ms.date: 10/16/2024
7+
ms.date: 11/08/2024
88
ms.author: danlep
99
ms.collection: ce-skilling-ai-copilot
1010
ms.custom:
@@ -16,7 +16,8 @@ ms.custom:
1616
API developers in your organization can build and register APIs in your [API center](overview.md) inventory by using the Azure API Center extension for Visual Studio Code. API developers can:
1717

1818
* Add an existing API to an API center as a one-time operation, or integrate a development pipeline to register APIs as part of a CI/CD workflow.
19-
* Generate OpenAPI specification files from API code using GitHub Copilot, and register the API to an API center.
19+
* Use GitHub Copilot to generate new OpenAPI specs from API code.
20+
* Use natural language prompts with the API Center plugin for GitHub Copilot for Azure to create new OpenAPI specs.
2021

2122
API developers can also take advantage of features in the extension to [discover and consume APIs](discover-apis-vscode-extension.md) in the API center and ensure [API governance](govern-apis-vscode-extension.md).
2223

@@ -27,6 +28,7 @@ The following Visual Studio Code extensions are needed for the specified scenari
2728
* [GitHub Actions](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-github-actions) - to register APIs using a CI/CD pipeline with GitHub Actions
2829
* [Azure Pipelines](https://marketplace.visualstudio.com/items?itemName=ms-azure-devops.azure-pipelines) - to register APIs using a CI/CD pipeline with Azure Pipelines
2930
* [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) - to generate OpenAPI specification files from API code
31+
* [GitHub Copilot for Azure](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-github-copilot) - to generate OpenAPI specification files using the Azure API Center Plugin for GitHub Copilot for Azure
3032

3133
[!INCLUDE [vscode-extension-setup](includes/vscode-extension-setup.md)]
3234

@@ -51,9 +53,9 @@ The following steps register an API in your API center with a CI/CD pipeline. Wi
5153

5254
Learn more about setting up a [GitHub Actions workflow](register-apis-github-actions.md) to register APIs with your API center.
5355

54-
## Generate OpenAPI specification file from API code
56+
## Generate OpenAPI spec from API code
5557

56-
Use the power of GitHub Copilot with the Azure API Center extension for Visual Studio Code to create an OpenAPI specification file from your API code. Right-click on the API code, select **Copilot** from the options, and select **Generate API documentation**. GitHub Copilot creates an OpenAPI specification file.
58+
Use the power of [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) with the Azure API Center extension for Visual Studio Code to create an OpenAPI specification file from your API code. Right-click on the API code, select **Copilot** from the options, and select **Generate API documentation**. GitHub Copilot creates an OpenAPI specification file.
5759

5860
> [!NOTE]
5961
> This feature is available in the pre-release version of the API Center extension.
@@ -62,6 +64,33 @@ Use the power of GitHub Copilot with the Azure API Center extension for Visual S
6264

6365
After generating the OpenAPI specification file and checking for accuracy, you can register the API with your API center using the **Azure API Center: Register API** command.
6466

67+
## Generate OpenAPI spec using natural language prompts
68+
69+
The API Center plugin for [GitHub Copilot for Azure](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azure-github-copilot) helps you design new APIs starting from natural language prompts. With AI assistance, quickly generate an OpenAPI spec for API development that complies with your organization's standards.
70+
71+
> [!NOTE]
72+
> This feature is available in the pre-release version of the API Center extension.
73+
74+
1. If desired, set an active API style guide. Use the **Ctrl+Shift+P** keyboard shortcut to open the Command Palette. Type **Azure API Center: Set API Style Guide**, make a selection, and hit **Enter**.
75+
76+
If no style guide is set, the default `spectral:oas` ruleset is used.
77+
1. In the chat panel, make a request in natural language to the `@azure` agent to describe what the API does. Example:
78+
79+
```vscode
80+
@azure Generate OpenAPI spec: An API that allows customers to pay for an order using various payment methods such as cash, checks, credit cards, and debit cards.
81+
```
82+
83+
The agent responds with an OpenAPI specification document.
84+
85+
:::image type="content" source="media/build-register-apis-vscode-extension/generate-api-specification.png" alt-text="Screenshot showing how to use @azure extension to generate an OpenAPI spec from a prompt.":::
86+
87+
88+
1. Review the generated output for accuracy and compliance with your API style guide. Refine the prompt if needed to regenerate.
89+
90+
> [!TIP]
91+
> Effective prompts focus on an API's business requirements rather than implementation details. Shorter prompts sometimes work better than longer ones.
92+
1. When it meets your requirements, save the generated OpenAPI specification to a file.
93+
1. Register the API with your API center. Select **Register your API in API Center** button in the chat panel, or select **Azure API Center: Register API** from the Command Palette, and follow the prompts.
6594
6695
## Related content
6796

articles/api-center/includes/vscode-extension-basic-prerequisites.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ ms.custom: Include file
1515

1616
* One or more API centers in your Azure subscription.
1717

18-
* Currently, you need to be assigned the Contributor role or higher permissions to manage APIs with the extension.
18+
* Currently, you need to be assigned the Azure API Center Service Contributor role or higher permissions on an API center to manage APIs with the extension.
1919

2020
* [Visual Studio Code](https://code.visualstudio.com/)
2121

22-
* [Azure API Center extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=apidev.azure-api-center)
22+
* [Azure API Center extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=apidev.azure-api-center)
129 KB
Loading

articles/api-center/register-apis-github-actions.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ In the following steps, create a Microsoft Entra ID service principal, which wil
5555
> [!NOTE]
5656
> Configuring a service principal is shown for demonstration purposes. The recommended way to authenticate with Azure for GitHub Actions is with OpenID Connect, an authentication method that uses short-lived tokens. Setting up OpenID Connect with GitHub Actions is more complex but offers hardened security. [Learn more](../app-service/deploy-github-actions.md?tabs=openid%2Caspnetcore#1-generate-deployment-credentials)
5757
58-
Create a service principal using the [az ad sp create-for-rbac](/cli/azure/ad#az-ad-sp-create-for-rbac) command. The following example first uses the [az apic show](/cli/azure/apic#az-apic-show) command to retrieve the resource ID of the API center. The service principal is then created with the Contributor role for the API center.
58+
Create a service principal using the [az ad sp create-for-rbac](/cli/azure/ad#az-ad-sp-create-for-rbac) command. The following example first uses the [az apic show](/cli/azure/apic#az-apic-show) command to retrieve the resource ID of the API center. The service principal is then created with the Azure API Center Service Contributor role for the API center.
5959

6060
#### [Bash](#tab/bash)
6161

@@ -67,7 +67,7 @@ spName=<service-principal-name>
6767
6868
apicResourceId=$(az apic show --name $apiCenter --resource-group $resourceGroup --query "id" --output tsv)
6969
70-
az ad sp create-for-rbac --name $spName --role Contributor --scopes $apicResourceId --json-auth
70+
az ad sp create-for-rbac --name $spName --role "Azure API Center Service Contributor" --scopes $apicResourceId --json-auth
7171
```
7272

7373
#### [PowerShell](#tab/powershell)
@@ -80,7 +80,7 @@ $spName = "<service-principal-name>"
8080
8181
$apicResourceId = $(az apic show --name $apiCenter --resource-group $resourceGroup --query "id" --output tsv)
8282
83-
az ad sp create-for-rbac --name $spName --role Contributor --scopes $apicResourceId --json-auth
83+
az ad sp create-for-rbac --name $spName --role "Azure API Center Service Contributor" --scopes $apicResourceId --json-auth
8484
```
8585
---
8686

articles/api-management/api-management-howto-disaster-recovery-backup-restore.md

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: dlepow
77

88
ms.service: azure-api-management
99
ms.topic: how-to
10-
ms.date: 01/31/2023
10+
ms.date: 09/06/2024
1111
ms.author: danlep
1212
ms.custom: devx-track-azurepowershell
1313
---
@@ -129,6 +129,38 @@ Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $api
129129

130130
Backup is a long-running operation that may take several minutes to complete. During this time the API gateway continues to handle requests, but the state of the service is Updating.
131131

132+
### [CLI](#tab/cli)
133+
134+
[Sign in](/cli/azure/authenticate-azure-cli) with Azure CLI.
135+
136+
In the following examples:
137+
138+
* An API Management instance named *myapim* is in resource group *apimresourcegroup*.
139+
* A storage account named *backupstorageaccount* is in resource group *storageresourcegroup*. The storage account has a container named *backups*.
140+
* A backup blob will be created with name *ContosoBackup.apimbackup*.
141+
142+
Set variables in Bash:
143+
144+
```azurecli-interactive
145+
apiManagementName="myapim";
146+
apiManagementResourceGroup="apimresourcegroup";
147+
storageAccountName="backupstorageaccount";
148+
storageResourceGroup="storageresourcegroup";
149+
containerName="backups";
150+
backupName="ContosoBackup.apimbackup";
151+
```
152+
153+
### Access using storage access key
154+
155+
```azurecli-interactive
156+
storageKey=$(az storage account keys list --resource-group $storageResourceGroup --account-name $storageAccountName --query [0].value --output tsv)
157+
158+
az apim backup --resource-group $apiManagementResourceGroup --name $apiManagementName \
159+
--storage-account-name $storageAccountName --storage-account-key $storageKey --storage-account-container $containerName --backup-name $backupName
160+
```
161+
162+
Backup is a long-running operation that may take several minutes to complete. During this time the API gateway continues to handle requests, but the state of the service is Updating.
163+
132164
### [REST](#tab/rest)
133165

134166
See [Azure REST API reference](/rest/api/azure/) for information about authenticating and calling Azure REST APIs.
@@ -261,6 +293,35 @@ Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $ap
261293

262294
Restore is a long-running operation that may take up to 45 minutes or more to complete.
263295

296+
### [CLI](#tab/cli)
297+
298+
In the following examples,
299+
300+
* An API Management instance named *myapim* is restored from the backup blob named *ContosoBackup.apimbackup* in storage account *backupstorageaccount*.
301+
* The backup blob is in a container named *backups*.
302+
303+
Set variables in Bash:
304+
305+
```azurecli-interactive
306+
apiManagementName="myapim";
307+
apiManagementResourceGroup="apimresourcegroup";
308+
storageAccountName="backupstorageaccount";
309+
storageResourceGroup="storageresourcegroup";
310+
containerName="backups";
311+
backupName="ContosoBackup.apimbackup"
312+
```
313+
314+
### Access using storage access key
315+
316+
```azurecli-interactive
317+
storageKey=$(az storage account keys list --resource-group $storageResourceGroup --account-name $storageAccountName --query [0].value --output tsv)
318+
319+
az apim restore --resource-group $apiManagementResourceGroup --name $apiManagementName \
320+
--storage-account-name $storageAccountName --storage-account-key $storageKey --storage-account-container $containerName --backup-name $backupName
321+
```
322+
323+
Restore is a long-running operation that may take up to 45 minutes or more to complete.
324+
264325
### [REST](#tab/rest)
265326

266327
To restore an API Management service from a previously created backup, make the following HTTP request:

articles/api-management/migrate-stv1-to-stv2-vnet.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: dlepow
66
ms.service: azure-api-management
77
ms.custom:
88
ms.topic: how-to
9-
ms.date: 09/16/2024
9+
ms.date: 11/04/2024
1010
ms.author: danlep
1111
---
1212

@@ -25,6 +25,8 @@ For a VNet-inject instance, you have the following migration options:
2525

2626
* [**Option 2: Change to a new subnet**](#option-2-migrate-and-change-to-new-subnet) - Migrate your instance by specifying a different subnet in the same or a different VNet. After migration, optionally migrate back to the instance's original subnet. The migration process changes the VIP address(es) of the instance. After migration, you need to update any network dependencies including DNS, firewall rules, and VNets to use the new VIP address(es).
2727

28+
Under certain, less frequent conditions, migration in the same subnet may not be possible or behaves differently. For more information, see [Special conditions and scenarios](#special-conditions-and-scenarios).
29+
2830
If you need to migrate a *non-VNnet-injected* API Management hosted on the `stv1` platform, see [Migrate a non-VNet-injected API Management instance to the stv2 platform](migrate-stv1-to-stv2-no-vnet.md).
2931

3032
[!INCLUDE [api-management-migration-alert](../../includes/api-management-migration-alert.md)]
@@ -217,6 +219,28 @@ After you update the VNet configuration, the status of your API Management insta
217219

218220
[!INCLUDE [api-management-migration-rollback](../../includes/api-management-migration-rollback.md)]
219221

222+
## Special conditions and scenarios
223+
224+
Under certain conditions, [Option 1: Migrate and keep same subnet](#option-1-migrate-and-keep-same-subnet) may not be available or behaves differently. The portal detects these conditions and recommends the migration option(s). If you aren't able to use Option 1, or multiple conditions are present, use [Option 2: Change to a new subnet](#option-2-migrate-and-change-to-new-subnet).
225+
226+
* **VNet with special internal conditions** - If your API Management instance is currently deployed in a VNet with special internal conditions (unrelated to customer configuration), you are notified in the portal that Option 1 for same-subnet migration in the portal includes additional downtime (approximately 1 hour). Using the portal for migration is recommended. You can also use the following modified Azure CLI script for same-subnet migration with approximately 1 hour of downtime:
227+
228+
```azurecli
229+
APIM_NAME={name of your API Management instance}
230+
# In PowerShell, use the following syntax: $APIM_NAME={name of your API Management instance}
231+
RG_NAME={name of your resource group}
232+
# Get resource ID of API Management instance
233+
APIM_RESOURCE_ID=$(az apim show --name $APIM_NAME --resource-group $RG_NAME --query id --output tsv)
234+
# Call REST API to migrate to stv2 and preserve VIP address for special condition
235+
az rest --method post --uri "$APIM_RESOURCE_ID/migrateToStv2?api-version=2024-06-01-preview&migrateWithDowntime=true" --body '{"mode": "PreserveIP"}'
236+
```
237+
238+
* **Multiple stv1 instances in subnet** - Sufficient free IP addresses may not be available for a same-subnet migration if you attempt to migrate the instances simultaneously. You may be able to migrate instances sequentially using Option 1.
239+
240+
* **Subnet delegation** - If the subnet where API Management is deployed is currently delegated to other Azure services, you must migrate using Option 2.
241+
242+
* **Azure Key Vault blocked** - If access to Azure Key Vault is currently blocked, you must migrate using Option 2, including setting up NSG rules in the new subnet for access to Azure Key Vault.
243+
220244
[!INCLUDE [api-management-migration-support](../../includes/api-management-migration-support.md)]
221245

222246
## Frequently asked questions

0 commit comments

Comments
 (0)