Updates from: 08/19/2024 01:05:47
Service Microsoft Docs article Related commit history on GitHub Change details
app-service Webjobs Sdk How To https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/app-service/webjobs-sdk-how-to.md
For example, the `connection` property for an Azure Blob trigger definition migh
#### Identity-based connections
-To use identity-based connections in the WebJobs SDK, make sure you are using the latest versions of WebJobs packages in your project. You should also ensure you have a reference to [Microsoft.Azure.WebJobs.Host.Storage](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Host.Storage). When setting up WebJobs within your HostBuilder, make sure to include a call to `AddAzureStorageCoreServices`, as this is what allows `AzureWebJobsStorage` and other Storage triggers and bindings to use identity:
+To use identity-based connections in the WebJobs SDK, make sure you are using the latest versions of WebJobs packages in your project. You should also ensure you have a reference to [Microsoft.Azure.WebJobs.Host.Storage](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Host.Storage). The following is an example of what your project file might look like after making these updates:
+
+```xml
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>net48</TargetFramework>
+ <IsWebJobProject>true</IsWebJobProject>
+ <WebJobName>$(AssemblyName)</WebJobName>
+ <WebJobType>Continuous</WebJobType>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.41" />
+ <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage.Queues" Version="5.3.1" />
+ <PackageReference Include="Microsoft.Azure.WebJobs.Host.Storage" Version="5.0.1" />
+ <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <None Update="appsettings.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ </ItemGroup>
+</Project>
+```
+
+When setting up WebJobs within your HostBuilder, make sure to include a call to `AddAzureStorageCoreServices`, as this is what allows `AzureWebJobsStorage` and other Storage triggers and bindings to use identity:
```csharp builder.ConfigureWebJobs(b =>
If you provide your configuration through any means other than environment varia
You may omit the `queueServiceUri` property if you do not plan to use blob triggers.
-When your code is run locally, this will default to using your developer identity per the behavior described for DefaultAzureCredential.
+When your code is run locally, this will default to using your developer identity per the behavior described for [DefaultAzureCredential](/dotnet/api/azure.identity.defaultazurecredential).
When your code is hosted in Azure App Service, the configuration shown above will default to the [system-assigned managed identity](./overview-managed-identity.md#add-a-system-assigned-identity) for the resource. To instead use a [user-assigned identity](./overview-managed-identity.md#add-a-user-assigned-identity) which has been assigned to the app, you need to add additional properties for your connection that specify which identity should be used. The `credential` property (`AzureWebJobsStorage__credential` as an environment variable) should be set to the string "managedidentity". The `clientId` property (`AzureWebJobsStorage__clientId` as an environment variable) should be set to the client ID of the user-assigned managed identity to be used. As structured configuration, the complete object would be:
azure-cache-for-redis Cache Web App Aspnet Core Howto https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-cache-for-redis/cache-web-app-aspnet-core-howto.md
There are also caching providers in .NET core. To quickly start using Redis with
## Skip to the code on GitHub
-Clone the repo [https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/aspnet-core](https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/aspnet-core) on GitHub.
+Clone the [https://github.com/Azure-Samples/azure-cache-redis-samples](https://github.com/Azure-Samples/azure-cache-redis-samples) GitHub repo and navigate to the `quickstart/aspnet-core` directory to view the completed source code for the steps ahead.
+
+The `quickstart/aspnet-core` directory is also configured as an [Azure Developer CLI (`azd`)](/azure/developer/azure-developer-cli/overview) template. Use the open-source `azd` tool to streamline the provisioning and deployment from a local environment to Azure. Optionally, run the `azd up` command to automatically provision an Azure Cache for Redis instance, and to configure the local sample app to connect to it:
+
+```azdeveloper
+azd up
+```
+
+### Explore the eShop sample
As a next step, you can see a real-world scenario eShop application demonstrating the ASP.NET core caching providers: [ASP.NET core eShop using Redis caching providers](https://github.com/Azure-Samples/azure-cache-redis-demos).
Deployment instructions are in the README.md.
## Create a cache
-Make a note of the **HOST NAME** and the **Primary** access key. You use these values later to construct the *CacheConnection* secret.
-## Add a local secret for the connection string
+## Add a local secret for the host name
-In your command window, execute the following command to store a new secret named *CacheConnection*, after replacing the placeholders, including angle brackets, for your cache name and primary access key:
+In your command window, execute the following command to store a new secret named *RedisHostName*, after replacing the placeholders, including angle brackets, for your cache name and primary access key:
```dos
-dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"
+dotnet user-secrets set RedisHostName "<cache-name>.redis.cache.windows.net"
``` ## Connect to the cache with RedisConnection
The `RedisConnection` class manages the connection to your cache. The connection
_redisConnection = await _redisConnectionFactory; ```
-In `RedisConnection.cs`, you see the `StackExchange.Redis` namespace is added to the code. This is needed for the `RedisConnection` class.
+The `RedisConnection.cs` class includes the `StackExchange.Redis` and `Azure.Identity` namespaces at the top of the file to include essential types to connect to Azure Cache for Redis.
```csharp using StackExchange.Redis;
+using Azure.Identity;
``` The `RedisConnection` code ensures that there's always a healthy connection to the cache by managing the `ConnectionMultiplexer` instance from `StackExchange.Redis`. The `RedisConnection` class recreates the connection when a connection is lost and unable to reconnect automatically.
azure-functions Functions App Settings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-app-settings.md
On a function app running in a [Dedicated (App Service) plan](./dedicated-plan.m
Determines whether the built-in administrator (`/admin`) endpoints in your function app can be accessed. When set to `false` (the default), the app allows requests to endpoints under `/admin` when those requests present a [master key](function-keys-how-to.md#understand-keys) in the request. When `true`, `/admin` endpoints can't be accessed, even with a master key.
+This property cannot be set for apps running on the Linux Consumption SKU, and it cannot be set for apps running on version 1.x of Azure Functions. If you are using version 1.x, you must first [migrate to version 4.x](./migrate-version-1-version-4.md).
+ ## linuxFxVersion For function apps running on Linux, `linuxFxVersion` indicates the language and version for the language-specific worker process. This information is used, along with [`FUNCTIONS_EXTENSION_VERSION`](#functions_extension_version), to determine which specific Linux container image is installed to run your function app. This setting can be set to a predefined value or a custom image URI.
azure-functions Functions Create First Quarkus https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/functions-create-first-quarkus.md
Now that you've opened your Azure function in the portal, here are more features
## Clean up resources
-If you don't need these resources, you can delete them by running the following command in Azure Cloud Shell or on your local terminal:
+If you don't need these resources, you can delete them by running the following command:
```azurecli az group delete --name <yourResourceGroupName> --yes
azure-functions Security Concepts https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-functions/security-concepts.md
For the highest level of security, you can also secure the entire application ar
### Disable administrative endpoints
-Function apps can serve administrative endpoints under the `/admin` route that can be used for operations such as obtaining host status information and performing test invocations. When exposed, requests against these endpoints must include the app's master key. Administrative operations are also available through the [Azure Resource Manager `Microsoft.Web/sites` API](/rest/api/appservice/web-apps), which offers Azure RBAC. You can disable the `/admin` endpoints by setting the `functionsRuntimeAdminIsolationEnabled` site property to `true`.
+Function apps can serve administrative endpoints under the `/admin` route that can be used for operations such as obtaining host status information and performing test invocations. When exposed, requests against these endpoints must include the app's master key. Administrative operations are also available through the [Azure Resource Manager `Microsoft.Web/sites` API](/rest/api/appservice/web-apps), which offers Azure RBAC. You can disable the `/admin` endpoints by setting the `functionsRuntimeAdminIsolationEnabled` site property to `true`. This property cannot be set for apps running on the Linux Consumption SKU, and it cannot be set for apps running on version 1.x of Azure Functions. If you are using version 1.x, you must first [migrate to version 4.x](./migrate-version-1-version-4.md).
### Enable App Service Authentication/Authorization
azure-monitor Data Collection Log Json https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/agents/data-collection-log-json.md
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourc
> The agent based JSON custom file ingestion is currently in preview and does not have a complete UI experience in the portal yet. While you can create the DCR using the portal, you must modify it to define the columns in the incoming stream. This section includes details on creating the DCR using an ARM template. ### Incoming stream schema+
+> [!NOTE]
+> Multiline support that uses an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) time stamp to delimited events is expected mid-October 2024
+ JSON files include a property name with each value, and the incoming stream in the DCR needs to include a column matching the name of each property. You need to modify the `columns` section of the ARM template with the columns from your log. The following table describes optional columns that you can include in addition to the columns defining the data in your log file.
azure-monitor Data Collection Log Text https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/agents/data-collection-log-text.md
Adhere to the following recommendations to ensure that you don't experience data
## Incoming stream+
+> [!NOTE]
+> Multiline support that uses an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) time stamp to delimited events is expected mid-October 2024
+ The incoming stream of data includes the columns in the following table. | Column | Type | Description |
azure-monitor Autoscale Custom Metric https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/autoscale/autoscale-custom-metric.md
Azure Monitor autoscale applies to:
+ [Azure Cloud Services](https://azure.microsoft.com/services/cloud-services/) + [Azure App Service - Web Apps](https://azure.microsoft.com/services/app-service/web/) + [Azure Data Explorer cluster](https://azure.microsoft.com/services/data-explorer/)
-+ Integration service environment and [Azure API Management](../../api-management/api-management-key-concepts.md)
++ [Azure API Management](../../api-management/api-management-key-concepts.md) ## Prerequisite
azure-monitor Container Insights High Scale https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/containers/container-insights-high-scale.md
Last updated 08/06/2024
# High scale logs collection in Container Insights (Preview) High scale mode is a feature in Container Insights that enables you to collect container console (stdout & stderr) logs with high throughput from your Azure Kubernetes Service (AKS) cluster nodes. This feature enables you to collect up to 50,000 logs/sec per node.
+> [!NOTE]
+> This feature is currently in public preview. For additional information, please read the [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms).
+ ## Overview When high scale mode is enabled, Container Insights performs multiple configuration changes resulting in a higher overall throughput. This includes using an upgraded agent and Azure Monitor data pipeline with scale improvements. These changes are all made in the background by Azure Monitor and don't require input or configuration after the feature is enabled.
azure-monitor Kubernetes Monitoring Private Link https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/containers/kubernetes-monitoring-private-link.md
## Prerequisites
-This article describes how to connect your cluster to an existing Azure Monitor Private Link Scope (AMPLS). Create an AMPLS following the guidance in [Configure your private link](../logs/private-link-configure.md).
+- This article describes how to connect your cluster to an existing Azure Monitor Private Link Scope (AMPLS). Create an AMPLS following the guidance in [Configure your private link](../logs/private-link-configure.md).
+ - Azure CLI version 2.61.0 or higher.
## Managed Prometheus (Azure Monitor workspace) Data for Managed Prometheus is stored in an [Azure Monitor workspace](../essentials/azure-monitor-workspace-overview.md), so you must make this workspace accessible over a private link.
azure-resource-manager Bicep Core Diagnostics https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/bicep-core-diagnostics.md
Title: Bicep warnings and error codes
description: Lists the warnings and error codes. Previously updated : 08/06/2024 Last updated : 08/16/2024 # Bicep core diagnostics
If you need more information about a particular diagnostic code, select the **Fe
| Code | Level | Description | ||-|-_--|
-| BCP001 | Error | The following token isn't recognized: "{token}". |
-| BCP002 | Error | The multi-line comment at this location isn't terminated. Terminate it with the */ character sequence. |
-| BCP003 | Error | The string at this location isn't terminated. Terminate the string with a single quote character. |
-| BCP004 | Error | The string at this location isn't terminated due to an unexpected new line character. |
-| BCP005 | Error | The string at this location isn't terminated. Complete the escape sequence and terminate the string with a single unescaped quote character. |
-| BCP006 | Error | The specified escape sequence isn't recognized. Only the following escape sequences are allowed: {ToQuotedString(escapeSequences)}. |
-| BCP007 | Error | This declaration type isn't recognized. Specify a metadata, parameter, variable, resource, or output declaration. |
-| BCP008 | Error | Expected the "=" token, or a newline at this location. |
-| BCP009 | Error | Expected a literal value, an array, an object, a parenthesized expression, or a function call at this location. |
-| BCP010 | Error | Expected a valid 64-bit signed integer. |
-| BCP011 | Error | The type of the specified value is incorrect. Specify a string, boolean, or integer literal. |
-| BCP012 | Error | Expected the "{keyword}" keyword at this location. |
-| BCP013 | Error | Expected a parameter identifier at this location. |
-| BCP015 | Error | Expected a variable identifier at this location. |
-| BCP016 | Error | Expected an output identifier at this location. |
-| BCP017 | Error | Expected a resource identifier at this location. |
+| <a id='BCP001' />BCP001 | Error | The following token isn't recognized: "{token}". |
+| <a id='BCP002' />BCP002 | Error | The multi-line comment at this location isn't terminated. Terminate it with the */ character sequence. |
+| <a id='BCP003' />BCP003 | Error | The string at this location isn't terminated. Terminate the string with a single quote character. |
+| <a id='BCP004' />BCP004 | Error | The string at this location isn't terminated due to an unexpected new line character. |
+| <a id='BCP005' />BCP005 | Error | The string at this location isn't terminated. Complete the escape sequence and terminate the string with a single unescaped quote character. |
+| <a id='BCP006' />BCP006 | Error | The specified escape sequence isn't recognized. Only the following escape sequences are allowed: {ToQuotedString(escapeSequences)}. |
+| <a id='BCP007' />BCP007 | Error | This declaration type isn't recognized. Specify a metadata, parameter, variable, resource, or output declaration. |
+| <a id='BCP008' />BCP008 | Error | Expected the "=" token, or a newline at this location. |
+| <a id='BCP009' />BCP009 | Error | Expected a literal value, an array, an object, a parenthesized expression, or a function call at this location. |
+| <a id='BCP010' />BCP010 | Error | Expected a valid 64-bit signed integer. |
+| <a id='BCP011' />BCP011 | Error | The type of the specified value is incorrect. Specify a string, boolean, or integer literal. |
+| <a id='BCP012' />BCP012 | Error | Expected the "{keyword}" keyword at this location. |
+| <a id='BCP013' />BCP013 | Error | Expected a parameter identifier at this location. |
+| <a id='BCP015' />BCP015 | Error | Expected a variable identifier at this location. |
+| <a id='BCP016' />BCP016 | Error | Expected an output identifier at this location. |
+| <a id='BCP017' />BCP017 | Error | Expected a resource identifier at this location. |
| <a id='BCP018' />[BCP018](./diagnostics/bcp018.md) | Error | Expected the \<character> character at this location. |
-| BCP019 | Error | Expected a new line character at this location. |
-| BCP020 | Error | Expected a function or property name at this location. |
-| BCP021 | Error | Expected a numeric literal at this location. |
-| BCP022 | Error | Expected a property name at this location. |
-| BCP023 | Error | Expected a variable or function name at this location. |
-| BCP024 | Error | The identifier exceeds the limit of {LanguageConstants.MaxIdentifierLength}. Reduce the length of the identifier. |
-| BCP025 | Error | The property "{property}" is declared multiple times in this object. Remove or rename the duplicate properties. |
-| BCP026 | Error | The output expects a value of type "{expectedType}" but the provided value is of type "{actualType}". |
-| BCP028 | Error | Identifier "{identifier}" is declared multiple times. Remove or rename the duplicates. |
-| BCP029 | Error | The resource type isn't valid. Specify a valid resource type of format "\<types>@\<apiVersion>". |
-| BCP030 | Error | The output type isn't valid. Specify one of the following types: {ToQuotedString(validTypes)}. |
-| BCP031 | Error | The parameter type isn't valid. Specify one of the following types: {ToQuotedString(validTypes)}. |
-| BCP032 | Error | The value must be a compile-time constant. |
+| <a id='BCP019' />BCP019 | Error | Expected a new line character at this location. |
+| <a id='BCP020' />BCP020 | Error | Expected a function or property name at this location. |
+| <a id='BCP021' />BCP021 | Error | Expected a numeric literal at this location. |
+| <a id='BCP022' />BCP022 | Error | Expected a property name at this location. |
+| <a id='BCP023' />BCP023 | Error | Expected a variable or function name at this location. |
+| <a id='BCP024' />BCP024 | Error | The identifier exceeds the limit of {LanguageConstants.MaxIdentifierLength}. Reduce the length of the identifier. |
+| <a id='BCP025' />BCP025 | Error | The property "{property}" is declared multiple times in this object. Remove or rename the duplicate properties. |
+| <a id='BCP026' />BCP026 | Error | The output expects a value of type "{expectedType}" but the provided value is of type "{actualType}". |
+| <a id='BCP028' />BCP028 | Error | Identifier "{identifier}" is declared multiple times. Remove or rename the duplicates. |
+| <a id='BCP029' />BCP029 | Error | The resource type isn't valid. Specify a valid resource type of format "\<types>@\<apiVersion>". |
+| <a id='BCP030' />BCP030 | Error | The output type isn't valid. Specify one of the following types: {ToQuotedString(validTypes)}. |
+| <a id='BCP031' />BCP031 | Error | The parameter type isn't valid. Specify one of the following types: {ToQuotedString(validTypes)}. |
+| <a id='BCP032' />BCP032 | Error | The value must be a compile-time constant. |
| <a id='BCP033' />[BCP033](./diagnostics/bcp033.md) | Error/Warning | Expected a value of type \<data-type> but the provided value is of type \<data-type>. |
-| BCP034 | Error/Warning | The enclosing array expected an item of type "{expectedType}", but the provided item was of type "{actualType}". |
+| <a id='BCP034' />BCP034 | Error/Warning | The enclosing array expected an item of type "{expectedType}", but the provided item was of type "{actualType}". |
| <a id='BCP035' />[BCP035](./diagnostics/bcp035.md) | Error/Warning | The specified \<data-type> declaration is missing the following required properties: \<property-name>. | | <a id='BCP036' />[BCP036](./diagnostics/bcp036.md) | Error/Warning | The property \<property-name> expected a value of type \<data-type> but the provided value is of type \<data-type>. | | <a id='BCP037' />[BCP037](./diagnostics/bcp037.md) | Error/Warning | The property \<property-name> isn't allowed on objects of type \<type-definition>. | | <a id='BCP040' />[BCP040](./diagnostics/bcp040.md) | Error/Warning | String interpolation isn't supported for keys on objects of type \<type-definition>. |
-| BCP041 | Error | Values of type "{valueType}" can't be assigned to a variable. |
-| BCP043 | Error | This isn't a valid expression. |
-| BCP044 | Error | Can't apply operator "{operatorName}" to operand of type "{type}". |
-| BCP045 | Error | Can't apply operator "{operatorName}" to operands of type "{type1}" and "{type2}".{(additionalInfo is null? string.Empty : " " + additionalInfo)} |
-| BCP046 | Error | Expected a value of type "{type}". |
-| BCP047 | Error | String interpolation is unsupported for specifying the resource type. |
-| BCP048 | Error | Can't resolve function overload. For details, see the documentation. |
-| BCP049 | Error | The array index must be of type "{LanguageConstants.String}" or "{LanguageConstants.Int}" but the provided index was of type "{wrongType}". |
-| BCP050 | Error | The specified path is empty. |
-| BCP051 | Error | The specified path begins with "/". Files must be referenced using relative paths. |
-| <a id='BCP052' />[BCP052](./diagnostics/bcp052.md) | Error/Warning | The type \<type-name> doesn't contain property \<property-name>. |
+| <a id='BCP041' />BCP041 | Error | Values of type "{valueType}" can't be assigned to a variable. |
+| <a id='BCP043' />BCP043 | Error | This isn't a valid expression. |
+| <a id='BCP044' />BCP044 | Error | Can't apply operator "{operatorName}" to operand of type "{type}". |
+| <a id='BCP045' />BCP045 | Error | Can't apply operator "{operatorName}" to operands of type "{type1}" and "{type2}".{(additionalInfo is null? string.Empty : " " + additionalInfo)} |
+| <a id='BCP046' />BCP046 | Error | Expected a value of type "{type}". |
+| <a id='BCP047' />BCP047 | Error | String interpolation is unsupported for specifying the resource type. |
+| <a id='BCP048' />BCP048 | Error | Can't resolve function overload. For details, see the documentation. |
+| <a id='BCP049' />BCP049 | Error | The array index must be of type "{LanguageConstants.String}" or "{LanguageConstants.Int}" but the provided index was of type "{wrongType}". |
+| <a id='BCP050' />BCP050 | Error | The specified path is empty. |
+| <a id='BCP051' />BCP051 | Error | The specified path begins with "/". Files must be referenced using relative paths. |
+| <a id='BCP052' />[BCP052](./diagnostics/bcp052.md) | Error/Warning | The type \<type-name> doesn't contain property \<property-name>. |
| <a id='BCP053' />[BCP053](./diagnostics/bcp053.md) | Error/Warning | The type \<type-name> doesn't contain property \<property-name>. Available properties include \<property-names>. |
-| BCP054 | Error | The type "{type}" doesn't contain any properties. |
-| <a id='BCP055' />[BCP055](./diagnostics/bcp055.md) | Error | Can't access properties of type "{wrongType}". An "{LanguageConstants.Object}" type is required. |
-| BCP056 | Error | The reference to name "{name}" is ambiguous because it exists in namespaces {ToQuotedString(namespaces)}. The reference must be fully qualified. |
+| <a id='BCP054' />BCP054 | Error | The type "{type}" doesn't contain any properties. |
+| <a id='BCP055' />[BCP055](./diagnostics/bcp055.md) | Error | Can't access properties of type \<type-name>. A \<type-name> type is required. |
+| <a id='BCP056' />BCP056 | Error | The reference to name "{name}" is ambiguous because it exists in namespaces {ToQuotedString(namespaces)}. The reference must be fully qualified. |
| <a id='BCP057' />[BCP057](./diagnostics/bcp057.md) | Error | The name \<name> doesn't exist in the current context. |
-| BCP059 | Error | The name "{name}" isn't a function. |
-| BCP060 | Error | The "variables" function isn't supported. Directly reference variables by their symbolic names. |
-| BCP061 | Error | The "parameters" function isn't supported. Directly reference parameters by their symbolic names. |
+| <a id='BCP059' />BCP059 | Error | The name "{name}" isn't a function. |
+| <a id='BCP060' />BCP060 | Error | The "variables" function isn't supported. Directly reference variables by their symbolic names. |
+| <a id='BCP061' />BCP061 | Error | The "parameters" function isn't supported. Directly reference parameters by their symbolic names. |
| <a id='BCP062' />[BCP062](./diagnostics/bcp062.md) | Error | The referenced declaration with name \<type-name> isn't valid. |
-| BCP063 | Error | The name "{name}" isn't a parameter, variable, resource, or module. |
-| BCP064 | Error | Found unexpected tokens in interpolated expression. |
-| BCP065 | Error | Function "{functionName}" isn't valid at this location. It can only be used as a parameter default value. |
-| BCP066 | Error | Function "{functionName}" isn't valid at this location. It can only be used in resource declarations. |
-| BCP067 | Error | Can't call functions on type "{wrongType}". An "{LanguageConstants.Object}" type is required. |
-| BCP068 | Error | Expected a resource type string. Specify a valid resource type of format "\<types>@\<apiVersion>". |
-| BCP069 | Error | The function "{function}" isn't supported. Use the "{@operator}" operator instead. |
-| BCP070 | Error | Argument of type "{argumentType}" isn't assignable to parameter of type "{parameterType}". |
-| BCP071 | Error | Expected {expected}, but got {argumentCount}. |
+| <a id='BCP063' />BCP063 | Error | The name "{name}" isn't a parameter, variable, resource, or module. |
+| <a id='BCP064' />BCP064 | Error | Found unexpected tokens in interpolated expression. |
+| <a id='BCP065' />BCP065 | Error | Function "{functionName}" isn't valid at this location. It can only be used as a parameter default value. |
+| <a id='BCP066' />BCP066 | Error | Function "{functionName}" isn't valid at this location. It can only be used in resource declarations. |
+| <a id='BCP067' />BCP067 | Error | Can't call functions on type "{wrongType}". An "{LanguageConstants.Object}" type is required. |
+| <a id='BCP068' />BCP068 | Error | Expected a resource type string. Specify a valid resource type of format "\<types>@\<apiVersion>". |
+| <a id='BCP069' />BCP069 | Error | The function "{function}" isn't supported. Use the "{@operator}" operator instead. |
+| <a id='BCP070' />BCP070 | Error | Argument of type "{argumentType}" isn't assignable to parameter of type "{parameterType}". |
+| <a id='BCP071' />BCP071 | Error | Expected {expected}, but got {argumentCount}. |
| <a id='BCP072' />[BCP072](./diagnostics/bcp072.md) | Error | This symbol can't be referenced here. Only other parameters can be referenced in parameter default values. | | <a id='BCP073' />[BCP073](./diagnostics/bcp073.md) | Error/Warning | The property \<property-name> is read-only. Expressions can't be assigned to read-only properties. |
-| BCP074 | Error | Indexing over arrays requires an index of type "{LanguageConstants.Int}" but the provided index was of type "{wrongType}". |
-| BCP075 | Error | Indexing over objects requires an index of type "{LanguageConstants.String}" but the provided index was of type "{wrongType}". |
-| BCP076 | Error | Can't index over expression of type "{wrongType}". Arrays or objects are required. |
+| <a id='BCP074' />BCP074 | Error | Indexing over arrays requires an index of type "{LanguageConstants.Int}" but the provided index was of type "{wrongType}". |
+| <a id='BCP075' />BCP075 | Error | Indexing over objects requires an index of type "{LanguageConstants.String}" but the provided index was of type "{wrongType}". |
+| <a id='BCP076' />BCP076 | Error | Can't index over expression of type "{wrongType}". Arrays or objects are required. |
| <a id='BCP077' />[BCP077](./diagnostics/bcp077.md) | Error/Warning | The property \<property-name> on type \<type-name> is write-only. Write-only properties can't be accessed. | | <a id='BCP078' />[BCP078](./diagnostics/bcp078.md) | Error/Warning | The property \<property-name> requires a value of type \<type-name>, but none was supplied. |
-| BCP079 | Error | This expression is referencing its own declaration, which isn't allowed. |
-| BCP080 | Error | The expression is involved in a cycle ("{string.Join("\" -> \"", cycle)}"). |
-| BCP081 | Warning | Resource type "{resourceTypeReference.FormatName()}" doesn't have types available. Bicep is unable to validate resource properties prior to deployment, but this won't block the resource from being deployed. |
-| BCP082 | Error | The name "{name}" doesn't exist in the current context. Did you mean "{suggestedName}"? |
+| <a id='BCP079' />BCP079 | Error | This expression is referencing its own declaration, which isn't allowed. |
+| <a id='BCP080' />BCP080 | Error | The expression is involved in a cycle ("{string.Join("\" -> \"", cycle)}"). |
+| <a id='BCP081' />BCP081 | Warning | Resource type "{resourceTypeReference.FormatName()}" doesn't have types available. Bicep is unable to validate resource properties prior to deployment, but this won't block the resource from being deployed. |
+| <a id='BCP082' />BCP082 | Error | The name "{name}" doesn't exist in the current context. Did you mean "{suggestedName}"? |
| <a id='BCP083' />[BCP083](./diagnostics/bcp083.md) | Error/Warning | The type \<type-definition> doesn't contain property \<property-name>. Did you mean \<property-name>? |
-| BCP084 | Error | The symbolic name "{name}" is reserved. Use a different symbolic name. Reserved namespaces are {ToQuotedString(namespaces.OrderBy(ns => ns))}. |
-| BCP085 | Error | The specified file path contains one ore more invalid path characters. The following aren't permitted: {ToQuotedString(forbiddenChars.OrderBy(x => x).Select(x => x.ToString()))}. |
-| BCP086 | Error | The specified file path ends with an invalid character. The following aren't permitted: {ToQuotedString(forbiddenPathTerminatorChars.OrderBy(x => x).Select(x => x.ToString()))}. |
-| BCP087 | Error | Array and object literals aren't allowed here. |
+| <a id='BCP084' />BCP084 | Error | The symbolic name "{name}" is reserved. Use a different symbolic name. Reserved namespaces are {ToQuotedString(namespaces.OrderBy(ns => ns))}. |
+| <a id='BCP085' />BCP085 | Error | The specified file path contains one or more invalid path characters. The following aren't permitted: {ToQuotedString(forbiddenChars.OrderBy(x => x).Select(x => x.ToString()))}. |
+| <a id='BCP086' />BCP086 | Error | The specified file path ends with an invalid character. The following aren't permitted: {ToQuotedString(forbiddenPathTerminatorChars.OrderBy(x => x).Select(x => x.ToString()))}. |
+| <a id='BCP087' />BCP087 | Error | Array and object literals aren't allowed here. |
| <a id='BCP088' />[BCP088](./diagnostics/bcp088.md) | Error/Warning | The property \<property-name> expected a value of type \<type-name> but the provided value is of type \<type-name>. Did you mean \<type-name>? | | <a id='BCP089' />[BCP089](./diagnostics/bcp089.md) | Error/Warning | The property \<property-name> isn't allowed on objects of type \<resource-type>. Did you mean \<property-name>? |
-| BCP090 | Error | This module declaration is missing a file path reference. |
-| BCP091 | Error | An error occurred reading file. {failureMessage} |
-| BCP092 | Error | String interpolation isn't supported in file paths. |
-| BCP093 | Error | File path "{filePath}" couldn't be resolved relative to "{parentPath}". |
-| BCP094 | Error | This module references itself, which isn't allowed. |
-| BCP095 | Error | The file is involved in a cycle ("{string.Join("\" -> \"", cycle)}"). |
-| BCP096 | Error | Expected a module identifier at this location. |
-| BCP097 | Error | Expected a module path string. This should be a relative path to another bicep file, e.g. 'myModule.bicep' or '../parent/myModule.bicep' |
-| BCP098 | Error | The specified file path contains a "\" character. Use "/" instead as the directory separator character. |
-| BCP099 | Error | The "{LanguageConstants.ParameterAllowedPropertyName}" array must contain one or more items. |
-| BCP100 | Error | The function "if" isn't supported. Use the "?:\" (ternary conditional) operator instead, e.g. condition? ValueIfTrue : ValueIfFalse |
-| BCP101 | Error | The "createArray" function isn't supported. Construct an array literal using []. |
-| BCP102 | Error | The "createObject" function isn't supported. Construct an object literal using {}. |
-| BCP103 | Error | The following token isn't recognized: "{token}". Strings are defined using single quotes in bicep. |
-| BCP104 | Error | The referenced module has errors. |
-| BCP105 | Error | Unable to load file from URI "{fileUri}". |
-| BCP106 | Error | Expected a new line character at this location. Commas aren't used as separator delimiters. |
-| BCP107 | Error | The function "{name}" doesn't exist in namespace "{namespaceType.Name}". |
-| BCP108 | Error | The function "{name}" doesn't exist in namespace "{namespaceType.Name}". Did you mean "{suggestedName}"? |
-| BCP109 | Error | The type "{type}" doesn't contain function "{name}". |
-| BCP110 | Error | The type "{type}" doesn't contain function "{name}". Did you mean "{suggestedName}"? |
-| BCP111 | Error | The specified file path contains invalid control code characters. |
-| BCP112 | Error | The "{LanguageConstants.TargetScopeKeyword}" can't be declared multiple times in one file. |
-| BCP113 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeTenant}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include tenant: tenant(), named management group: managementGroup(\<name>), named subscription: subscription(\<subId>), or named resource group in a named subscription: resourceGroup(\<subId>, \<name>). |
-| BCP114 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeManagementGroup}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include current management group: managementGroup(), named management group: managementGroup(\<name>), named subscription: subscription(\<subId>), tenant: tenant(), or named resource group in a named subscription: resourceGroup(\<subId>, \<name>). |
-| BCP115 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeSubscription}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include current subscription: subscription(), named subscription: subscription(\<subId>), named resource group in same subscription: resourceGroup(\<name>), named resource group in different subscription: resourceGroup(\<subId>, \<name>), or tenant: tenant(). |
-| BCP116 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeResourceGroup}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include current resource group: resourceGroup(), named resource group in same subscription: resourceGroup(\<name>), named resource group in a different subscription: resourceGroup(\<subId>, \<name>), current subscription: subscription(), named subscription: subscription(\<subId>) or tenant: tenant(). |
-| BCP117 | Error | An empty indexer isn't allowed. Specify a valid expression. |
-| BCP118 | Error | Expected the "{" character, the "[" character, or the "if" keyword at this location. |
-| BCP119 | Warning | Unsupported scope for extension resource deployment. Expected a resource reference. |
-| BCP120 | Error | This expression is being used in an assignment to the "{propertyName}" property of the "{objectTypeName}" type, which requires a value that can be calculated at the start of the deployment. |
-| BCP121 | Error | Resources: {ToQuotedString(resourceNames)} are defined with this same name in a file. Rename them or split into different modules. |
-| BCP122 | Error | Modules: {ToQuotedString(moduleNames)} are defined with this same name and this same scope in a file. Rename them or split into different modules. |
-| BCP123 | Error | Expected a namespace or decorator name at this location. |
-| BCP124 | Error | The decorator "{decoratorName}" can only be attached to targets of type "{attachableType}", but the target has type "{targetType}". |
-| BCP125 | Error | Function "{functionName}" can't be used as a parameter decorator. |
-| BCP126 | Error | Function "{functionName}" can't be used as a variable decorator. |
-| BCP127 | Error | Function "{functionName}" can't be used as a resource decorator. |
-| BCP128 | Error | Function "{functionName}" can't be used as a module decorator. |
-| BCP129 | Error | Function "{functionName}" can't be used as an output decorator. |
-| BCP130 | Error | Decorators aren't allowed here. |
-| BCP132 | Error | Expected a declaration after the decorator. |
-| BCP133 | Error | The unicode escape sequence isn't valid. Valid unicode escape sequences range from \\u{0} to \\u{10FFFF}. |
-| BCP134 | Warning | Scope {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(suppliedScope))} isn't valid for this module. Permitted scopes: {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(supportedScopes))}. |
-| BCP135 | Warning | Scope {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(suppliedScope))} isn't valid for this resource type. Permitted scopes: {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(supportedScopes))}. |
-| BCP136 | Error | Expected a loop item variable identifier at this location. |
-| BCP137 | Error | Loop expected an expression of type "{LanguageConstants.Array}" but the provided value is of type "{actualType}". |
-| BCP138 | Error | For-expressions aren't supported in this context. For-expressions may be used as values of resource, module, variable, and output declarations, or values of resource and module properties. |
-| BCP139 | Warning | A resource's scope must match the scope of the Bicep file for it to be deployable. You must use modules to deploy resources to a different scope. |
-| BCP140 | Error | The multi-line string at this location isn't terminated. Terminate it with "'''. |
-| BCP141 | Error | The expression can't be used as a decorator as it isn't callable. |
-| BCP142 | Error | Property value for-expressions can't be nested. |
-| BCP143 | Error | For-expressions can't be used with properties whose names are also expressions. |
-| BCP144 | Error | Directly referencing a resource or module collection isn't currently supported here. Apply an array indexer to the expression. |
-| BCP145 | Error | Output "{identifier}" is declared multiple times. Remove or rename the duplicates. |
-| BCP147 | Error | Expected a parameter declaration after the decorator. |
-| BCP148 | Error | Expected a variable declaration after the decorator. |
-| BCP149 | Error | Expected a resource declaration after the decorator. |
-| BCP150 | Error | Expected a module declaration after the decorator. |
-| BCP151 | Error | Expected an output declaration after the decorator. |
-| BCP152 | Error | Function "{functionName}" can't be used as a decorator. |
-| BCP153 | Error | Expected a resource or module declaration after the decorator. |
-| BCP154 | Error | Expected a batch size of at least {limit} but the specified value was "{value}". |
-| BCP155 | Error | The decorator "{decoratorName}" can only be attached to resource or module collections. |
-| BCP156 | Error | The resource type segment "{typeSegment}" is invalid. Nested resources must specify a single type segment, and optionally can specify an API version using the format "\<type>@\<apiVersion>". |
-| BCP157 | Error | The resource type can't be determined due to an error in the containing resource. |
-| BCP158 | Error | Can't access nested resources of type "{wrongType}". A resource type is required. |
-| BCP159 | Error | The resource "{resourceName}" doesn't contain a nested resource named "{identifierName}". Known nested resources are: {ToQuotedString(nestedResourceNames)}. |
-| BCP160 | Error | A nested resource can't appear inside of a resource with a for-expression. |
-| BCP162 | Error | Expected a loop item variable identifier or "(" at this location. |
-| BCP164 | Error | A child resource's scope is computed based on the scope of its ancestor resource. This means that using the "scope" property on a child resource is unsupported. |
-| BCP165 | Error | A resource's computed scope must match that of the Bicep file for it to be deployable. This resource's scope is computed from the "scope" property value assigned to ancestor resource "{ancestorIdentifier}". You must use modules to deploy resources to a different scope. |
-| BCP166 | Error | Duplicate "{decoratorName}" decorator. |
-| BCP167 | Error | Expected the "{" character or the "if" keyword at this location. |
-| BCP168 | Error | Length must not be a negative value. |
-| BCP169 | Error | Expected resource name to contain {expectedSlashCount} "/" character(s). The number of name segments must match the number of segments in the resource type. |
-| BCP170 | Error | Expected resource name to not contain any "/" characters. Child resources with a parent resource reference (via the parent property or via nesting) must not contain a fully-qualified name. |
-| BCP171 | Error | Resource type "{resourceType}" isn't a valid child resource of parent "{parentResourceType}". |
-| BCP172 | Error | The resource type can't be validated due to an error in parent resource "{resourceName}". |
-| BCP173 | Error | The property "{property}" can't be used in an existing resource declaration. |
-| BCP174 | Warning | Type validation isn't available for resource types declared containing a "/providers/" segment. Instead use the "scope" property. |
-| BCP176 | Error | Values of the "any" type aren't allowed here. |
-| BCP177 | Error | This expression is being used in the if-condition expression, which requires a value that can be calculated at the start of the deployment.{variableDependencyChainClause}{accessiblePropertiesClause} |
-| BCP178 | Error | This expression is being used in the for-expression, which requires a value that can be calculated at the start of the deployment.{variableDependencyChainClause}{accessiblePropertiesClause} |
-| BCP179 | Warning | Unique resource or deployment name is required when looping. The loop item variable "{itemVariableName}" or the index variable "{indexVariableName}" must be referenced in at least one of the value expressions of the following properties in the loop body: {ToQuotedString(expectedVariantProperties)} |
-| BCP180 | Error | Function "{functionName}" isn't valid at this location. It can only be used when directly assigning to a module parameter with a secure decorator. |
-| BCP181 | Error | This expression is being used in an argument of the function "{functionName}", which requires a value that can be calculated at the start of the deployment.{variableDependencyChainClause}{accessiblePropertiesClause} |
-| BCP182 | Error | This expression is being used in the for-body of the variable "{variableName}", which requires values that can be calculated at the start of the deployment.{variableDependencyChainClause}{violatingPropertyNameClause}{accessiblePropertiesClause} |
-| BCP183 | Error | The value of the module "params" property must be an object literal. |
-| BCP184 | Error | File '{filePath}' exceeded maximum size of {maxSize} {unit}. |
-| BCP185 | Warning | Encoding mismatch. File was loaded with '{detectedEncoding}' encoding. |
-| BCP186 | Error | Unable to parse literal JSON value. Ensure that it's well-formed. |
-| BCP187 | Warning | The property "{property}" doesn't exist in the resource or type definition, although it might still be valid.{TypeInaccuracyClause} |
-| BCP188 | Error | The referenced ARM template has errors. See [https://aka.ms/arm-template](https://aka.ms/arm-template) for information on how to diagnose and fix the template. |
-| BCP189 | Error | (allowedSchemes.Contains(ArtifactReferenceSchemes.Local, StringComparer.Ordinal), allowedSchemes.Any(scheme => !string.Equals(scheme, ArtifactReferenceSchemes.Local, StringComparison.Ordinal))) switch { (false, false) => "Module references aren't supported in this context.", (false, true) => $"The specified module reference scheme \"{badScheme}\" is not recognized. Specify a module reference using one of the following schemes: {FormatSchemes()}", (true, false) => $"The specified module reference scheme \"{badScheme}\" isn't recognized. Specify a path to a local module file.", (true, true) => $"The specified module reference scheme \"{badScheme}\" isn't recognized. Specify a path to a local module file or a module reference using one of the following schemes: {FormatSchemes()}"} |
-| BCP190 | Error | The artifact with reference "{artifactRef}" hasn't been restored. |
-| BCP191 | Error | Unable to restore the artifact with reference "{artifactRef}". |
+| <a id='BCP090' />BCP090 | Error | This module declaration is missing a file path reference. |
+| <a id='BCP091' />BCP091 | Error | An error occurred reading file. {failureMessage} |
+| <a id='BCP092' />BCP092 | Error | String interpolation isn't supported in file paths. |
+| <a id='BCP093' />BCP093 | Error | File path "{filePath}" couldn't be resolved relative to "{parentPath}". |
+| <a id='BCP094' />BCP094 | Error | This module references itself, which isn't allowed. |
+| <a id='BCP095' />BCP095 | Error | The file is involved in a cycle ("{string.Join("\" -> \"", cycle)}"). |
+| <a id='BCP096' />BCP096 | Error | Expected a module identifier at this location. |
+| <a id='BCP097' />BCP097 | Error | Expected a module path string. This should be a relative path to another Bicep file, e.g. 'myModule.bicep' or '../parent/myModule.bicep' |
+| <a id='BCP098' />BCP098 | Error | The specified file path contains a "\" character. Use "/" instead as the directory separator character. |
+| <a id='BCP099' />BCP099 | Error | The "{LanguageConstants.ParameterAllowedPropertyName}" array must contain one or more items. |
+| <a id='BCP100' />BCP100 | Error | The function "if" isn't supported. Use the "?:\" (ternary conditional) operator instead, e.g. condition ? ValueIfTrue : ValueIfFalse |
+| <a id='BCP101' />BCP101 | Error | The "createArray" function isn't supported. Construct an array literal using []. |
+| <a id='BCP102' />BCP102 | Error | The "createObject" function isn't supported. Construct an object literal using {}. |
+| <a id='BCP103' />BCP103 | Error | The following token isn't recognized: "{token}". Strings are defined using single quotes in Bicep. |
+| <a id='BCP104' />BCP104 | Error | The referenced module has errors. |
+| <a id='BCP105' />BCP105 | Error | Unable to load file from URI "{fileUri}". |
+| <a id='BCP106' />BCP106 | Error | Expected a new line character at this location. Commas aren't used as separator delimiters. |
+| <a id='BCP107' />BCP107 | Error | The function "{name}" doesn't exist in namespace "{namespaceType.Name}". |
+| <a id='BCP108' />BCP108 | Error | The function "{name}" doesn't exist in namespace "{namespaceType.Name}". Did you mean "{suggestedName}"? |
+| <a id='BCP109' />BCP109 | Error | The type "{type}" doesn't contain function "{name}". |
+| <a id='BCP110' />BCP110 | Error | The type "{type}" doesn't contain function "{name}". Did you mean "{suggestedName}"? |
+| <a id='BCP111' />BCP111 | Error | The specified file path contains invalid control code characters. |
+| <a id='BCP112' />BCP112 | Error | The "{LanguageConstants.TargetScopeKeyword}" can't be declared multiple times in one file. |
+| <a id='BCP113' />BCP113 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeTenant}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include tenant: tenant(), named management group: managementGroup(\<name>), named subscription: subscription(\<subId>), or named resource group in a named subscription: resourceGroup(\<subId>, \<name>). |
+| <a id='BCP114' />BCP114 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeManagementGroup}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include current management group: managementGroup(), named management group: managementGroup(\<name>), named subscription: subscription(\<subId>), tenant: tenant(), or named resource group in a named subscription: resourceGroup(\<subId>, \<name>). |
+| <a id='BCP115' />BCP115 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeSubscription}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include current subscription: subscription(), named subscription: subscription(\<subId>), named resource group in same subscription: resourceGroup(\<name>), named resource group in different subscription: resourceGroup(\<subId>, \<name>), or tenant: tenant(). |
+| <a id='BCP116' />BCP116 | Warning | Unsupported scope for module deployment in a "{LanguageConstants.TargetScopeTypeResourceGroup}" target scope. Omit this property to inherit the current scope, or specify a valid scope. Permissible scopes include current resource group: resourceGroup(), named resource group in same subscription: resourceGroup(\<name>), named resource group in a different subscription: resourceGroup(\<subId>, \<name>), current subscription: subscription(), named subscription: subscription(\<subId>) or tenant: tenant(). |
+| <a id='BCP117' />BCP117 | Error | An empty indexer isn't allowed. Specify a valid expression. |
+| <a id='BCP118' />BCP118 | Error | Expected the "{" character, the "[" character, or the "if" keyword at this location. |
+| <a id='BCP119' />BCP119 | Warning | Unsupported scope for extension resource deployment. Expected a resource reference. |
+| <a id='BCP120' />BCP120 | Error | This expression is being used in an assignment to the "{propertyName}" property of the "{objectTypeName}" type, which requires a value that can be calculated at the start of the deployment. |
+| <a id='BCP121' />BCP121 | Error | Resources: {ToQuotedString(resourceNames)} are defined with this same name in a file. Rename them or split into different modules. |
+| <a id='BCP122' />BCP122 | Error | Modules: {ToQuotedString(moduleNames)} are defined with this same name and this same scope in a file. Rename them or split into different modules. |
+| <a id='BCP123' />BCP123 | Error | Expected a namespace or decorator name at this location. |
+| <a id='BCP124' />BCP124 | Error | The decorator "{decoratorName}" can only be attached to targets of type "{attachableType}", but the target has type "{targetType}". |
+| <a id='BCP125' />BCP125 | Error | Function "{functionName}" can't be used as a parameter decorator. |
+| <a id='BCP126' />BCP126 | Error | Function "{functionName}" can't be used as a variable decorator. |
+| <a id='BCP127' />BCP127 | Error | Function "{functionName}" can't be used as a resource decorator. |
+| <a id='BCP128' />BCP128 | Error | Function "{functionName}" can't be used as a module decorator. |
+| <a id='BCP129' />BCP129 | Error | Function "{functionName}" can't be used as an output decorator. |
+| <a id='BCP130' />BCP130 | Error | Decorators aren't allowed here. |
+| <a id='BCP132' />BCP132 | Error | Expected a declaration after the decorator. |
+| <a id='BCP133' />BCP133 | Error | The unicode escape sequence isn't valid. Valid unicode escape sequences range from \\u{0} to \\u{10FFFF}. |
+| <a id='BCP134' />BCP134 | Warning | Scope {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(suppliedScope))} isn't valid for this module. Permitted scopes: {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(supportedScopes))}. |
+| <a id='BCP135' />BCP135 | Warning | Scope {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(suppliedScope))} isn't valid for this resource type. Permitted scopes: {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(supportedScopes))}. |
+| <a id='BCP136' />BCP136 | Error | Expected a loop item variable identifier at this location. |
+| <a id='BCP137' />BCP137 | Error | Loop expected an expression of type "{LanguageConstants.Array}" but the provided value is of type "{actualType}". |
+| <a id='BCP138' />BCP138 | Error | For-expressions aren't supported in this context. For-expressions may be used as values of resource, module, variable, and output declarations, or values of resource and module properties. |
+| <a id='BCP139' />BCP139 | Warning | A resource's scope must match the scope of the Bicep file for it to be deployable. You must use modules to deploy resources to a different scope. |
+| <a id='BCP140' />BCP140 | Error | The multi-line string at this location isn't terminated. Terminate it with "'''. |
+| <a id='BCP141' />BCP141 | Error | The expression can't be used as a decorator as it isn't callable. |
+| <a id='BCP142' />BCP142 | Error | Property value for-expressions can't be nested. |
+| <a id='BCP143' />BCP143 | Error | For-expressions can't be used with properties whose names are also expressions. |
+| <a id='BCP144' />BCP144 | Error | Directly referencing a resource or module collection isn't currently supported here. Apply an array indexer to the expression. |
+| <a id='BCP145' />BCP145 | Error | Output "{identifier}" is declared multiple times. Remove or rename the duplicates. |
+| <a id='BCP147' />BCP147 | Error | Expected a parameter declaration after the decorator. |
+| <a id='BCP148' />BCP148 | Error | Expected a variable declaration after the decorator. |
+| <a id='BCP149' />BCP149 | Error | Expected a resource declaration after the decorator. |
+| <a id='BCP150' />BCP150 | Error | Expected a module declaration after the decorator. |
+| <a id='BCP151' />BCP151 | Error | Expected an output declaration after the decorator. |
+| <a id='BCP152' />BCP152 | Error | Function "{functionName}" can't be used as a decorator. |
+| <a id='BCP153' />BCP153 | Error | Expected a resource or module declaration after the decorator. |
+| <a id='BCP154' />BCP154 | Error | Expected a batch size of at least {limit} but the specified value was "{value}". |
+| <a id='BCP155' />BCP155 | Error | The decorator "{decoratorName}" can only be attached to resource or module collections. |
+| <a id='BCP156' />BCP156 | Error | The resource type segment "{typeSegment}" is invalid. Nested resources must specify a single type segment, and optionally can specify an API version using the format "\<type>@\<apiVersion>". |
+| <a id='BCP157' />BCP157 | Error | The resource type can't be determined due to an error in the containing resource. |
+| <a id='BCP158' />BCP158 | Error | Can't access nested resources of type "{wrongType}". A resource type is required. |
+| <a id='BCP159' />BCP159 | Error | The resource "{resourceName}" doesn't contain a nested resource named "{identifierName}". Known nested resources are: {ToQuotedString(nestedResourceNames)}. |
+| <a id='BCP160' />BCP160 | Error | A nested resource can't appear inside of a resource with a for-expression. |
+| <a id='BCP162' />BCP162 | Error | Expected a loop item variable identifier or "(" at this location. |
+| <a id='BCP164' />BCP164 | Error | A child resource's scope is computed based on the scope of its ancestor resource. This means that using the "scope" property on a child resource is unsupported. |
+| <a id='BCP165' />BCP165 | Error | A resource's computed scope must match that of the Bicep file for it to be deployable. This resource's scope is computed from the "scope" property value assigned to ancestor resource "{ancestorIdentifier}". You must use modules to deploy resources to a different scope. |
+| <a id='BCP166' />BCP166 | Error | Duplicate "{decoratorName}" decorator. |
+| <a id='BCP167' />BCP167 | Error | Expected the "{" character or the "if" keyword at this location. |
+| <a id='BCP168' />BCP168 | Error | Length must not be a negative value. |
+| <a id='BCP169' />BCP169 | Error | Expected resource name to contain {expectedSlashCount} "/" character(s). The number of name segments must match the number of segments in the resource type. |
+| <a id='BCP170' />BCP170 | Error | Expected resource name to not contain any "/" characters. Child resources with a parent resource reference (via the parent property or via nesting) must not contain a fully-qualified name. |
+| <a id='BCP171' />BCP171 | Error | Resource type "{resourceType}" isn't a valid child resource of parent "{parentResourceType}". |
+| <a id='BCP172' />BCP172 | Error | The resource type can't be validated due to an error in parent resource "{resourceName}". |
+| <a id='BCP173' />BCP173 | Error | The property "{property}" can't be used in an existing resource declaration. |
+| <a id='BCP174' />BCP174 | Warning | Type validation isn't available for resource types declared containing a "/providers/" segment. Instead use the "scope" property. |
+| <a id='BCP176' />BCP176 | Error | Values of the "any" type aren't allowed here. |
+| <a id='BCP177' />BCP177 | Error | This expression is being used in the if-condition expression, which requires a value that can be calculated at the start of the deployment.{variableDependencyChainClause}{accessiblePropertiesClause} |
+| <a id='BCP178' />BCP178 | Error | This expression is being used in the for-expression, which requires a value that can be calculated at the start of the deployment.{variableDependencyChainClause}{accessiblePropertiesClause} |
+| <a id='BCP179' />BCP179 | Warning | Unique resource or deployment name is required when looping. The loop item variable "{itemVariableName}" or the index variable "{indexVariableName}" must be referenced in at least one of the value expressions of the following properties in the loop body: {ToQuotedString(expectedVariantProperties)} |
+| <a id='BCP180' />BCP180 | Error | Function "{functionName}" isn't valid at this location. It can only be used when directly assigning to a module parameter with a secure decorator. |
+| <a id='BCP181' />BCP181 | Error | This expression is being used in an argument of the function "{functionName}", which requires a value that can be calculated at the start of the deployment.{variableDependencyChainClause}{accessiblePropertiesClause} |
+| <a id='BCP182' />BCP182 | Error | This expression is being used in the for-body of the variable "{variableName}", which requires values that can be calculated at the start of the deployment.{variableDependencyChainClause}{violatingPropertyNameClause}{accessiblePropertiesClause} |
+| <a id='BCP183' />BCP183 | Error | The value of the module "params" property must be an object literal. |
+| <a id='BCP184' />BCP184 | Error | File '{filePath}' exceeded maximum size of {maxSize} {unit}. |
+| <a id='BCP185' />BCP185 | Warning | Encoding mismatch. File was loaded with '{detectedEncoding}' encoding. |
+| <a id='BCP186' />BCP186 | Error | Unable to parse literal JSON value. Ensure that it's well-formed. |
+| <a id='BCP187' />BCP187 | Warning | The property "{property}" doesn't exist in the resource or type definition, although it might still be valid.{TypeInaccuracyClause} |
+| <a id='BCP188' />BCP188 | Error | The referenced ARM template has errors. See [https://aka.ms/arm-template](https://aka.ms/arm-template) for information on how to diagnose and fix the template. |
+| <a id='BCP189' />BCP189 | Error | (allowedSchemes.Contains(ArtifactReferenceSchemes.Local, StringComparer.Ordinal), allowedSchemes.Any(scheme => !string.Equals(scheme, ArtifactReferenceSchemes.Local, StringComparison.Ordinal))) switch { (false, false) => "Module references aren't supported in this context.", (false, true) => $"The specified module reference scheme \"{badScheme}\" isn't recognized. Specify a module reference using one of the following schemes: {FormatSchemes()}", (true, false) => $"The specified module reference scheme \"{badScheme}\" isn't recognized. Specify a path to a local module file.", (true, true) => $"The specified module reference scheme \"{badScheme}\" isn't recognized. Specify a path to a local module file or a module reference using one of the following schemes: {FormatSchemes()}"} |
+| <a id='BCP190' />BCP190 | Error | The artifact with reference "{artifactRef}" hasn't been restored. |
+| <a id='BCP191' />BCP191 | Error | Unable to restore the artifact with reference "{artifactRef}". |
| <a id='BCP192' />[BCP192](./diagnostics/bcp192.md) | Error | Unable to restore the artifact with reference \<reference>: \<error-message>. |
-| BCP193 | Error | {BuildInvalidOciArtifactReferenceClause(aliasName, badRef)} Specify a reference in the format of "{ArtifactReferenceSchemes.Oci}:\<artifact-uri>:\<tag>", or "{ArtifactReferenceSchemes.Oci}/\<module-alias>:\<module-name-or-path>:\<tag>". |
-| BCP194 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, badRef)} Specify a reference in the format of "{ArtifactReferenceSchemes.TemplateSpecs}:\<subscription-ID>/\<resource-group-name>/\<template-spec-name>:\<version>", or "{ArtifactReferenceSchemes.TemplateSpecs}/\<module-alias>:\<template-spec-name>:\<version>". |
-| BCP195 | Error | {BuildInvalidOciArtifactReferenceClause(aliasName, badRef)} The artifact path segment "{badSegment}" isn't valid. Each artifact name path segment must be a lowercase alphanumeric string optionally separated by a ".", "_", or \"-\"." |
-| BCP196 | Error | The module tag or digest is missing. |
-| BCP197 | Error | The tag "{badTag}" exceeds the maximum length of {maxLength} characters. |
-| BCP198 | Error | The tag "{badTag}" isn't valid. Valid characters are alphanumeric, ".", "_", or "-" but the tag can't begin with ".", "_", or "-". |
-| BCP199 | Error | Module path "{badRepository}" exceeds the maximum length of {maxLength} characters. |
-| BCP200 | Error | The registry "{badRegistry}" exceeds the maximum length of {maxLength} characters. |
-| BCP201 | Error | Expected a provider specification string of with a valid format at this location. Valid formats are "br:\<providerRegistryHost>/\<providerRepositoryPath>@\<providerVersion>" or "br/\<providerAlias>:\<providerName>@\<providerVersion>". |
-| BCP202 | Error | Expected a provider alias name at this location. |
-| BCP203 | Error | Using provider statements requires enabling EXPERIMENTAL feature "Extensibility". |
-| BCP204 | Error | Provider namespace "{identifier}" isn't recognized. |
-| BCP205 | Error | Provider namespace "{identifier}" doesn't support configuration. |
-| BCP206 | Error | Provider namespace "{identifier}" requires configuration, but none was provided. |
-| BCP207 | Error | Namespace "{identifier}" is declared multiple times. Remove the duplicates. |
-| BCP208 | Error | The specified namespace "{badNamespace}" isn't recognized. Specify a resource reference using one of the following namespaces: {ToQuotedString(allowedNamespaces)}. |
-| BCP209 | Error | Failed to find resource type "{resourceType}" in namespace "{@namespace}". |
-| BCP210 | Error | Resource type belonging to namespace "{childNamespace}" can't have a parent resource type belonging to different namespace "{parentNamespace}". |
-| BCP211 | Error | The module alias name "{aliasName}" is invalid. Valid characters are alphanumeric, "_", or "-". |
-| BCP212 | Error | The Template Spec module alias name "{aliasName}" doesn't exist in the {BuildBicepConfigurationClause(configFileUri)}. |
-| BCP213 | Error | The OCI artifact module alias name "{aliasName}" doesn't exist in the {BuildBicepConfigurationClause(configFileUri)}. |
-| BCP214 | Error | The Template Spec module alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is in valid. The "subscription" property can't be null or undefined. |
-| BCP215 | Error | The Template Spec module alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is in valid. The "resourceGroup" property can't be null or undefined. |
-| BCP216 | Error | The OCI artifact module alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is invalid. The "registry" property can't be null or undefined. |
-| BCP217 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The subscription ID "{subscriptionId}" isn't a GUID. |
-| BCP218 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The resource group name "{resourceGroupName}" exceeds the maximum length of {maximumLength} characters. |
-| BCP219 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The resource group name "{resourceGroupName}" is invalid. Valid characters are alphanumeric, unicode characters, ".", "_", "-", "(", or ")", but the resource group name can't end with ".". |
-| BCP220 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec name "{templateSpecName}" exceeds the maximum length of {maximumLength} characters. |
-| BCP221 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec name "{templateSpecName}" is invalid. Valid characters are alphanumeric, ".", "_", "-", "(", or ")", but the Template Spec name can't end with ".". |
-| BCP222 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec version "{templateSpecVersion}" exceeds the maximum length of {maximumLength} characters. |
-| BCP223 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec version "{templateSpecVersion}" is invalid. Valid characters are alphanumeric, ".", "_", "-", "(", or ")", but the Template Spec name can't end with ".". |
-| BCP224 | Error | {BuildInvalidOciArtifactReferenceClause(aliasName, badRef)} The digest "{badDigest}" isn't valid. The valid format is a string "sha256:" followed by exactly 64 lowercase hexadecimal digits. |
-| BCP225 | Warning | The discriminator property "{propertyName}" value can't be determined at compilation time. Type checking for this object is disabled. |
-| BCP226 | Error | Expected at least one diagnostic code at this location. Valid format is "#disable-next-line diagnosticCode1 diagnosticCode2 ...". |
-| BCP227 | Error | The type "{resourceType}" can't be used as a parameter or output type. Extensibility types are currently not supported as parameters or outputs. |
-| BCP229 | Error | The parameter "{parameterName}" can't be used as a resource scope or parent. Resources passed as parameters can't be used as a scope or parent of a resource. |
-| BCP230 | Warning | The referenced module uses resource type "{resourceTypeReference.FormatName()}" which doesn't have types available. Bicep is unable to validate resource properties prior to deployment, but this won't block the resource from being deployed. |
-| BCP231 | Error | Using resource-typed parameters and outputs requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.ResourceTypedParamsAndOutputs)}". |
-| BCP232 | Error | Unable to delete the module with reference "{moduleRef}" from cache. |
-| BCP233 | Error | Unable to delete the module with reference "{moduleRef}" from cache: {message} |
-| BCP234 | Warning | The ARM function "{armFunctionName}" failed when invoked on the value [{literalValue}]: {message} |
-| BCP235 | Error | Specified JSONPath doesn't exist in the given file or is invalid. |
-| BCP236 | Error | Expected a new line or comma character at this location. |
-| BCP237 | Error | Expected a comma character at this location. |
-| BCP238 | Error | Unexpected new line character after a comma. |
-| BCP239 | Error | Identifier "{name}" is a reserved Bicep symbol name and can't be used in this context. |
-| BCP240 | Error | The "parent" property only permits direct references to resources. Expressions aren't supported. |
-| BCP241 | Warning | The "{functionName}" function is deprecated and will be removed in a future release of Bicep. Add a comment to https://github.com/Azure/bicep/issues/2017 if you believe this will impact your workflow. |
-| BCP242 | Error | Lambda functions may only be specified directly as function arguments. |
-| BCP243 | Error | Parentheses must contain exactly one expression. |
-| BCP244 | Error | {minArgCount == maxArgCount ? $"Expected lambda expression of type "{lambdaType}" with {minArgCount} arguments but received {actualArgCount} arguments." : $"Expected lambda expression of type "{lambdaType}" with between {minArgCount} and {maxArgCount} arguments but received {actualArgCount} arguments."} |
-| BCP245 | Warning | Resource type "{resourceTypeReference.FormatName()}" can only be used with the 'existing' keyword. |
-| BCP246 | Warning | Resource type "{resourceTypeReference.FormatName()}" can only be used with the 'existing' keyword at the requested scope. Permitted scopes for deployment: {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(writableScopes))}. |
-| BCP247 | Error | Using lambda variables inside resource or module array access isn't currently supported. Found the following lambda variable(s) being accessed: {ToQuotedString(variableNames)}. |
-| BCP248 | Error | Using lambda variables inside the "{functionName}" function isn't currently supported. Found the following lambda variable(s) being accessed: {ToQuotedString(variableNames)}. |
-| BCP249 | Error | Expected loop variable block to consist of exactly 2 elements (item variable and index variable), but found {actualCount}. |
-| BCP250 | Error | Parameter "{identifier}" is assigned multiple times. Remove or rename the duplicates. |
-| BCP256 | Error | The using declaration is missing a bicep template file path reference. |
-| BCP257 | Error | Expected a Bicep file path string. This should be a relative path to another bicep file, e.g. 'myModule.bicep' or '../parent/myModule.bicep' |
-| BCP258 | Warning | The following parameters are declared in the Bicep file but are missing an assignment in the params file: {ToQuotedString(identifiers)}. |
-| BCP259 | Error | The parameter "{identifier}" is assigned in the params file without being declared in the Bicep file. |
-| BCP260 | Error | The parameter "{identifier}" expects a value of type "{expectedType}" but the provided value is of type "{actualType}". |
-| BCP261 | Error | A using declaration must be present in this parameters file. |
-| BCP262 | Error | More than one using declaration are present |
-| BCP263 | Error | The file specified in the using declaration path doesn't exist |
-| BCP264 | Error | Resource type "{resourceTypeName}" is declared in multiple imported namespaces ({ToQuotedStringWithCaseInsensitiveOrdering(namespaces)}), and must be fully-qualified. |
-| BCP265 | Error | The name "{name}" isn't a function. Did you mean "{knownFunctionNamespace}.{knownFunctionName}"? |
-| BCP266 | Error | Expected a metadata identifier at this location. |
-| BCP267 | Error | Expected a metadata declaration after the decorator. |
-| BCP268 | Error | Invalid identifier: "{name}". Metadata identifiers starting with '_' are reserved. Use a different identifier. |
-| BCP269 | Error | Function "{functionName}" can't be used as a metadata decorator. |
-| BCP271 | Error | Failed to parse the contents of the Bicep configuration file "{configurationPath}" as valid JSON: {parsingErrorMessage.TrimEnd('.')}. |
-| BCP272 | Error | Couldn't load the Bicep configuration file "{configurationPath}": {loadErrorMessage.TrimEnd('.')}. |
-| BCP273 | Error | Failed to parse the contents of the Bicep configuration file "{configurationPath}": {parsingErrorMessage.TrimEnd('.')}. |
-| BCP274 | Warning | Error scanning "{directoryPath}" for bicep configuration: {scanErrorMessage.TrimEnd('.')}. |
-| BCP275 | Error | Unable to open file at path "{directoryPath}". Found a directory instead. |
-| BCP276 | Error | A using declaration can only reference a Bicep file. |
-| BCP277 | Error | A module declaration can only reference a Bicep File, an ARM template, a registry reference or a template spec reference. |
-| BCP278 | Error | This parameters file references itself, which isn't allowed. |
-| BCP279 | Error | Expected a type at this location. Specify a valid type expression or one of the following types: {ToQuotedString(LanguageConstants.DeclarationTypes.Keys)}. |
-| BCP285 | Error | The type expression couldn't be reduced to a literal value. |
-| BCP286 | Error | This union member is invalid because it can't be assigned to the '{keystoneType}' type. |
-| BCP287 | Error | '{symbolName}' refers to a value but is being used as a type here. |
+| <a id='BCP193' />BCP193 | Error | {BuildInvalidOciArtifactReferenceClause(aliasName, badRef)} Specify a reference in the format of "{ArtifactReferenceSchemes.Oci}:\<artifact-uri>:\<tag>", or "{ArtifactReferenceSchemes.Oci}/\<module-alias>:\<module-name-or-path>:\<tag>". |
+| <a id='BCP194' />BCP194 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, badRef)} Specify a reference in the format of "{ArtifactReferenceSchemes.TemplateSpecs}:\<subscription-ID>/\<resource-group-name>/\<template-spec-name>:\<version>", or "{ArtifactReferenceSchemes.TemplateSpecs}/\<module-alias>:\<template-spec-name>:\<version>". |
+| <a id='BCP195' />BCP195 | Error | {BuildInvalidOciArtifactReferenceClause(aliasName, badRef)} The artifact path segment "{badSegment}" isn't valid. Each artifact name path segment must be a lowercase alphanumeric string optionally separated by a ".", "_", or \"-\"." |
+| <a id='BCP196' />BCP196 | Error | The module tag or digest is missing. |
+| <a id='BCP197' />BCP197 | Error | The tag "{badTag}" exceeds the maximum length of {maxLength} characters. |
+| <a id='BCP198' />BCP198 | Error | The tag "{badTag}" isn't valid. Valid characters are alphanumeric, ".", "_", or "-" but the tag can't begin with ".", "_", or "-". |
+| <a id='BCP199' />BCP199 | Error | Module path "{badRepository}" exceeds the maximum length of {maxLength} characters. |
+| <a id='BCP200' />BCP200 | Error | The registry "{badRegistry}" exceeds the maximum length of {maxLength} characters. |
+| <a id='BCP201' />BCP201 | Error | Expected a provider specification string of with a valid format at this location. Valid formats are "br:\<providerRegistryHost>/\<providerRepositoryPath>@\<providerVersion>" or "br/\<providerAlias>:\<providerName>@\<providerVersion>". |
+| <a id='BCP202' />BCP202 | Error | Expected a provider alias name at this location. |
+| <a id='BCP203' />BCP203 | Error | Using provider statements requires enabling EXPERIMENTAL feature "Extensibility". |
+| <a id='BCP204' />BCP204 | Error | Provider namespace "{identifier}" isn't recognized. |
+| <a id='BCP205' />BCP205 | Error | Provider namespace "{identifier}" doesn't support configuration. |
+| <a id='BCP206' />BCP206 | Error | Provider namespace "{identifier}" requires configuration, but none was provided. |
+| <a id='BCP207' />BCP207 | Error | Namespace "{identifier}" is declared multiple times. Remove the duplicates. |
+| <a id='BCP208' />BCP208 | Error | The specified namespace "{badNamespace}" isn't recognized. Specify a resource reference using one of the following namespaces: {ToQuotedString(allowedNamespaces)}. |
+| <a id='BCP209' />BCP209 | Error | Failed to find resource type "{resourceType}" in namespace "{@namespace}". |
+| <a id='BCP210' />BCP210 | Error | Resource type belonging to namespace "{childNamespace}" can't have a parent resource type belonging to different namespace "{parentNamespace}". |
+| <a id='BCP211' />BCP211 | Error | The module alias name "{aliasName}" is invalid. Valid characters are alphanumeric, "_", or "-". |
+| <a id='BCP212' />BCP212 | Error | The Template Spec module alias name "{aliasName}" doesn't exist in the {BuildBicepConfigurationClause(configFileUri)}. |
+| <a id='BCP213' />BCP213 | Error | The OCI artifact module alias name "{aliasName}" doesn't exist in the {BuildBicepConfigurationClause(configFileUri)}. |
+| <a id='BCP214' />BCP214 | Error | The Template Spec module alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is invalid. The "subscription" property can't be null or undefined. |
+| <a id='BCP215' />BCP215 | Error | The Template Spec module alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is invalid. The "resourceGroup" property can't be null or undefined. |
+| <a id='BCP216' />BCP216 | Error | The OCI artifact module alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is invalid. The "registry" property can't be null or undefined. |
+| <a id='BCP217' />BCP217 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The subscription ID "{subscriptionId}" isn't a GUID. |
+| <a id='BCP218' />BCP218 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The resource group name "{resourceGroupName}" exceeds the maximum length of {maximumLength} characters. |
+| <a id='BCP219' />BCP219 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The resource group name "{resourceGroupName}" is invalid. Valid characters are alphanumeric, unicode characters, ".", "_", "-", "(", or ")", but the resource group name can't end with ".". |
+| <a id='BCP220' />BCP220 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec name "{templateSpecName}" exceeds the maximum length of {maximumLength} characters. |
+| <a id='BCP221' />BCP221 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec name "{templateSpecName}" is invalid. Valid characters are alphanumeric, ".", "_", "-", "(", or ")", but the Template Spec name can't end with ".". |
+| <a id='BCP222' />BCP222 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec version "{templateSpecVersion}" exceeds the maximum length of {maximumLength} characters. |
+| <a id='BCP223' />BCP223 | Error | {BuildInvalidTemplateSpecReferenceClause(aliasName, referenceValue)} The Template Spec version "{templateSpecVersion}" is invalid. Valid characters are alphanumeric, ".", "_", "-", "(", or ")", but the Template Spec version can't end with ".". |
+| <a id='BCP224' />BCP224 | Error | {BuildInvalidOciArtifactReferenceClause(aliasName, badRef)} The digest "{badDigest}" isn't valid. The valid format is a string "sha256:" followed by exactly 64 lowercase hexadecimal digits. |
+| <a id='BCP225' />BCP225 | Warning | The discriminator property "{propertyName}" value can't be determined at compilation time. Type checking for this object is disabled. |
+| <a id='BCP226' />BCP226 | Error | Expected at least one diagnostic code at this location. Valid format is "#disable-next-line diagnosticCode1 diagnosticCode2 ...". |
+| <a id='BCP227' />BCP227 | Error | The type "{resourceType}" can't be used as a parameter or output type. Extensibility types are currently not supported as parameters or outputs. |
+| <a id='BCP229' />BCP229 | Error | The parameter "{parameterName}" can't be used as a resource scope or parent. Resources passed as parameters can't be used as a scope or parent of a resource. |
+| <a id='BCP230' />BCP230 | Warning | The referenced module uses resource type "{resourceTypeReference.FormatName()}" which doesn't have types available. Bicep is unable to validate resource properties prior to deployment, but this won't block the resource from being deployed. |
+| <a id='BCP231' />BCP231 | Error | Using resource-typed parameters and outputs requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.ResourceTypedParamsAndOutputs)}". |
+| <a id='BCP232' />BCP232 | Error | Unable to delete the module with reference "{moduleRef}" from cache. |
+| <a id='BCP233' />BCP233 | Error | Unable to delete the module with reference "{moduleRef}" from cache: {message} |
+| <a id='BCP234' />BCP234 | Warning | The ARM function "{armFunctionName}" failed when invoked on the value [{literalValue}]: {message} |
+| <a id='BCP235' />BCP235 | Error | Specified JSONPath doesn't exist in the given file or is invalid. |
+| <a id='BCP236' />BCP236 | Error | Expected a new line or comma character at this location. |
+| <a id='BCP237' />BCP237 | Error | Expected a comma character at this location. |
+| <a id='BCP238' />BCP238 | Error | Unexpected new line character after a comma. |
+| <a id='BCP239' />BCP239 | Error | Identifier "{name}" is a reserved Bicep symbol name and can't be used in this context. |
+| <a id='BCP240' />BCP240 | Error | The "parent" property only permits direct references to resources. Expressions aren't supported. |
+| <a id='BCP241' />BCP241 | Warning | The "{functionName}" function is deprecated and will be removed in a future release of Bicep. Add a comment to https://github.com/Azure/bicep/issues/2017 if you believe this will impact your workflow. |
+| <a id='BCP242' />BCP242 | Error | Lambda functions may only be specified directly as function arguments. |
+| <a id='BCP243' />BCP243 | Error | Parentheses must contain exactly one expression. |
+| <a id='BCP244' />BCP244 | Error | {minArgCount == maxArgCount ? $"Expected lambda expression of type "{lambdaType}" with {minArgCount} arguments but received {actualArgCount} arguments." : $"Expected lambda expression of type "{lambdaType}" with between {minArgCount} and {maxArgCount} arguments but received {actualArgCount} arguments."} |
+| <a id='BCP245' />BCP245 | Warning | Resource type "{resourceTypeReference.FormatName()}" can only be used with the 'existing' keyword. |
+| <a id='BCP246' />BCP246 | Warning | Resource type "{resourceTypeReference.FormatName()}" can only be used with the 'existing' keyword at the requested scope. Permitted scopes for deployment: {ToQuotedString(LanguageConstants.GetResourceScopeDescriptions(writableScopes))}. |
+| <a id='BCP247' />BCP247 | Error | Using lambda variables inside resource or module array access isn't currently supported. Found the following lambda variable(s) being accessed: {ToQuotedString(variableNames)}. |
+| <a id='BCP248' />BCP248 | Error | Using lambda variables inside the "{functionName}" function isn't currently supported. Found the following lambda variable(s) being accessed: {ToQuotedString(variableNames)}. |
+| <a id='BCP249' />BCP249 | Error | Expected loop variable block to consist of exactly 2 elements (item variable and index variable), but found {actualCount}. |
+| <a id='BCP250' />BCP250 | Error | Parameter "{identifier}" is assigned multiple times. Remove or rename the duplicates. |
+| <a id='BCP256' />BCP256 | Error | The using declaration is missing a Bicep template file path reference. |
+| <a id='BCP257' />BCP257 | Error | Expected a Bicep file path string. This should be a relative path to another Bicep file, e.g. 'myModule.bicep' or '../parent/myModule.bicep' |
+| <a id='BCP258' />BCP258 | Warning | The following parameters are declared in the Bicep file but are missing an assignment in the params file: {ToQuotedString(identifiers)}. |
+| <a id='BCP259' />BCP259 | Error | The parameter "{identifier}" is assigned in the params file without being declared in the Bicep file. |
+| <a id='BCP260' />BCP260 | Error | The parameter "{identifier}" expects a value of type "{expectedType}" but the provided value is of type "{actualType}". |
+| <a id='BCP261' />BCP261 | Error | A using declaration must be present in this parameters file. |
+| <a id='BCP262' />BCP262 | Error | More than one using declaration is present. |
+| <a id='BCP263' />BCP263 | Error | The file specified in the using declaration path doesn't exist. |
+| <a id='BCP264' />BCP264 | Error | Resource type "{resourceTypeName}" is declared in multiple imported namespaces ({ToQuotedStringWithCaseInsensitiveOrdering(namespaces)}), and must be fully-qualified. |
+| <a id='BCP265' />BCP265 | Error | The name "{name}" isn't a function. Did you mean "{knownFunctionNamespace}.{knownFunctionName}"? |
+| <a id='BCP266' />BCP266 | Error | Expected a metadata identifier at this location. |
+| <a id='BCP267' />BCP267 | Error | Expected a metadata declaration after the decorator. |
+| <a id='BCP268' />BCP268 | Error | Invalid identifier: "{name}". Metadata identifiers starting with '_' are reserved. Use a different identifier. |
+| <a id='BCP269' />BCP269 | Error | Function "{functionName}" can't be used as a metadata decorator. |
+| <a id='BCP271' />BCP271 | Error | Failed to parse the contents of the Bicep configuration file "{configurationPath}" as valid JSON: {parsingErrorMessage.TrimEnd('.')}. |
+| <a id='BCP272' />BCP272 | Error | Couldn't load the Bicep configuration file "{configurationPath}": {loadErrorMessage.TrimEnd('.')}. |
+| <a id='BCP273' />BCP273 | Error | Failed to parse the contents of the Bicep configuration file "{configurationPath}" as valid JSON: {parsingErrorMessage.TrimEnd('.')}. |
+| <a id='BCP274' />BCP274 | Warning | Error scanning "{directoryPath}" for Bicep configuration: {scanErrorMessage.TrimEnd('.')}. |
+| <a id='BCP275' />BCP275 | Error | Unable to open file at path "{directoryPath}". Found a directory instead. |
+| <a id='BCP276' />BCP276 | Error | A using declaration can only reference a Bicep file. |
+| <a id='BCP277' />BCP277 | Error | A module declaration can only reference a Bicep file, an ARM template, a registry reference, or a template spec reference. |
+| <a id='BCP278' />BCP278 | Error | This parameters file references itself, which isn't allowed. |
+| <a id='BCP279' />BCP279 | Error | Expected a type at this location. Specify a valid type expression or one of the following types: {ToQuotedString(LanguageConstants.DeclarationTypes.Keys)}. |
+| <a id='BCP285' />BCP285 | Error | The type expression couldn't be reduced to a literal value. |
+| <a id='BCP286' />BCP286 | Error | This union member is invalid because it can't be assigned to the '{keystoneType}' type. |
+| <a id='BCP287' />BCP287 | Error | '{symbolName}' refers to a value but is being used as a type here. |
| <a id='BCP288' />[BCP288](./diagnostics/bcp288.md) | Error | \<name> refers to a type but is being used as a value here. |
-| BCP289 | Error | The type definition isn't valid. |
-| BCP290 | Error | Expected a parameter or type declaration after the decorator. |
-| BCP291 | Error | Expected a parameter or output declaration after the decorator. |
-| BCP292 | Error | Expected a parameter, output, or type declaration after the decorator. |
-| BCP293 | Error | All members of a union type declaration must be literal values. |
+| <a id='BCP289' />BCP289 | Error | The type definition isn't valid. |
+| <a id='BCP290' />BCP290 | Error | Expected a parameter or type declaration after the decorator. |
+| <a id='BCP291' />BCP291 | Error | Expected a parameter or output declaration after the decorator. |
+| <a id='BCP292' />BCP292 | Error | Expected a parameter, output, or type declaration after the decorator. |
+| <a id='BCP293' />BCP293 | Error | All members of a union type declaration must be literal values. |
| <a id='BCP294' />[BCP294](./diagnostics/bcp294.md) | Error | Type unions must be reducible to a single ARM type (such as 'string', 'int', or 'bool'). |
-| BCP295 | Error | The '{decoratorName}' decorator may not be used on targets of a union or literal type. The allowed values for this parameter or type definition will be derived from the union or literal type automatically. |
-| BCP296 | Error | Property names on types must be compile-time constant values. |
-| BCP297 | Error | Function "{functionName}" can't be used as a type decorator. |
-| BCP298 | Error | This type definition includes itself as required component, which creates a constraint that can't be fulfilled. |
-| BCP299 | Error | This type definition includes itself as a required component via a cycle ("{string.Join("\" -> \"", cycle)}"). |
-| BCP300 | Error | Expected a type literal at this location. Specify a concrete value or a reference to a literal type. |
-| BCP301 | Error | The type name "{reservedName}" is reserved and may not be attached to a user-defined type. |
+| <a id='BCP295' />BCP295 | Error | The '{decoratorName}' decorator may not be used on targets of a union or literal type. The allowed values for this parameter or type definition will be derived from the union or literal type automatically. |
+| <a id='BCP296' />BCP296 | Error | Property names on types must be compile-time constant values. |
+| <a id='BCP297' />BCP297 | Error | Function "{functionName}" can't be used as a type decorator. |
+| <a id='BCP298' />BCP298 | Error | This type definition includes itself as a required component, which creates a constraint that can't be fulfilled. |
+| <a id='BCP299' />BCP299 | Error | This type definition includes itself as a required component via a cycle ("{string.Join("\" -> \"", cycle)}"). |
+| <a id='BCP300' />BCP300 | Error | Expected a type literal at this location. Specify a concrete value or a reference to a literal type. |
+| <a id='BCP301' />BCP301 | Error | The type name "{reservedName}" is reserved and may not be attached to a user-defined type. |
| <a id='BCP302' />[BCP302](./diagnostics/bcp302.md) | Error | The name \<type-name> isn't a valid type. Specify one of the following types: \<type-names>. |
-| BCP303 | Error | String interpolation is unsupported for specifying the provider. |
-| BCP304 | Error | Invalid provider specifier string. Specify a valid provider of format "\<providerName>@\<providerVersion>". |
-| BCP305 | Error | Expected the "with" keyword, "as" keyword, or a new line character at this location. |
-| BCP306 | Error | The name "{name}" refers to a namespace, not to a type. |
-| BCP307 | Error | The expression can't be evaluated, because the identifier properties of the referenced existing resource including {ToQuotedString(runtimePropertyNames.OrderBy(x => x))} can't be calculated at the start of the deployment. In this situation, {accessiblePropertyNamesClause}{accessibleFunctionNamesClause}. |
-| BCP308 | Error | The decorator "{decoratorName}" may not be used on statements whose declared type is a reference to a user-defined type. |
-| BCP309 | Error | Values of type "{flattenInputType.Name}" can't be flattened because "{incompatibleType.Name}" isn't an array type. |
-| BCP311 | Error | The provided index value of "{indexSought}" isn't valid for type "{typeName}". Indexes for this type must be between 0 and {tupleLength - 1}. |
-| BCP315 | Error | An object type may have at most one additional properties declaration. |
-| BCP316 | Error | The "{LanguageConstants.ParameterSealedPropertyName}" decorator may not be used on object types with an explicit additional properties type declaration. |
-| BCP317 | Error | Expected an identifier, a string, or an asterisk at this location. |
-| BCP318 | Warning | The value of type "{possiblyNullType}" may be null at the start of the deployment, which would cause this access expression (and the overall deployment with it) to fail. If you don't know whether the value will be null and the template would handle a null value for the overall expression, use a `.?` (safe dereference) operator to short-circuit the access expression if the base expression's value is null: {accessExpression.AsSafeAccess().ToString()}. If you know the value won't be null, use a non-null assertion operator to inform the compiler that the value won't be null: {SyntaxFactory.AsNonNullable(expression).ToString()}. |
-| BCP319 | Error | The type at "{errorSource}" couldn't be resolved by the ARM JSON template engine. Original error message: "{message}" |
-| BCP320 | Error | The properties of module output resources can't be accessed directly. To use the properties of this resource, pass it as a resource-typed parameter to another module and access the parameter's properties therein. |
-| BCP321 | Warning | Expected a value of type "{expectedType}" but the provided value is of type "{actualType}". If you know the value won't be null, use a non-null assertion operator to inform the compiler that the value won't be null: {SyntaxFactory.AsNonNullable(expression).ToString()}. |
-| BCP322 | Error | The `.?` (safe dereference) operator may not be used on instance function invocations. |
-| BCP323 | Error | The `[?]` (safe dereference) operator may not be used on resource or module collections. |
-| BCP325 | Error | Expected a type identifier at this location. |
-| BCP326 | Error | Nullable-typed parameters may not be assigned default values. They have an implicit default of 'null' that can't be overridden. |
+| <a id='BCP303' />BCP303 | Error | String interpolation is unsupported for specifying the provider. |
+| <a id='BCP304' />BCP304 | Error | Invalid provider specifier string. Specify a valid provider of format "\<providerName>@\<providerVersion>". |
+| <a id='BCP305' />BCP305 | Error | Expected the "with" keyword, "as" keyword, or a new line character at this location. |
+| <a id='BCP306' />BCP306 | Error | The name "{name}" refers to a namespace, not to a type. |
+| <a id='BCP307' />BCP307 | Error | The expression can't be evaluated, because the identifier properties of the referenced existing resource including {ToQuotedString(runtimePropertyNames.OrderBy(x => x))} can't be calculated at the start of the deployment. In this situation, {accessiblePropertyNamesClause}{accessibleFunctionNamesClause}. |
+| <a id='BCP308' />BCP308 | Error | The decorator "{decoratorName}" may not be used on statements whose declared type is a reference to a user-defined type. |
+| <a id='BCP309' />BCP309 | Error | Values of type "{flattenInputType.Name}" can't be flattened because "{incompatibleType.Name}" isn't an array type. |
+| <a id='BCP311' />BCP311 | Error | The provided index value of "{indexSought}" isn't valid for type "{typeName}". Indexes for this type must be between 0 and {tupleLength - 1}. |
+| <a id='BCP315' />BCP315 | Error | An object type may have at most one additional properties declaration. |
+| <a id='BCP316' />BCP316 | Error | The "{LanguageConstants.ParameterSealedPropertyName}" decorator may not be used on object types with an explicit additional properties type declaration. |
+| <a id='BCP317' />BCP317 | Error | Expected an identifier, a string, or an asterisk at this location. |
+| <a id='BCP318' />BCP318 | Warning | The value of type "{possiblyNullType}" may be null at the start of the deployment, which would cause this access expression (and the overall deployment with it) to fail. If you don't know whether the value will be null and the template would handle a null value for the overall expression, use a `.?` (safe dereference) operator to short-circuit the access expression if the base expression's value is null: {accessExpression.AsSafeAccess().ToString()}. If you know the value won't be null, use a non-null assertion operator to inform the compiler that the value won't be null: {SyntaxFactory.AsNonNullable(expression).ToString()}. |
+| <a id='BCP319' />BCP319 | Error | The type at "{errorSource}" couldn't be resolved by the ARM JSON template engine. Original error message: "{message}" |
+| <a id='BCP320' />BCP320 | Error | The properties of module output resources can't be accessed directly. To use the properties of this resource, pass it as a resource-typed parameter to another module and access the parameter's properties therein. |
+| <a id='BCP321' />BCP321 | Warning | Expected a value of type "{expectedType}" but the provided value is of type "{actualType}". If you know the value won't be null, use a non-null assertion operator to inform the compiler that the value won't be null: {SyntaxFactory.AsNonNullable(expression).ToString()}. |
+| <a id='BCP322' />BCP322 | Error | The `.?` (safe dereference) operator may not be used on instance function invocations. |
+| <a id='BCP323' />BCP323 | Error | The `[?]` (safe dereference) operator may not be used on resource or module collections. |
+| <a id='BCP325' />BCP325 | Error | Expected a type identifier at this location. |
+| <a id='BCP326' />BCP326 | Error | Nullable-typed parameters may not be assigned default values. They have an implicit default of 'null' that can't be overridden. |
| <a id='BCP327' />[BCP327](./diagnostics/bcp327.md) | Error/Warning | The provided value (which will always be greater than or equal to \<value>) is too large to assign to a target for which the maximum allowable value is \<max-value>. | | <a id='BCP328' />[BCP328](./diagnostics/bcp328.md) | Error/Warning | The provided value (which will always be less than or equal to \<value>) is too small to assign to a target for which the minimum allowable value is \<max-value>. |
-| BCP329 | Warning | The provided value can be as small as {sourceMin} and may be too small to assign to a target with a configured minimum of {targetMin}. |
-| BCP330 | Warning | The provided value can be as large as {sourceMax} and may be too large to assign to a target with a configured maximum of {targetMax}. |
-| BCP331 | Error | A type's "{minDecoratorName}" must be less than or equal to its "{maxDecoratorName}", but a minimum of {minValue} and a maximum of {maxValue} were specified. |
+| <a id='BCP329' />BCP329 | Warning | The provided value can be as small as {sourceMin} and may be too small to assign to a target with a configured minimum of {targetMin}. |
+| <a id='BCP330' />BCP330 | Warning | The provided value can be as large as {sourceMax} and may be too large to assign to a target with a configured maximum of {targetMax}. |
+| <a id='BCP331' />BCP331 | Error | A type's "{minDecoratorName}" must be less than or equal to its "{maxDecoratorName}", but a minimum of {minValue} and a maximum of {maxValue} were specified. |
| <a id='BCP332' />[BCP332](./diagnostics/bcp332.md) | Error/Warning | The provided value (whose length will always be greater than or equal to \<string-length>) is too long to assign to a target for which the maximum allowable length is \<max-length>. | | <a id='BCP333' />[BCP333](./diagnostics/bcp333.md) | Error/Warning | The provided value (whose length will always be less than or equal to \<string-length>) is too short to assign to a target for which the minimum allowable length is \<min-length>. |
-| BCP334 | Warning | The provided value can have a length as small as {sourceMinLength} and may be too short to assign to a target with a configured minimum length of {targetMinLength}. |
-| BCP335 | Warning | The provided value can have a length as large as {sourceMaxLength} and may be too long to assign to a target with a configured maximum length of {targetMaxLength}. |
-| BCP337 | Error | This declaration type isn't valid for a Bicep Parameters file. Specify a "{LanguageConstants.UsingKeyword}", "{LanguageConstants.ParameterKeyword}" or "{LanguageConstants.VariableKeyword}" declaration. |
+| <a id='BCP334' />BCP334 | Warning | The provided value can have a length as small as {sourceMinLength} and may be too short to assign to a target with a configured minimum length of {targetMinLength}. |
+| <a id='BCP335' />BCP335 | Warning | The provided value can have a length as large as {sourceMaxLength} and may be too long to assign to a target with a configured maximum length of {targetMaxLength}. |
+| <a id='BCP337' />BCP337 | Error | This declaration type isn't valid for a Bicep Parameters file. Specify a "{LanguageConstants.UsingKeyword}", "{LanguageConstants.ParameterKeyword}" or "{LanguageConstants.VariableKeyword}" declaration. |
| <a id='BCP338' />[BCP338](./diagnostics/bcp338.md) | Error | Failed to evaluate parameter \<parameter-name>: \<error-message>` |
-| BCP339 | Error | The provided array index value of "{indexSought}" is not valid. Array index should be greater than or equal to 0. |
-| BCP340 | Error | Unable to parse literal YAML value. Please ensure that it is well-formed. |
-| BCP341 | Error | This expression is being used inside a function declaration, which requires a value that can be calculated at the start of the deployment. {variableDependencyChainClause}{accessiblePropertiesClause} |
-| BCP342 | Error | User-defined types aren't supported in user-defined function parameters or outputs. |
-| BCP344 | Error | Expected an assert identifier at this location. |
-| BCP345 | Error | A test declaration can only reference a Bicep File |
-| BCP346 | Error | Expected a test identifier at this location. |
-| BCP347 | Error | Expected a test path string at this location. |
-| BCP348 | Error | Using a test declaration statement requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.TestFramework)}". |
-| BCP349 | Error | Using an assert declaration requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.Assertions)}". |
-| BCP350 | Error | Value of type "{valueType}" can't be assigned to an assert. Asserts can take values of type 'bool' only. |
-| BCP351 | Error | Function "{functionName}" isn't valid at this location. It can only be used when directly assigning to a parameter. |
-| BCP352 | Error | Failed to evaluate variable "{name}": {message} |
-| BCP353 | Error | The {itemTypePluralName} {ToQuotedString(itemNames)} differ only in casing. The ARM deployments engine isn't case sensitive and won't be able to distinguish between them. |
-| BCP354 | Error | Expected left brace ('{') or asterisk ('*') character at this location. |
-| BCP355 | Error | Expected the name of an exported symbol at this location. |
-| BCP356 | Error | Expected a valid namespace identifier at this location. |
-| BCP358 | Error | This declaration is missing a template file path reference. |
-| BCP360 | Error | The '{symbolName}' symbol wasn't found in (or wasn't exported by) the imported template. |
-| BCP361 | Error | The "@export()" decorator must target a top-level statement. |
-| BCP362 | Error | This symbol is imported multiple times under the names {string.Join(", ", importedAs.Select(identifier => $"'{identifier}'"))}. |
-| BCP363 | Error | The "{LanguageConstants.TypeDiscriminatorDecoratorName}" decorator can only be applied to object-only union types with unique member types. |
-| BCP364 | Error | The property "{discriminatorPropertyName}" must be a required string literal on all union member types. |
-| BCP365 | Error | The value "{discriminatorPropertyValue}" for discriminator property "{discriminatorPropertyName}" is duplicated across multiple union member types. The value must be unique across all union member types. |
-| BCP366 | Error | The discriminator property name must be "{acceptablePropertyName}" on all union member types. |
-| BCP367 | Error | The "{featureName}" feature is temporarily disabled. |
-| BCP368 | Error | The value of the "{targetName}" parameter can't be known until the template deployment has started because it uses a reference to a secret value in Azure Key Vault. Expressions that refer to the "{targetName}" parameter may be used in {LanguageConstants.LanguageFileExtension} files but not in {LanguageConstants.ParamsFileExtension} files. |
-| BCP369 | Error | The value of the "{targetName}" parameter can't be known until the template deployment has started because it uses the default value defined in the template. Expressions that refer to the "{targetName}" parameter may be used in {LanguageConstants.LanguageFileExtension} files but not in {LanguageConstants.ParamsFileExtension} files. |
-| BCP372 | Error | The "@export()" decorator may not be applied to variables that refer to parameters, modules, or resource, either directly or indirectly. The target of this decorator contains direct or transitive references to the following unexportable symbols: {ToQuotedString(nonExportableSymbols)}. |
-| BCP373 | Error | Unable to import the symbol named "{name}": {message} |
-| BCP374 | Error | The imported model can't be loaded with a wildcard because it contains the following duplicated exports: {ToQuotedString(ambiguousExportNames)}. |
-| BCP375 | Error | An import list item that identifies its target with a quoted string must include an 'as \<alias>' clause. |
-| BCP376 | Error | The "{name}" symbol can't be imported because imports of kind {exportMetadataKind} aren't supported in files of kind {sourceFileKind}. |
-| BCP377 | Error | The provider alias name "{aliasName}" is invalid. Valid characters are alphanumeric, "_", or "-". |
-| BCP378 | Error | The OCI artifact provider alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is invalid. The "registry" property can't be null or undefined. |
-| BCP379 | Error | The OCI artifact provider alias name "{aliasName}" doesn't exist in the {BuildBicepConfigurationClause(configFileUri)}. |
-| BCP380 | Error | Artifacts of type: "{artifactType}" aren't supported. |
-| BCP381 | Warning | Declaring provider namespaces with the "import" keyword has been deprecated. Use the "provider" keyword instead. |
-| BCP383 | Error | The "{typeName}" type isn't parameterizable. |
-| BCP384 | Error | The "{typeName}" type requires {requiredArgumentCount} argument(s). |
-| BCP385 | Error | Using resource-derived types requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.ResourceDerivedTypes)}". |
-| BCP386 | Error | The decorator "{decoratorName}" may not be used on statements whose declared type is a reference to a resource-derived type. |
-| BCP387 | Error | Indexing into a type requires an integer greater than or equal to 0. |
-| BCP388 | Error | Can't access elements of type "{wrongType}" by index. A tuple type is required. |
-| BCP389 | Error | The type "{wrongType}" doesn't declare an additional properties type. |
-| BCP390 | Error | The array item type access operator ('[*]') can only be used with typed arrays. |
-| BCP391 | Error | Type member access is only supported on a reference to a named type. |
-| BCP392 | Warning | "The supplied resource type identifier "{resourceTypeIdentifier}" wasn't recognized as a valid resource type name." |
-| BCP393 | Warning | "The type pointer segment "{unrecognizedSegment}" wasn't recognized. Supported pointer segments are: "properties", "items", "prefixItems", and "additionalProperties"." |
-| BCP394 | Error | Resource-derived type expressions must deference a property within the resource body. Using the entire resource body type isn't permitted. |
-| BCP395 | Error | Declaring provider namespaces using the '\<providerName>@\<version>' expression has been deprecated. Use an identifier instead. |
-| BCP396 | Error | The referenced provider types artifact has been published with malformed content. |
-| BCP397 | Error | "Provider {name} is incorrectly configured in the {BuildBicepConfigurationClause(configFileUri)}. It's referenced in the "{RootConfiguration.ImplicitProvidersConfigurationKey}" section, but is missing corresponding configuration in the "{RootConfiguration.ProvidersConfigurationKey}" section." |
-| BCP398 | Error | "Provider {name} is incorrectly configured in the {BuildBicepConfigurationClause(configFileUri)}. It's configured as built-in in the "{RootConfiguration.ProvidersConfigurationKey}" section, but no built-in provider exists." |
-| BCP399 | Error | Fetching az types from the registry requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.DynamicTypeLoading)}". |
-| BCP400 | Error | Fetching types from the registry requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.ProviderRegistry)}". |
+| <a id='BCP339' />BCP339 | Error | The provided array index value of "{indexSought}" isn't valid. Array index should be greater than or equal to 0. |
+| <a id='BCP340' />BCP340 | Error | Unable to parse literal YAML value. Ensure that it's well-formed. |
+| <a id='BCP341' />BCP341 | Error | This expression is being used inside a function declaration, which requires a value that can be calculated at the start of the deployment. {variableDependencyChainClause}{accessiblePropertiesClause} |
+| <a id='BCP342' />BCP342 | Error | User-defined types aren't supported in user-defined function parameters or outputs. |
+| <a id='BCP344' />BCP344 | Error | Expected an assert identifier at this location. |
+| <a id='BCP345' />BCP345 | Error | A test declaration can only reference a Bicep File |
+| <a id='BCP346' />BCP346 | Error | Expected a test identifier at this location. |
+| <a id='BCP347' />BCP347 | Error | Expected a test path string at this location. |
+| <a id='BCP348' />BCP348 | Error | Using a test declaration statement requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.TestFramework)}". |
+| <a id='BCP349' />BCP349 | Error | Using an assert declaration requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.Assertions)}". |
+| <a id='BCP350' />BCP350 | Error | Value of type "{valueType}" can't be assigned to an assert. Asserts can take values of type 'bool' only. |
+| <a id='BCP351' />BCP351 | Error | Function "{functionName}" isn't valid at this location. It can only be used when directly assigning to a parameter. |
+| <a id='BCP352' />BCP352 | Error | Failed to evaluate variable "{name}": {message} |
+| <a id='BCP353' />BCP353 | Error | The {itemTypePluralName} {ToQuotedString(itemNames)} differ only in casing. The ARM deployments engine isn't case sensitive and won't be able to distinguish between them. |
+| <a id='BCP354' />BCP354 | Error | Expected left brace ('{') or asterisk ('*') character at this location. |
+| <a id='BCP355' />BCP355 | Error | Expected the name of an exported symbol at this location. |
+| <a id='BCP356' />BCP356 | Error | Expected a valid namespace identifier at this location. |
+| <a id='BCP358' />BCP358 | Error | This declaration is missing a template file path reference. |
+| <a id='BCP360' />BCP360 | Error | The '{symbolName}' symbol wasn't found in (or wasn't exported by) the imported template. |
+| <a id='BCP361' />BCP361 | Error | The "@export()" decorator must target a top-level statement. |
+| <a id='BCP362' />BCP362 | Error | This symbol is imported multiple times under the names {string.Join(", ", importedAs.Select(identifier => $"'{identifier}'"))}. |
+| <a id='BCP363' />BCP363 | Error | The "{LanguageConstants.TypeDiscriminatorDecoratorName}" decorator can only be applied to object-only union types with unique member types. |
+| <a id='BCP364' />BCP364 | Error | The property "{discriminatorPropertyName}" must be a required string literal on all union member types. |
+| <a id='BCP365' />BCP365 | Error | The value "{discriminatorPropertyValue}" for discriminator property "{discriminatorPropertyName}" is duplicated across multiple union member types. The value must be unique across all union member types. |
+| <a id='BCP366' />BCP366 | Error | The discriminator property name must be "{acceptablePropertyName}" on all union member types. |
+| <a id='BCP367' />BCP367 | Error | The "{featureName}" feature is temporarily disabled. |
+| <a id='BCP368' />BCP368 | Error | The value of the "{targetName}" parameter can't be known until the template deployment has started because it uses a reference to a secret value in Azure Key Vault. Expressions that refer to the "{targetName}" parameter may be used in {LanguageConstants.LanguageFileExtension} files but not in {LanguageConstants.ParamsFileExtension} files. |
+| <a id='BCP369' />BCP369 | Error | The value of the "{targetName}" parameter can't be known until the template deployment has started because it uses the default value defined in the template. Expressions that refer to the "{targetName}" parameter may be used in {LanguageConstants.LanguageFileExtension} files but not in {LanguageConstants.ParamsFileExtension} files. |
+| <a id='BCP372' />BCP372 | Error | The "@export()" decorator may not be applied to variables that refer to parameters, modules, or resource, either directly or indirectly. The target of this decorator contains direct or transitive references to the following unexportable symbols: {ToQuotedString(nonExportableSymbols)}. |
+| <a id='BCP373' />BCP373 | Error | Unable to import the symbol named "{name}": {message} |
+| <a id='BCP374' />BCP374 | Error | The imported model can't be loaded with a wildcard because it contains the following duplicated exports: {ToQuotedString(ambiguousExportNames)}. |
+| <a id='BCP375' />BCP375 | Error | An import list item that identifies its target with a quoted string must include an 'as \<alias>' clause. |
+| <a id='BCP376' />BCP376 | Error | The "{name}" symbol can't be imported because imports of kind {exportMetadataKind} aren't supported in files of kind {sourceFileKind}. |
+| <a id='BCP377' />BCP377 | Error | The provider alias name "{aliasName}" is invalid. Valid characters are alphanumeric, "_", or "-". |
+| <a id='BCP378' />BCP378 | Error | The OCI artifact provider alias "{aliasName}" in the {BuildBicepConfigurationClause(configFileUri)} is invalid. The "registry" property can't be null or undefined. |
+| <a id='BCP379' />BCP379 | Error | The OCI artifact provider alias name "{aliasName}" doesn't exist in the {BuildBicepConfigurationClause(configFileUri)}. |
+| <a id='BCP380' />BCP380 | Error | Artifacts of type: "{artifactType}" aren't supported. |
+| <a id='BCP381' />BCP381 | Warning | Declaring provider namespaces with the "import" keyword has been deprecated. Use the "provider" keyword instead. |
+| <a id='BCP383' />BCP383 | Error | The "{typeName}" type isn't parameterizable. |
+| <a id='BCP384' />BCP384 | Error | The "{typeName}" type requires {requiredArgumentCount} argument(s). |
+| <a id='BCP385' />BCP385 | Error | Using resource-derived types requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.ResourceDerivedTypes)}". |
+| <a id='BCP386' />BCP386 | Error | The decorator "{decoratorName}" may not be used on statements whose declared type is a reference to a resource-derived type. |
+| <a id='BCP387' />BCP387 | Error | Indexing into a type requires an integer greater than or equal to 0. |
+| <a id='BCP388' />BCP388 | Error | Can't access elements of type "{wrongType}" by index. A tuple type is required. |
+| <a id='BCP389' />BCP389 | Error | The type "{wrongType}" doesn't declare an additional properties type. |
+| <a id='BCP390' />BCP390 | Error | The array item type access operator ('[*]') can only be used with typed arrays. |
+| <a id='BCP391' />BCP391 | Error | Type member access is only supported on a reference to a named type. |
+| <a id='BCP392' />BCP392 | Warning | The supplied resource type identifier "{resourceTypeIdentifier}" wasn't recognized as a valid resource type name. |
+| <a id='BCP393' />BCP393 | Warning | The type pointer segment "{unrecognizedSegment}" wasn't recognized. Supported pointer segments are: "properties", "items", "prefixItems", and "additionalProperties". |
+| <a id='BCP394' />BCP394 | Error | Resource-derived type expressions must dereference a property within the resource body. Using the entire resource body type isn't permitted. |
+| <a id='BCP395' />BCP395 | Error | Declaring provider namespaces using the '\<providerName>@\<version>' expression has been deprecated. Use an identifier instead. |
+| <a id='BCP396' />BCP396 | Error | The referenced provider types artifact has been published with malformed content. |
+| <a id='BCP397' />BCP397 | Error | Provider {name} is incorrectly configured in the {BuildBicepConfigurationClause(configFileUri)}. It's referenced in the "{RootConfiguration.ImplicitProvidersConfigurationKey}" section, but is missing corresponding configuration in the "{RootConfiguration.ProvidersConfigurationKey}" section. |
+| <a id='BCP398' />BCP398 | Error | Provider {name} is incorrectly configured in the {BuildBicepConfigurationClause(configFileUri)}. It's configured as built-in in the "{RootConfiguration.ProvidersConfigurationKey}" section, but no built-in provider exists. |
+| <a id='BCP399' />BCP399 | Error | Fetching az types from the registry requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.DynamicTypeLoading)}". |
+| <a id='BCP400' />BCP400 | Error | Fetching types from the registry requires enabling EXPERIMENTAL feature "{nameof(ExperimentalFeaturesEnabled.ProviderRegistry)}". |
| <a id='BCP401' />[BCP401](./diagnostics/bcp401.md) | Error | The spread operator "..." isn't permitted in this location. |
-| BCP402 | Error | The spread operator \"{spread.Ellipsis.Text}\" can only be used in this context for an expression assignable to type \"{requiredType}\". |
-| BCP403 | Error/Warning | The enclosing array expects elements of type \"{expectedType}\", but the array being spread contains elements of incompatible type \"{actualType}\". |
-| BCP404 | Error | The \"{LanguageConstants.ExtendsKeyword}\" declaration is missing a bicepparam file path reference"). |
-| BCP405 | Error | More than one \"{LanguageConstants.ExtendsKeyword}\" declaration are present") |
-| BCP406 | Error | The \"{LanguageConstants.ExtendsKeyword}\" keyword isn't supported" |
+| <a id='BCP402' />BCP402 | Error | The spread operator "{spread.Ellipsis.Text}" can only be used in this context for an expression assignable to type "{requiredType}". |
+| <a id='BCP403' />BCP403 | Error/Warning | The enclosing array expects elements of type "{expectedType}", but the array being spread contains elements of incompatible type "{actualType}". |
+| <a id='BCP404' />BCP404 | Error | The "{LanguageConstants.ExtendsKeyword}" declaration is missing a bicepparam file path reference. |
+| <a id='BCP405' />BCP405 | Error | More than one "{LanguageConstants.ExtendsKeyword}" declaration are present. |
+| <a id='BCP406' />BCP406 | Error | The "{LanguageConstants.ExtendsKeyword}" keyword isn't supported. |
## Next steps
azure-resource-manager User Defined Data Types https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/user-defined-data-types.md
Title: User-defined types in Bicep
description: Describes how to define and use user-defined data types in Bicep. Previously updated : 06/14/2024 Last updated : 08/16/2024 # User-defined data types in Bicep
-Learn how to use user-defined data types in Bicep. For system-defined data types, see [Data types](./data-types.md).
+Learn how to create user-defined data types in Bicep. For system-defined data types, see [Data types](./data-types.md).
[Bicep CLI version 0.12.X or higher](./install.md) is required to use this feature. ## Syntax
-You can use the `type` statement to define user-defined data types. In addition, you can also use type expressions in some places to define custom types.
+You can use the `type` statement to create user-defined data types. In addition, you can also use type expressions in some places to define custom types.
```bicep type <user-defined-data-type-name> = <type-expression> ```
-The [`@allowed`](./parameters.md#decorators) decorator is only permitted on [`param` statements](./parameters.md). To declare that a property with a set of predefined values in a `type`, use [union type syntax](./data-types.md#union-types).
+The [`@allowed`](./parameters.md#decorators) decorator is only permitted on [`param` statements](./parameters.md). To declare a type with a set of predefined values in a `type`, use [union type syntax](./data-types.md#union-types).
The valid type expressions include:
The valid type expressions include:
type myBoolLiteralType = true ``` -- Array types can be declared by suffixing `[]` to any valid type expression:
+- You can declare array types by appending `[]` to any valid type expression:
```bicep // A string type array
The valid type expressions include:
} ```
- Each property in an object consists of key and value. The key and value are separated by a colon `:`. The key may be any string (values that wouldn't be a valid identifier must be enclosed in quotes), and the value may be any type syntax expression.
+ Each property in an object consists of a key and a value, separated by a colon `:`. The key can be any string, with nonidentifier values enclosed in quotes, and the value can be any type of expression.
Properties are required unless they have an optionality marker `?` after the property value. For example, the `sku` property in the following example is optional:
The valid type expressions include:
} ```
- Decorators may be used on properties. `*` may be used to make all values require a constraint. Additional properties may still be defined when using `*`. This example creates an object that requires a key of type int named `id`, and that all other entries in the object must be a string value at least 10 characters long.
+ Decorators can be used on properties. `*` can be used to make all values require a constraint. Additional properties can still be defined when using `*`. This example creates an object that requires a key of type `int` named _id_, and that all other entries in the object must be a string value at least 10 characters long.
```bicep type obj = {
The valid type expressions include:
**Recursion**
- Object types may use direct or indirect recursion so long as at least leg of the path to the recursion point is optional. For example, the `myObjectType` definition in the following example is valid because the directly recursive `recursiveProp` property is optional:
+ Object types can use direct or indirect recursion so long as at least leg of the path to the recursion point is optional. For example, the `myObjectType` definition in the following example is valid because the directly recursive `recursiveProp` property is optional:
```bicep type myObjectType = {
The valid type expressions include:
type negatedBoolReference = !negatedBoolLiteral ``` -- Unions may include any number of literal-typed expressions. Union types are translated into the [allowed-value constraint](./parameters.md#decorators) in Bicep, so only literals are permitted as members.
+- Unions can include any number of literal-typed expressions. Union types are translated into the [allowed-value constraint](./parameters.md#decorators) in Bicep, so only literals are permitted as members.
```bicep type oneOfSeveralObjects = {foo: 'bar'} | {fizz: 'buzz'} | {snap: 'crackle'}
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
} ```
+## Elevate error level
+
+By default, declaring an object type in Bicep allows it to accept additional properties of any type. For example, the following Bicep is valid but raises a warning of [BCP089] - `The property "otionalProperty" is not allowed on objects of type "{ property: string, optionalProperty: null | string }". Did you mean "optionalProperty"?`:
+
+```bicep
+type anObject = {
+ property: string
+ optionalProperty: string?
+}
+
+param aParameter anObject = {
+ property: 'value'
+ otionalProperty: 'value'
+}
+```
+
+The warning informs you that the _anObject_ type doesn't include a property named _otionalProperty_. While no errors occur during deployment, the Bicep compiler assumes _otionalProperty_ is a typo, that you intended to use _optionalProperty_ but misspelled it, and alert you to the inconsistency.
+
+To escalate these warnings to errors, apply the `@sealed()` decorator to the object type:
+
+```bicep
+@sealed()
+type anObject = {
+ property: string
+ optionalProperty?: string
+}
+```
+
+You get the same results by applying the `@sealed()` decorator to the `param` declaration:
+
+```bicep
+type anObject = {
+ property: string
+ optionalProperty: string?
+}
+
+@sealed()
+param aParameter anObject = {
+ property: 'value'
+ otionalProperty: 'value'
+}
+```
+
+The ARM deployment engine also checks sealed types for additional properties. Providing any extra properties for sealed parameters results in a validation error, causing the deployment to fail. For example:
+
+```bicep
+@sealed()
+type anObject = {
+ property: string
+}
+
+param aParameter anObject = {
+ property: 'value'
+ optionalProperty: 'value'
+}
+```
+ ## Tagged union data type To declare a custom tagged union data type within a Bicep file, you can place a `discriminator` decorator above a user-defined type declaration. [Bicep CLI version 0.21.X or higher](./install.md) is required to use this decorator. The following example shows how to declare a tagged union data type:
azure-resource-manager Tag Support https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/management/tag-support.md
To get the same data as a file of comma-separated values, download [tag-support.
> | Resource type | Supports tags | Tag in cost report | > | - | -- | -- | > | cassandraClusters | Yes | Yes |
+> | mongoClusters | Yes | No |
> | databaseAccountNames | No | No | > | databaseAccounts | Yes | Yes | > | databaseAccounts / encryptionScopes | No | No |
azure-vmware Tutorial Network Checklist https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-vmware/tutorial-network-checklist.md
The private cloud logical networking includes a pre-provisioned NSX configuratio
The Azure VMware Solution private cloud connects to your Azure virtual network using an Azure ExpressRoute connection. This high bandwidth, low latency connection allows you to access services running in your Azure subscription from your private cloud environment. The routing uses Border Gateway Protocol (BGP), is automatically provisioned, and enabled by default for each private cloud deployment.
-Azure VMware Solution private clouds require a minimum `/22` CIDR network address block for subnets. This network complements your on-premises networks, so the address block shouldn't overlap with address blocks used in other virtual networks in your subscription and on-premises networks. Management, provisioning, and vMotion networks are provisioned automatically within this address block.
+Azure VMware Solution private clouds require a minimum `/22` CIDR network address block for subnets. This network complements your on-premises networks, so the address block shouldn't overlap with address blocks used in other virtual networks in your subscription and on-premises networks. Management, vMotion, and Replication networks are provisioned automatically within this address block.
> [!NOTE] > Permitted ranges for your address block are the RFC 1918 private address spaces (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), except for 172.17.0.0/16.
+> Replication network is not applicable to AV64 nodes and is slated for general deprecation at a future date.
> [!IMPORTANT] > Avoid using the following IP schemas reserved for NSX usage:
confidential-computing Virtual Machine Options https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/confidential-computing/virtual-machine-options.md
Azure Resource Manager is the deployment and management service for Azure. You c
- Secure and organize your resources after deployment with the management features, like access control, locks, and tags. - Create, update, and delete resources in your Azure subscription using the management layer.-- Use [Azure Resource Manager templates (ARM templates)](../azure-resource-manager/templates/overview.md) to deploy confidential VMs on AMD processors. There is an available [ARM template for confidential VMs](https://aka.ms/CVMTemplate).
+- Use [Azure Resource Manager templates (ARM templates)](../azure-resource-manager/templates/overview.md) to deploy confidential VMs on AMD processors.
Make sure to specify the following properties for your VM in the parameters section (`parameters`):
connectors Built In https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/connectors/built-in.md
For a smaller number of services, systems, and protocols, Azure Logic Apps provi
For example, a Standard workflow can use both managed connectors and built-in connectors for Azure Blob Storage, Azure Cosmos DB, Azure Event Hubs, Azure Service Bus, FTP, IBM DB2, IBM MQ, SFTP, and SQL Server. A Consumption workflow doesn't have the built-in versions. A Consumption workflow can use built-in connectors for Azure API Management, and Azure App Service, while a Standard workflow doesn't have these built-in connectors.
-Also, in Standard workflows, some [built-in connectors with specific attributes are informally known as *service providers*](../logic-apps/custom-connector-overview.md#service-provider-interface-implementation). Some built-in connectors support only a single way to authenticate a connection to the underlying service. Other built-in connectors can offer a choice, such as using a connection string, Microsoft Entra ID, or a managed identity. All built-in connectors run in the same process as the Azure Logic Apps runtime. For more information, review [Single-tenant versus multitenant and integration service environment (ISE)](../logic-apps/single-tenant-overview-compare.md).
+Also, in Standard workflows, some [built-in connectors with specific attributes are informally known as *service providers*](../logic-apps/custom-connector-overview.md#service-provider-interface-implementation). Some built-in connectors support only a single way to authenticate a connection to the underlying service. Other built-in connectors can offer a choice, such as using a connection string, Microsoft Entra ID, or a managed identity. All built-in connectors run in the same process as the Azure Logic Apps runtime. For more information, review [Single-tenant versus multitenant in Azure Logic Apps](../logic-apps/single-tenant-overview-compare.md).
This article provides a general overview about built-in connectors in Consumption workflows versus Standard workflows.
connectors Introduction https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/connectors/introduction.md
This overview provides a high-level introduction to connectors and how they gene
## Built-in connectors versus managed connectors
-In Azure Logic Apps, connectors are either *built in* or *managed*. Some connectors have both versions. The available versions depend on whether you create a *Consumption* logic app workflow that runs in multi-tenant Azure Logic Apps or a *Standard* logic app workflow that runs in single-tenant Azure Logic Apps. For more information about logic app resource types, see [Resource types and host environment differences](../logic-apps/logic-apps-overview.md#resource-environment-differences).
+In Azure Logic Apps, connectors are either *built in* or *managed*. Some connectors have both versions. The available versions depend on whether you create a *Consumption* logic app workflow that runs in multitenant Azure Logic Apps or a *Standard* logic app workflow that runs in single-tenant Azure Logic Apps. For more information about logic app resource types, see [Resource types and host environment differences](../logic-apps/logic-apps-overview.md#resource-environment-differences).
* [Built-in connectors](built-in.md) are designed to run directly and natively inside Azure Logic Apps.
If your workflows also use managed connectors, such as the Office 365 Outlook co
## Custom connectors and APIs
-In Consumption workflows for multi-tenant Azure Logic Apps, you can call Swagger-based or SOAP-based APIs that aren't available as out-of-the-box connectors. You can also run custom code by creating custom API Apps. For more information, see the following documentation:
+In Consumption workflows for multitenant Azure Logic Apps, you can call Swagger-based or SOAP-based APIs that aren't available as out-of-the-box connectors. You can also run custom code by creating custom API Apps. For more information, see the following documentation:
* [Swagger-based or SOAP-based custom connectors for Consumption workflows](../logic-apps/custom-connector-overview.md#custom-connector-consumption)
In Standard workflows for single-tenant Azure Logic Apps, you can create nativel
## ISE and connectors
-For workflows that need direct access to resources in an Azure virtual network, you can use a dedicated [integration service environment (ISE)](../logic-apps/connect-virtual-network-vnet-isolated-environment-overview.md) where you can build, deploy, and run your workflows on dedicated resources.
+> [!IMPORTANT]
+>
+> On August 31, 2024, the ISE resource retires, due to its dependency on Azure Cloud Services (classic),
+> which retires at the same time. Before the retirement date, export any logic apps from your ISE to Standard
+> logic apps to avoid service disruption. Standard logic app workflows run in single-tenant Azure Logic Apps
+> and provide the same capabilities plus more. For example, Standard workflows support using private endpoints
+> for inbound traffic so that your workflows can communicate privately and securely with virtual networks.
+> Standard workflows also support virtual network integration for outbound traffic. For more information,
+> review [Secure traffic between virtual networks and single-tenant Azure Logic Apps using private endpoints](/azure/logic-apps/secure-single-tenant-workflow-virtual-network-private-endpoint).
+
+If you use a dedicated [integration service environment (ISE)](../logic-apps/connect-virtual-network-vnet-isolated-environment-overview.md) where workflows can directly access to resources in an Azure virtual network, you can build, deploy, and run your workflows on dedicated resources.
Custom connectors created within an ISE don't work with the on-premises data gateway. However, these connectors can directly access on-premises data sources that are connected to an Azure virtual network hosting the ISE. So, logic app workflows in an ISE most likely don't need the data gateway when communicating with those resources. If you have custom connectors that you created outside an ISE that require the on-premises data gateway, workflows in an ISE can use those connectors.
In the workflow designer, when you browse the built-in connectors or managed con
:::row::: :::column::: ![Example CORE connector](./media/apis-list/example-core-connector.png)
- \
- \
- **CORE**
- \
- \
- Built-in connectors with this label run in the same ISE as your workflows.
+ <br><br>**CORE**
+ <br><br>Built-in connectors with this label run in the same ISE as your workflows.
:::column-end::: :::column::: ![Example ISE connector](./media/apis-list/example-ise-connector.png)
- \
- \
- **ISE**
- \
- \
- Managed connectors with this label run in the same ISE as your workflows.
- \
- \
- If you have an on-premises system that's connected to an Azure virtual network, an ISE lets your workflows directly access that system without using the [on-premises data gateway](../logic-apps/logic-apps-gateway-connection.md). Instead, you can either use that system's **ISE** connector if available, an HTTP action, or a [custom connector](#custom-connectors-and-apis).
- \
- \
- For on-premises systems that don't have **ISE** connectors, use the on-premises data gateway. To find available ISE connectors, review [ISE connectors](#ise-and-connectors).
+ <br><br>**ISE**
+ <br><br>Managed connectors with this label run in the same ISE as your workflows.
+ <br><br>If you have an on-premises system that's connected to an Azure virtual network, an ISE lets your workflows directly access that system without using the [on-premises data gateway](../logic-apps/logic-apps-gateway-connection.md). Instead, you can either use that system's **ISE** connector if available, an HTTP action, or a [custom connector](#custom-connectors-and-apis).
+ <br><br>For on-premises systems that don't have **ISE** connectors, use the on-premises data gateway. To find available ISE connectors, review [ISE connectors](#ise-and-connectors).
:::column-end::: :::column:::
- ![Example non-ISE connector](./media/apis-list/example-multi-tenant-connector.png)
- \
- \
- No label
- \
- \
- All other connectors without a label, which you can continue to use, run in the global, multi-tenant Logic Apps service.
+ ![Example non-ISE connector](./media/apis-list/example-multitenant-connector.png)
+ <br><br>No label
+ <br><br>All other connectors without a label, which you can continue to use, run in the global, multitenant Logic Apps service.
:::column-end::: :::column::: :::column-end:::
connectors Managed https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/connectors/managed.md
Managed connectors provide ways for you to access other services and systems whe
For a smaller number of services, systems and protocols, Azure Logic Apps provides a built-in version alongside the managed version. The number and range of built-in connectors vary based on whether you create a Consumption logic app workflow that runs in multitenant Azure Logic Apps or a Standard logic app workflow that runs in single-tenant Azure Logic Apps. In most cases, the built-in version provides better performance, capabilities, pricing, and so on. In a few cases, some built-in connectors are available only in one logic app workflow type, and not the other.
-For example, a Standard workflow can use both managed connectors and built-in connectors for Azure Blob, Azure Cosmos DB, Azure Event Hubs, Azure Service Bus, DB2, FTP, MQ, SFTP, and SQL Server, while a Consumption workflow doesn't have the built-in versions. A Consumption workflow can use built-in connectors for Azure API Management, Azure App Services, and Batch, while a Standard workflow doesn't have these built-in connectors. For more information, review [Built-in connectors in Azure Logic Apps](built-in.md) and [Single-tenant versus multitenant and integration service environment (ISE)](../logic-apps/single-tenant-overview-compare.md).
+For example, a Standard workflow can use both managed connectors and built-in connectors for Azure Blob, Azure Cosmos DB, Azure Event Hubs, Azure Service Bus, DB2, FTP, MQ, SFTP, and SQL Server, while a Consumption workflow doesn't have the built-in versions. A Consumption workflow can use built-in connectors for Azure API Management, Azure App Services, and Batch, while a Standard workflow doesn't have these built-in connectors. For more information, review [Built-in connectors in Azure Logic Apps](built-in.md) and [Single-tenant versus multitenant in Azure Logic Apps](../logic-apps/single-tenant-overview-compare.md).
This article provides a general overview about managed connectors and the way they're organized in the Consumption workflow designer versus the Standard workflow designer with examples. For technical reference information about each managed connector in Azure Logic Apps, review [Connectors reference for Azure Logic Apps](/connectors/connector-reference/connector-reference-logicapps-connectors).
Some managed connectors also fall into the following informal groups:
* [Integration account connectors](#integration-account-connectors) help you transform and validate XML, encode and decode flat files, and process business-to-business (B2B) messages using AS2, EDIFACT, and X12 protocols.
-* [Integration service environment connectors](#ise-connectors) and are designed to run specifically in an ISE and provide benefits over their non-ISE versions.
- <a name="standard-connectors"></a> ## Standard connectors
container-apps Key Vault Certificates Manage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/key-vault-certificates-manage.md
Previously updated : 05/09/2024 Last updated : 08/14/2024
-# Import certificates from Azure Key Vault to Azure Container Apps (preview)
+# Import certificates from Azure Key Vault to Azure Container Apps
-You can set up Azure Key Vault to manage your container app's certificates to handle updates, renewals, and monitoring. Without Key Vault, you're left managing your certificate manually, which means you can't manage certificates in a central location and can't take advantage of lifecycle automation or notifications.
+You can set up Azure Key Vault to centrally manage your container app's TLS/SSL certificates and handle updates, renewals, and monitoring.
## Prerequisites -- [Azure Key Vault](/azure/key-vault/general/manage-with-cli2): Create a Key Vault resource.
+An Azure Key Vault resource is required to store your certificate. See [Import a certificate in Azure Key Vault](/azure/key-vault/certificates/tutorial-import-certificate?tabs=azure-portal) or [Configure certificate auto-rotation in Key Vault](/azure/key-vault/certificates/tutorial-rotate-certificates) to create a Key Vault and add a certificate.
-- [Azure CLI](/cli/azure/install-azure-cli): You need the Azure CLI updated with the Azure Container Apps extension version `0.3.49` or higher. Use the `az extension add` command to install the latest version.
+## Enable managed identity for Container Apps environment
- ```azurecli
- az extension add --name containerapp --upgrade --allow-preview`
- ```
+Azure Container Apps uses an environment level managed identity to access your Key Vault and import your certificate. To enable system-assigned managed identity, follow these steps:
-- [Managed identity](./managed-identity.md): Enable managed identity on your Container Apps environment.-
-## Secret configuration
-
-An [Azure Key Vault](/azure/key-vault/general/manage-with-cli2) instance is required to store your certificate. Make the following updates to your Key Vault instance:
-
-1. Open the [Azure portal](https://portal.azure.com).
-
-1. Go to your Azure Container Apps environment.
-
-1. From *Settings*, select Access control (IAM).
-
-1. From the *Roles* tab, and set yourself as a *Key Vault Administrator*.
-
-1. Go to your certificate's details and copy the value for *Secret Identifier* and paste it into a text editor for use in an upcoming step.
-
- > [!NOTE]
- > To retrieve a specific version of the certificate, include the version suffix with the secret identifier. To get the latest version, remove the version suffix from the identifier.
-
-## Enable and configure Key Vault Certificate
-
-1. Open the Azure portal and go to your Key Vault.
-
-1. In the *Objects* section, select **Certificates**.
-
-1. Select the certificate you want to use.
-
-1. In the *Access control (IAM)* section, select **Add role assignment**.
-
-1. Add the roles: **Key Vault Certificates Officer** and **Key Vault Secrets Officer**.
-
-1. Go to your certificate's details and copy the value for **Secret Identifier**.
-
-1. Paste the identifier into a text editor for use in an upcoming step.
-
-## Assign roles for environment-level managed identity
-
-1. Open the [Azure portal](https://portal.azure.com) and find your instance of your Azure Container Apps environment where you want to import a certificate.
+1. Open the [Azure portal](https://portal.azure.com) and find your Azure Container Apps environment where you want to import a certificate.
1. From *Settings*, select **Identity**.
An [Azure Key Vault](/azure/key-vault/general/manage-with-cli2) instance is requ
| Scope | Select **Key Vault**. | | Subscription | Select your Azure subscription. | | Resource | Select your vault. |
- | Role | Select *Key Vault Secrets User**. |
+ | Role | Select **Key Vault Secrets User**. |
1. Select **Save**. For more detail on RBAC vs. legacy access policies, see [Azure role-based access control (Azure RBAC) vs. access policies](/azure/key-vault/general/rbac-access-policy).
-## Import a certificate
+## Import certificate from Key Vault
+
+1. Open the Azure portal and go to your Azure Container Apps environment.
+
+1. From *Settings*, select **Certificates**.
+
+1. Select the **Bring your own certificates (.pfx)** tab.
-Once you authorize your container app to read the vault, you can use the `az containerapp env certificate upload` command to import your vault to your Container Apps environment.
+1. Select **Add certificate**.
-Before you run the following command, replace the placeholder tokens surrounded by `<>` brackets with your own values.
+1. In the *Add certificate* panel, in *Source*, select **Import from Key Vault**.
+
+1. Select **Select key vault certificate** and select the following values:
+
+ | Property | Value |
+ |--|--|
+ | Subscription | Select your Azure subscription. |
+ | Key vault | Select your vault. |
+ | Certificate | Select your certificate. |
+
+ > [!NOTE]
+ > If you see an error, *"The operation "List" is not enabled in this key vault's access policy."*, you need to configure an access policy in your Key Vault to allow your user account to list certificates. For more information, see [Assign a Key Vault access policy](/azure/key-vault/general/assign-access-policy?tabs=azure-portal).
-```azurecli
-az containerapp env certificate upload \
- --resource-group <RESOURCE_GROUP> \
- --name <CONTAINER_APP_NAME> \
- --akv-url <KEY_VAULT_URL> \
- --certificate-identity <CERTIFICATE_IDENTITY>
-```
+1. Select **Select**.
-For more information regarding the command parameters, see the following table.
+1. In the *Add certificate* panel, in *Managed identity*, select **System assigned**. If you're using a user-assigned managed identity, select your user-assigned managed identity.
-| Parameter | Description |
-|||
-| `--resource-group` | Your resource group name. |
-| `--name` | Your container app name. |
-| `--akv-url` | The URL for your secret identifier. This URL is the value you set aside in a previous step. |
-| `--certificate-identity` | The ID for your managed identity. This value can either be `system`, or the ID for your user-assigned managed identity. |
+1. Select **Add**.
-## Troubleshooting
+> [!NOTE]
+> If you receive an error message, verify that the managed identity is assigned the **Key Vault Secrets User** role on the Key Vault.
-If you encounter an error message as you import your certificate, verify your actions using the following steps:
+## Configure a custom domain
-- Ensure that permissions are correctly configured for both your certificate and environment-level managed identity.
+After configuring your certificate, you can use it to secure your custom domain. Follow the steps in [Add a custom domain](custom-domains-certificates.md#add-a-custom-domain-and-certificate) and select the certificate you imported from Key Vault.
- - You should assign both *Key Vault Secrets Officer* and *Key Vault Certificates Officer* roles.
+## Rotate certificates
-- Make sure that you're using the correct URL for accessing your certificate. You should be using the *Secret Identifier* URL.
+When you rotate your certificate in Key Vault, Azure Container Apps automatically updates the certificate in your environment. It takes up to 12 hours for the new certificate to be applied.
## Related > [!div class="nextstepaction"]
-> [Manage secrets](manage-secrets.md)
+> [Certificates in Azure Container Apps](certificates-overview.md)
container-apps Network Proxy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/container-apps/network-proxy.md
- Title: Network proxying in Azure Container Apps
-description: Learn how network requests are proxied and routed in Azure Container Apps.
---- Previously updated : 08/02/2023---
-# Network proxying in Azure Container Apps
-
-Azure Container Apps uses [Envoy](https://www.envoyproxy.io/) as a network proxy. Network requests are proxied in Azure Container Apps to achieve the following capabilities:
--- **Allow apps to scale to zero**: Running instances are required for direct calls to an application. If an app scales to zero, then a direct request would fail. With proxying, Azure Container Apps ensures calls to an app have running instances to resolve the request.--- **Achieve load balancing**: As requests come in Azure Container Apps applies load balancing rules spread requests across container replicas.-
-## Ports and routing
-
-In Container Apps, Envoy listens the following ports to decide which container app to route traffic.
-
-| Type | Request | IP type | Port number | Internal port number |
-|--|--|--|--|--|
-| Public | Endpoint | Public | `80` | `8080` |
-| Public | VNET | Public | `443` | `4430` |
-| Internal | Endpoint | Cluster | `80` | `8081` |
-| Internal | VNET | Cluster | `443` | `8443` |
-
-Requests that come in to ports `80` and `443` are internally routed to the appropriate internal port depending on the request type.
-
-## Security
--- HTTP requests are automatically redirected to HTTPS
- - You can disable this by setting `allowInsecure` to `true` in the ingress configuration
-- TLS terminates at the ingress
- - You can enable [environment level network encryption](networking.md) for full end-to-end encryption for requests between the ingress and an app and between different apps.
-
-HTTPS, gRPC, and HTTP/2 all follow the same architectural model.
-
-## Timeouts
-
-Network requests timeout after four minutes
-
-> [!div class="nextstepaction"]
-> [Networking](networking.md)
cost-management-billing Permission Buy Savings Plan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cost-management-billing/savings-plan/permission-buy-savings-plan.md
Savings plan purchasing for Microsoft Customer Agreement customers is limited to
- Users with billing profile contributor permissions or higher can purchase savings plans from **Cost Management + Billing** > **Savings plan** experience. No subscription-specific permissions are needed. - Users with subscription owner or savings plan purchaser roles in at least one subscription in the billing profile can purchase savings plans from **Home** > **Savings plan**.
+If the **Add Savings Plan** option is disabled in the [Azure portal](https://portal.azure.com/#blade/Microsoft_Azure_GTM/ModernBillingMenuBlade/BillingAccounts), then no user can purchase the Savings Plan. Go to the **Policies** menu to change settings to purchase the Savings Plan.
+ ### Microsoft Partner Agreement partners Partners can use **Home** > **Savings plan** in the [Azure portal](https://portal.azure.com/) to purchase savings plans on behalf of their customers.
databox-online Azure Stack Edge Gpu 2407 Release Notes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/databox-online/azure-stack-edge-gpu-2407-release-notes.md
The 2407 release has the following new features and enhancements:
| No. | Feature | Issue | Workaround/comments | | | | | |
-|**1.**|VM creation | Image directory is still the old location causing VM creation failure on Azure Stack Edge 2403. | |
+|**1.**|VM creation | If you have a Marketplace image created with Azure Stack Edge earlier than 2403 and then create a VM from the existing Marketplace image, your VM creation fails because Azure Stack Edge 2407 changed the download path for the Marketplace image. | Delete the Marketplace image and then create a new image from Azure portal. For detailed steps, see [Troubleshoot VM creation issues](azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning.md#vm-creation-fails). |
## Known issues from previous releases
The following table provides a summary of known issues carried over from the pre
|**23.**|Custom script VM extension |There's a known issue in the Windows VMs that were created in an earlier release and the device was updated to 2103. <br> If you add a custom script extension on these VMs, the Windows VM Guest Agent (Version 2.7.41491.901 only) gets stuck in the update causing the extension deployment to time out. | To work around this issue: <br> 1. Connect to the Windows VM using remote desktop protocol (RDP). <br> 2. Make sure that the `waappagent.exe` is running on the machine: `Get-Process WaAppAgent`. <br> 3. If the `waappagent.exe` isn't running, restart the `rdagent` service: `Get-Service RdAgent` \| `Restart-Service`. Wait for 5 minutes.<br> 4. While the `waappagent.exe` is running, kill the `WindowsAzureGuest.exe` process. <br> 5. After you kill the process, the process starts running again with the newer version. <br> 6. Verify that the Windows VM Guest Agent version is 2.7.41491.971 using this command: `Get-Process WindowsAzureGuestAgent` \| `fl ProductVersion`.<br> 7. [Set up custom script extension on Windows VM](azure-stack-edge-gpu-deploy-virtual-machine-custom-script-extension.md). | |**24.**|Multi-Process Service (MPS) |When the device software and the Kubernetes cluster are updated, the MPS setting isn't retained for the workloads. |[Re-enable MPS](azure-stack-edge-gpu-connect-powershell-interface.md#connect-to-the-powershell-interface) and redeploy the workloads that were using MPS. | |**25.**|Wi-Fi |Wi-Fi doesn't work on Azure Stack Edge Pro 2 in this release. |
-|**26.**|Azure IoT Edge |The managed Azure IoT Edge solution on Azure Stack Edge is running on an older, obsolete IoT Edge runtime that is at end of life. For more information, see [IoT Edge v1.1 EoL: What does that mean for me?](https://techcommunity.microsoft.com/t5/internet-of-things-blog/iot-edge-v1-1-eol-what-does-that-mean-for-me/ba-p/3662137). Although the solution doesn't stop working past end of life, there are no plans to update it. |To run the latest version of Azure IoT Edge [LTSs](../iot-edge/version-history.md#version-history) with the latest updates and features on their Azure Stack Edge, we **recommend** that you deploy a [customer self-managed IoT Edge solution](azure-stack-edge-gpu-deploy-iot-edge-linux-vm.md) that runs on a Linux VM. For more information, see [Move workloads from managed IoT Edge on Azure Stack Edge to an IoT Edge solution on a Linux VM](azure-stack-edge-move-to-self-service-iot-edge.md). |
+|**26.**|Azure IoT Edge |The managed Azure IoT Edge solution on Azure Stack Edge is running on an older, obsolete IoT Edge runtime that is at end of life. For more information, see [IoT Edge v1.1 end of life: What does that mean for me?](https://techcommunity.microsoft.com/t5/internet-of-things-blog/iot-edge-v1-1-eol-what-does-that-mean-for-me/ba-p/3662137). Although the solution doesn't stop working past end of life, there are no plans to update it. |To run the latest version of Azure IoT Edge [LTSs](../iot-edge/version-history.md#version-history) with the latest updates and features on their Azure Stack Edge, we **recommend** that you deploy a [customer self-managed IoT Edge solution](azure-stack-edge-gpu-deploy-iot-edge-linux-vm.md) that runs on a Linux VM. For more information, see [Move workloads from managed IoT Edge on Azure Stack Edge to an IoT Edge solution on a Linux VM](azure-stack-edge-move-to-self-service-iot-edge.md). |
|**27.**|AKS on Azure Stack Edge |In this release, you can't modify the virtual networks once the AKS cluster is deployed on your Azure Stack Edge cluster.| To modify the virtual network, you must delete the AKS cluster, then modify virtual networks, and then recreate AKS cluster on your Azure Stack Edge. | |**28.**|AKS Update |The AKS Kubernetes update might fail if one of the AKS VMs isn't running. This issue might be seen in the two-node cluster. |If the AKS update has failed, [Connect to the PowerShell interface of the device](azure-stack-edge-gpu-connect-powershell-interface.md). Check the state of the Kubernetes VMs by running `Get-VM` cmdlet. If the VM is off, run the `Start-VM` cmdlet to restart the VM. Once the Kubernetes VM is running, reapply the update. | |**29.**|Wi-Fi |Wi-Fi functionality for Azure Stack Edge Mini R is deprecated. | |
databox-online Azure Stack Edge Gpu Overview Gpu Virtual Machines https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/databox-online/azure-stack-edge-gpu-overview-gpu-virtual-machines.md
Previously updated : 07/05/2022 Last updated : 08/16/2024 #Customer intent: As an IT admin, I need to understand how to deploy and manage GPU-accelerated VM workloads on my Azure Stack Edge Pro GPU devices.
[!INCLUDE [applies-to-gpu-pro2-pro-r-and-mini-r-skus](../../includes/azure-stack-edge-applies-to-gpu-pro-pro-2-pro-r-sku.md)]
-GPU-accelerated workloads on an Azure Stack Edge Pro GPU device require a GPU virtual machine. This article provides an overview of GPU VMs, including supported OSs, GPU drivers, and VM sizes. Deployment options for GPU VMs used with Kubernetes clusters also are discussed.
+GPU-accelerated workloads on an Azure Stack Edge Pro GPU device require a GPU VM (virtual machine). This article provides an overview of GPU VMs, including supported OSs, GPU drivers, and VM sizes. Deployment options for GPU VMs used with Kubernetes clusters also are discussed.
## About GPU VMs
To take advantage of the GPU capabilities of Azure N-series VMs, Nvidia GPU driv
You can [install and manage the extension using the Azure Resource Manager templates](azure-stack-edge-gpu-deploy-virtual-machine-install-gpu-extension.md) after VM deployment. In the Azure portal, you can install the GPU extension during or after you deploy a VM; for instructions, see [Deploy GPU VMs on your Azure Stack Edge device](azure-stack-edge-gpu-deploy-gpu-virtual-machine.md).
-If your device will have a Kubernetes cluster configured, be sure to review [deployment considerations for Kubernetes clusters](#gpu-vms-and-kubernetes) before you deploy GPU VMs.
+If your device has a Kubernetes cluster configured, be sure to review [deployment considerations for Kubernetes clusters](#gpu-vms-and-kubernetes) before you deploy GPU VMs.
## Supported OS and GPU drivers
The Nvidia GPU driver extensions for Windows and Linux support the following OS
### Supported OS for GPU extension for Windows
-This extension supports the following operating systems (OSs). Other versions may work but have not been tested in-house on GPU VMs running on Azure Stack Edge devices.
+This extension supports the following operating systems (OSs). Other versions may work but haven't been tested in-house on GPU VMs running on Azure Stack Edge devices.
| Distribution | Version | |||
This extension supports the following operating systems (OSs). Other versions ma
### Supported OS for GPU extension for Linux
-This extension supports the following OS distros, depending on the driver support for specific OS version. Other versions may work but have not been tested in-house on GPU VMs running on Azure Stack Edge devices.
+This extension supports the following OS distro, depending on the driver support for specific OS version. Other versions may work but haven't been tested in-house on GPU VMs running on Azure Stack Edge devices.
| Distribution | Version | |||
-| Ubuntu | 18.04 LTS |
| Red Hat Enterprise Linux | 7.4 |
+> [!NOTE]
+> Ubuntu 18.04 LTS GPU extension has been deprecated. The GPU extension is no longer supported on Ubuntu 18.04 GPU VMs running on Azure Stack Edge devices. If you plan to utilize the Ubuntu version 18.04 LTS distro, see steps for manual GPU driver installation at [CUDA Toolkit 12.1 Update 1 Downloads](https://developer.nvidia.com/cuda-12-1-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=18.04&target_type=deb_local). You may need to download the CUDA signing key before the installation. For an example of installing the signing key, see [Troubleshoot GPU extension issues for GPU VMs on Azure Stack Edge Pro GPU](azure-stack-edge-gpu-troubleshoot-virtual-machine-gpu-extension-installation.md#in-versions-lower-than-2205-linux-gpu-extension-installs-old-signing-keys-signature-andor-required-key-missing).
+ ## GPU VM deployment You can deploy a GPU VM via the Azure portal or using Azure Resource Manager templates. The GPU extension is installed after VM creation.<!--Wording still needs work!-->
Before you deploy GPU VMs on your device, review the following considerations if
#### For 1-GPU device: -- **Create a GPU VM followed by Kubernetes configuration on your device**: In this scenario, the GPU VM creation and Kubernetes configuration will both be successful. Kubernetes will not have access to the GPU in this case.
+- **Create a GPU VM followed by Kubernetes configuration on your device**: In this scenario, the GPU VM creation and Kubernetes configuration will both be successful. Kubernetes won't have access to the GPU in this case.
-- **Configure Kubernetes on your device followed by creation of a GPU VM**: In this scenario, the Kubernetes will claim the GPU on your device and the VM creation will fail as there are no GPU resources available.
+- **Configure Kubernetes on your device followed by creation of a GPU VM**: In this scenario, the Kubernetes claims the GPU on your device and the VM creation will fail as there are no GPU resources available.
#### For 2-GPU device - **Create a GPU VM followed by Kubernetes configuration on your device**: In this scenario, the GPU VM that you create will claim one GPU on your device and Kubernetes configuration will also be successful and claim the remaining one GPU. -- **Create two GPU VMs followed by Kubernetes configuration on your device**: In this scenario, the two GPU VMs will claim the two GPUs on the device and the Kubernetes is configured successfully with no GPUs.
+- **Create two GPU VMs followed by Kubernetes configuration on your device**: In this scenario, the two GPU VMs claim the two GPUs on the device and the Kubernetes is configured successfully with no GPUs.
-- **Configure Kubernetes on your device followed by creation of a GPU VM**: In this scenario, the Kubernetes will claim both the GPUs on your device and the VM creation will fail as no GPU resources are available.
+- **Configure Kubernetes on your device followed by creation of a GPU VM**: In this scenario, the Kubernetes claims both the GPUs on your device and the VM creation will fail as no GPU resources are available.
<!--Li indicated that this is fixed. If you have GPU VMs running on your device and Kubernetes is also configured, then anytime the VM is deallocated (when you stop or remove a VM using Stop-AzureRmVM or Remove-AzureRmVM), there is a risk that the Kubernetes cluster will claim all the GPUs available on the device. In such an instance, you will not be able to restart the GPU VMs deployed on your device or create GPU VMs. -->
databox-online Azure Stack Edge Gpu Troubleshoot Virtual Machine Provisioning https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/databox-online/azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning.md
Previously updated : 03/24/2023 Last updated : 08/16/2024 # Troubleshoot VM deployment in Azure Stack Edge Pro GPU
This article describes how to troubleshoot common errors when deploying virtual machines on an Azure Stack Edge Pro GPU device. The article provides guidance for investigating the most common issues that cause VM provisioning timeouts and issues during network interface and VM creation.
-To diagnose any VM provisioning failure, you'll review guest logs for the failed virtual machine. For steps to collect VM guest logs and include them in a Support package, see [Collect guest logs for VMs on Azure Stack Edge Pro](azure-stack-edge-gpu-collect-virtual-machine-guest-logs.md).
+To diagnose any VM provisioning failure, review guest logs for the failed virtual machine. For steps to collect VM guest logs and include them in a Support package, see [Collect guest logs for VMs on Azure Stack Edge Pro](azure-stack-edge-gpu-collect-virtual-machine-guest-logs.md).
For guidance on issues that prevent successful upload of a VM image before your VM deployment, see [Troubleshoot virtual machine image uploads in Azure Stack Edge Pro GPU](azure-stack-edge-gpu-troubleshoot-virtual-machine-image-upload.md).
The following issues are the top causes of VM provisioning timeouts:
- The VM image that you used to deploy the VM wasn't prepared correctly. [Learn more](#vm-image-not-prepared-correctly) - The default gateway and DNS server couldn't be reached from the guest VM. [Learn more](#gateway-dns-server-couldnt-be-reached-from-guest-vm) - During a `cloud init` installation, `cloud init` either didn't run or there were issues while it was running. (Linux VMs only) [Learn more](#cloud-init-issues-linux-vms)-- For a Linux VM deployed using a custom VM image, the Provisioning flags in the /etc/waagent.conf file are not correct. (Linux VMs only) [Learn more](#provisioning-flags-set-incorrectly-linux-vms)
+- For a Linux VM deployed using a custom VM image, the Provisioning flags in the /etc/waagent.conf file aren't correct. (Linux VMs only) [Learn more](#provisioning-flags-set-incorrectly-linux-vms)
- Primary network interface attached to a SRIOV enabled virtual switch [Learn more](#primary-network-interface-attached-to-a-sriov-enabled-virtual-switch) ### IP assigned to the VM is already in use **Error description:** The VM was assigned a static IP address that is already in use, and VM provisioning failed. This error happens when the IP address is in use in the subnet on which the VM is deployed. When you deploy a VM via the Azure portal, the process checks for an existing IP address within your device but can't check IP addresses of other services or virtual machines that might also be on your subnet.
-**Suggested solution:** Use a static IP address that is not in use, or use a dynamic IP address provided by the DHCP server.
+**Suggested solution:** Use a static IP address that isn't in use, or use a dynamic IP address provided by the DHCP server.
To check for a duplicate IP address:
For an overview of requirements, see [Create custom VM images for an Azure Stack
### Gateway, DNS server couldn't be reached from guest VM
-**Error description:** If the default gateway and DNS server can't be reached during VM deployment, VM provisioning will time out, and the VM deployment will fail.
+**Error description:** If the default gateway and DNS server can't be reached during VM deployment, VM provisioning times out and the VM deployment fails.
**Suggested solution:** Verify that the default gateway and DNS server can be reached from the VM. Then repeat VM deployment.
To verify that the default gateway and DNS server can be reached from the VM, do
### `cloud init` issues (Linux VMs)
-**Error description:** `cloud init` did not run, or there were issues while `cloud init` was running. `cloud-init` is used to customize a Linux VM when the VM boots for the first time. For more information, see [cloud-init support for virtual machines in Azure](../virtual-machines/linux/using-cloud-init.md).
+**Error description:** `cloud init` didn't run, or there were issues while `cloud init` was running. `cloud-init` is used to customize a Linux VM when the VM boots for the first time. For more information, see [cloud-init support for virtual machines in Azure](../virtual-machines/linux/using-cloud-init.md).
**Suggested solutions:** To find issues that occurred when `cloud init` was run: 1. [Connect to the VM](azure-stack-edge-gpu-deploy-virtual-machine-portal.md#connect-to-a-vm).
To check for some of the most common issues that prevent `cloud init` from runni
`cloud-init --version`
- The command should return the cloud init version number. If the image is not `cloud init`-based, the command won't return version information.
+ The command should return the cloud init version number. If the image isn't `cloud init`-based, the command won't return version information.
To get help with `cloud init` options, run the following command:
To check for some of the most common issues that prevent `cloud init` from runni
![Illustration of a cloud-init log entry for a VM image with the Data Source set to Azure. The identifying text is highlighted.](./media/azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning/cloud-init-log-entry-01.png)
- If the data source is not set to Azure, you may need to revise your `cloud init` script. For more information, see [Diving deeper into cloud-init](../virtual-machines/linux/cloud-init-deep-dive.md).
+ If the data source isn't set to Azure, you may need to revise your `cloud init` script. For more information, see [Diving deeper into cloud-init](../virtual-machines/linux/cloud-init-deep-dive.md).
### Provisioning flags set incorrectly (Linux VMs)
To check for some of the most common issues that prevent `cloud init` from runni
### Primary network interface attached to a SRIOV enabled virtual switch
-**Error description:** The primary network interface attached to a single root I/O virtualization (SRIOV) interface-enabled virtual switch caused network traffic to bypass the hyper-v, so the host could not receive DHCP requests from the VM, resulting in a provisioning timeout.
+**Error description:** The primary network interface attached to a single root I/O virtualization (SRIOV) interface-enabled virtual switch caused network traffic to bypass the Hyper-V, so the host couldn't receive DHCP requests from the VM, resulting in a provisioning timeout.
**Suggested solutions:** - Connect the VM primary network interface to a virtual switch without enabling accelerated networking. -- On an Azure Stack Edge Pro 1 device, virtual switches created on Port 1 to Port 4 do not enable accelerated networking. On Port 5 or Port 6, virtual switches will enable accelerated networking by default.
+- On an Azure Stack Edge Pro 1 device, virtual switches created on Port 1 to Port 4 don't enable accelerated networking. On Port 5 or Port 6, virtual switches enable accelerated networking by default.
-- On an Azure Stack Edge Pro 2 device, virtual switches created on Port 1 or Port 2 do not enable accelerated networking. On Port 3 or Port 4, virtual switches will enable accelerated networking by default.
+- On an Azure Stack Edge Pro 2 device, virtual switches created on Port 1 or Port 2 don't enable accelerated networking. On Port 3 or Port 4, virtual switches enable accelerated networking by default.
## Network interface creation issues
To verify whether the network interface was created successfully, do these steps
1. In the Azure portal, go to the Azure Stack Edge resource for your device (go to **Edge Services** > **Virtual machines**). Then select **Deployments**, and navigate to the VM deployment.
-1. If a network interface was not created successfully, you'll see the following error.
+1. If a network interface wasn't created successfully, you see the following error.
![Screenshot of the error displayed in the Azure portal when network interface creation fails during VM deployment on an Azure Stack Edge device.](./media/azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning/nic-creation-failed-01.png)
To verify whether the network interface was created successfully, do these steps
This section covers common issues that occur during VM creation.
+### VM creation fails
+
+**Error description:** If you have a Marketplace image created with Azure Stack Edge earlier than 2403 and then create a VM from the existing Marketplace image, your VM creation fails because Azure Stack Edge 2407 changed the download path for the Marketplace image.
+
+**Suggested solution:** Use the following steps to delete the existing Marketplace image and then create a new Marketplace image from Azure portal.
+
+1. From Azure portal, delete the existing Marketplace image.
+
+ 1. List the ingestion and the BlobDownload ingestion job for the Marketplace image. Use these steps to [Connect to Azure Resource Manager](azure-stack-edge-gpu-connect-resource-manager.md?tabs=Az).
+
+ Run the following script to list ingestion jobs:
+
+ Specify the subscription ID in the following Uri:
+
+ $uri1 = "https://management.appliance name.DNS domain/subscriptions/sid/providers/Microsoft.AzureBridge/locations/DBELocal/ingestionJobs/?api-version=2022-03-01"
+
+ ```powershell
+ Function Get-AzCachedAccessToken()
+ {
+ $ErrorActionPreference = 'Stop'
+ $azureRmProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
+ $currentAzureContext = Get-AzContext
+ $profileClient = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($azureRmProfile)
+ Write-Debug ("Getting access token for tenant" + $currentAzureContext.Subscription.TenantId)
+ $token = $profileClient.AcquireAccessToken($currentAzureContext.Subscription.TenantId)
+ $token.AccessToken
+ }
+
+ $token = Get-AzCachedAccessToken
+ $headers = @{Authorization = "Bearer $token"; "Content-Type" = "application/json" }
+ $v = Invoke-RestMethod -Method Get -Uri $uri1 -Headers $headers
+ v.value
+ ```
+
+ 1. Find the ingestion job name = `Marketplace image sku name` and kind = `BlobDownload`.
+
+ Example: ingestion job name = `Ubuntu-18-04` and kind = `BlobDownload`.
+
+ ![Screenshot of example syntax to find ingestion job name.](./media/azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning/ingestion-job-name.png)
+
+1. If the ingestion job is found in Step 1, use the following steps to delete the ingestion job and delete the image. For example, the ingestion job name in the example above is `ubuntu-18-04`. Additionally, `Subscription ID` and `Resource group` name can be found in the example.
+
+ ```powershell
+ $uri2 = "https://management.<appliance name>.<DNS domain>/subscriptions/sid/resourceGroups/rgname/providers/Microsoft.AzureBridge/locations/dbelocal/ingestionJobs/<ingestion job name>?api-version=2018-06-01"
+ ```
+
+ ```powershell
+ Invoke-RestMethod -Method DELETE -Uri $uri2 -Headers $headers
+ ```
+
+1. Follow steps to [Create a new VM image from Azure Marketplace](azure-stack-edge-create-a-vm-from-azure-marketplace.md).
+ ### Not enough memory to create the VM
-**Error description:** When VM creation fails because of insufficient memory, you'll see the following error.
+**Error description:** When VM creation fails because of insufficient memory, you see the following error.
![Screenshot of the error displayed in the Azure portal when VM creation fails on an Azure Stack Edge device.](./media/azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning/vm-creation-failed-01.png)
The memory available for the deployment of a VM is constrained by several factor
### Insufficient number of GPUs to create GPU VM
-If you try to deploy a VM on a GPU device that already has Kubernetes enabled, no GPUs will be available, and VM provisioning will fail with the following error:
+If you try to deploy a VM on a GPU device that already has Kubernetes enabled, no GPUs are available, and VM provisioning fails with the following error:
![Screenshot of the error displayed in the Azure portal when creation of a GPU VM fails because of no available GPUs on an Azure Stack Edge device.](./media/azure-stack-edge-gpu-troubleshoot-virtual-machine-provisioning/gpu-vm-creation-failed-01.png) **Possible causes:**
-If Kubernetes is enabled before the VM is created, Kubernetes will use all the available GPUs, and you wonΓÇÖt be able to create any GPU-size VMs. You can create as many GPU-size VMs as the number of available GPUs. Your Azure Stack Edge device can be equipped with 1 or 2 GPUs.
+If Kubernetes is enabled before the VM is created, Kubernetes uses all the available GPUs, and you wonΓÇÖt be able to create any GPU-size VMs. You can create as many GPU-size VMs as the number of available GPUs. Your Azure Stack Edge device can be equipped with 1 or 2 GPUs.
**Suggested solution:** For VM deployment options on a 1-GPU or 2-GPU device with Kubernetes configured, see [GPU VMs and Kubernetes](azure-stack-edge-gpu-overview-gpu-virtual-machines.md#gpu-vms-and-kubernetes).
digital-twins How To Create App Registration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/digital-twins/how-to-create-app-registration.md
description: Create a Microsoft Entra app registration that can access Azure Digital Twins resources. Previously updated : 01/11/2023 Last updated : 08/16/2024
Navigate to [Microsoft Entra ID](https://portal.azure.com/#blade/Microsoft_AAD_I
:::image type="content" source="media/how-to-create-app-registration/new-registration.png" alt-text="Screenshot of the Microsoft Entra service page in the Azure portal, showing the steps to create a new registration in the 'App registrations' page." lightbox="media/how-to-create-app-registration/new-registration.png"::: In the **Register an application** page that follows, fill in the requested values:
-* **Name**: a Microsoft Entra application display name to associate with the registration
-* **Supported account types**: Select **Accounts in this organizational directory only (Default Directory only - Single tenant)**
-* **Redirect URI**: An **Microsoft Entra application reply URL** for the Microsoft Entra application. Add a **Public client/native (mobile & desktop)** URI for `http://localhost`.
+* **Name**: A Microsoft Entra application display name to associate with the registration.
+* **Supported account types**: Select **Accounts in this organizational directory only (Default Directory only - Single tenant)**.
When you're finished, select the **Register** button.
In this section, you'll run a CLI command to create an app registration with the
Run the following command to create the registration. If you're using Cloud Shell, the path to the manifest.json file is `@manifest.json`. ```azurecli-interactive
-az ad app create --display-name <app-registration-name> --available-to-other-tenants false --reply-urls http://localhost --native-app --required-resource-accesses "<path-to-manifest.json>"
+az ad app create --display-name <app-registration-name> --sign-in-audience AzureADMyOrg --required-resource-accesses "manifest.json"
``` The output of the command is information about the app registration you've created.
Take note of the **Application (client) ID** and **Directory (tenant) ID** shown
# [CLI](#tab/cli)
-You can find both of these values in the output from the `az ad app create` command that you ran [earlier](#run-the-creation-command). (You can also bring up the app registration's information again using [az ad app show](/cli/azure/ad/app#az-ad-app-show).)
+You can find the app ID in the output from the `az ad app create` command that you ran [earlier](#run-the-creation-command) (or bring up the information again using [az ad app show](/cli/azure/ad/app#az-ad-app-show)).
-Look for these values in the result:
-
-Application (client) ID:
+Look for `appId` in the result:
:::image type="content" source="media/how-to-create-app-registration/cli-app-id.png" alt-text="Screenshot of Cloud Shell output of the app registration creation command. The appId value is highlighted.":::
-Directory (tenant) ID:
+You can display your tenant ID in the shell using the [az account tenant list](/cli/azure/account/tenant) command.
+
+>[!NOTE]
+>This command group is experimental and currently under development.
digital-twins How To Create Endpoints https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/digital-twins/how-to-create-endpoints.md
Next, create a SAS token for your storage account that the endpoint can use to a
1. Doing so will generate several SAS and connection string values at the bottom of the same page, underneath the setting selections. Scroll down to view the values, and use the **Copy to clipboard** icon to copy the **SAS token** value. Save it to use later.
- :::image type="content" source="media/how-to-create-endpoints/copy-sas-token.png" alt-text="Screenshot of the storage account page in the Azure portal highlighting how to copy the SAS token to use in the dead-letter secret." lightbox="media/how-to-create-endpoints/copy-sas-token.png":::
- # [CLI](#tab/cli) 1. Retrieve your storage account keys using the following command and copy the value for either one of your keys:
digital-twins Quickstart 3D Scenes Studio https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/digital-twins/quickstart-3d-scenes-studio.md
Next, you'll create a *behavior* for the element. These behaviors allow you to c
1. Select **Add widget**. From the **Widget library**, select the **Link** widget and then **Add widget**.
- 1. In the **New widget** options, enter a **Label** of *Live arm camera*. For the **URL**, you can use the example URL *http://contoso.aws.armstreams.com/${PrimaryTwin.$dtId}*. There's no live camera hosted at the URL for this sample, but the link represents where the video feed might be hosted in a real scenario.
+ 1. In the **New widget** options, enter a **Label** of *Live arm camera*. For the **URL**, you can use the example URL *http://contoso.armstreams.com/${PrimaryTwin.$dtId}*. There's no live camera hosted at the URL for this sample, but the link represents where the video feed might be hosted in a real scenario.
1. Select **Create widget**.
event-grid Monitor Virtual Machine Changes Logic App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/event-grid/monitor-virtual-machine-changes-logic-app.md
In this tutorial, you learn how to:
> make sure that you create a *stateful* workflow, not a stateless workflow. This tutorial applies only > to Consumption logic apps, which follow a different user experience. To add Azure Event Grid operations > to your workflow in the designer, on the operations picker pane, make sure that you select the **Azure** tab.
- > For more information about multitenant versus single-tenant Azure Logic Apps, review [Single-tenant versus multitenant and integration service environment](../logic-apps/single-tenant-overview-compare.md).
+ > For more information about multitenant versus single-tenant Azure Logic Apps, review [Single-tenant versus multitenant](../logic-apps/single-tenant-overview-compare.md).
1. When you're done, select **Review + create**. On the next pane, confirm the provided information, and select **Create**.
expressroute How To Configure Connection Monitor https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/expressroute/how-to-configure-connection-monitor.md
If you're creating a new Azure VM for monitoring connectivity your VNet, you can
#### Existing Azure virtual machine
-If you're using an existing VM to monitor connectivity, you can install the Network Agent separately for [Linux](../virtual-machines/extensions/network-watcher-linux.md) and [Windows](../virtual-machines/extensions/network-watcher-windows.md).
+If you're using an existing VM to monitor connectivity, you can install the Network Agent separately for [Linux](../network-watcher/network-watcher-agent-linux.md) and [Windows](../network-watcher/network-watcher-agent-windows.md).
### <a name="firewall"></a>Open the firewall ports on the monitoring agent servers
extended-zones Faq https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/extended-zones/faq.md
Previously updated : 08/02/2024 Last updated : 08/16/2024 # Azure Extended Zones frequently asked questions (FAQ)
An Azure Extended Zone might be associated with a parent region in the same or a
No, given the size, hardware, and targeted use cases for the Azure Extended Zone, only a small subset of the Azure services can be offered at the Azure Extended Zone. Access to the complete set of Azure services is available in the parent region.
+## What are the available Azure Extended Zones?
+
+Currently, Los Angeles is the only available Azure Extended Zone.
+
+## How will I be charged for resources I create in an Azure Extended Zone?
+
+Currently, you won't be billed for any resources that you create in Los Angles Extended Zone. However, any resources you create in the parent region are subject to charges. For example, if you create a virtual machine in Los Angeles with a network security group in West US, you'll only be billed for the network security group.
+ ## Will there be SKUs specific to the Azure Extended Zones? No, SKUs are consistent across the corresponding Azure Region, so VMs offered in the Azure Extended Zones don't have specific SKUs.
extended-zones Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/extended-zones/overview.md
Previously updated : 08/10/2024 Last updated : 08/16/2024 # What are Azure Extended Zones (Preview)?
The following diagram shows how Azure services are deployed at the Azure Extende
The following table lists key services that are available in Azure Extended Zones:
-| Service category | Available services |
+| Service category | Available Azure services and features |
| | - |
-| **Compute** | Azure virtual machines (general purpose: A, B, D, E, and F series and GPU NVadsA10 v5 series) <br> Virtual Machine Scale Sets <br> Azure Kubernetes Service |
-| **Networking** | Azure Private Link <br> Standard public IP <br> Virtual networks <br> Virtual network peering <br> ExpressRoute <br> Azure Standard Load Balancer <br> DDoS (Standard protection) |
-| **Storage** | Azure managed disks <br> Azure Premium Page Blobs <br> Azure Premium Block Blobs <br> Azure Premium Files <br> Azure Data Lake Storage Gen2<br> Hierarchical Namespace <br>Azure Data Lake Storage Gen2 Flat Namespace <br> Change Feed <br> Blob Features <br> - SFTP <br> - NFS |
+| **Compute** | Azure Kubernetes Service <br> Azure Virtual Desktop <br> Virtual Machine Scale Sets <br> Virtual machines (general purpose: A, B, D, E, and F series and GPU NVadsA10 v5 series) |
+| **Networking** | DDoS (Standard protection) <br> ExpressRoute <br> Private Link <br> Standard Load Balancer <br> Standard public IP <br> Virtual Network <br> Virtual network peering |
+| **Storage** | Managed disks <br> Premium Page Blobs <br> Premium Block Blobs <br> Premium Files <br> Data Lake Storage Gen2<br> Hierarchical Namespace <br>Data Lake Storage Gen2 Flat Namespace <br> Change Feed <br> Blob Features <br> - SFTP <br> - NFS |
| **BCDR** | Azure Site Recovery <br> Azure Backup |
+## Availability
+
+Currently, Los Angeles is the only available Extended Zone in preview.
+
+## Pricing
+
+Currently, resources created in Los Angeles Extended Zone aren't billed. However, any resources you create in the parent region to use with Extended Zone resources are subject to charges. For example, if you create a virtual machine in Los Angeles with a network security group in West US, you'll only be billed for the network security group.
+ ## Frequently asked questions (FAQ) To get answers to most frequently asked questions about Azure Extended Zones, see [Azure Extended Zones FAQ](faq.md).
hdinsight-aks Cluster Storage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/cluster-storage.md
Title: Introduction to cluster storage description: Understand how Azure HDInsight on AKS integrates with Azure Storage-+ Last updated 08/3/2023
hdinsight-aks Concept Azure Monitor Integration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/concept-azure-monitor-integration.md
Title: Metrics and monitoring in HDInsight on AKS description: Learn about how HDInsight on AKS interacts with Azure Monitoring. -+ Last updated 08/29/2023
hdinsight-aks Concept Security https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/concept-security.md
Title: Security in HDInsight on AKS description: An introduction to security with managed identity from Microsoft Entra ID in HDInsight on AKS.-+ Last updated 05/11/2024
hdinsight-aks Control Egress Traffic From Hdinsight On Aks Clusters https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/control-egress-traffic-from-hdinsight-on-aks-clusters.md
Title: Control network traffic from HDInsight on AKS Cluster pools and cluster description: A guide to configure and manage inbound and outbound network connections from HDInsight on AKS.-+ Last updated 05/21/2024
hdinsight-aks Create Cluster Error Dictionary https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/create-cluster-error-dictionary.md
Title: Create a cluster - error dictionary in Azure HDInsight on AKS description: Learn how to troubleshoot errors that occur when creating Azure HDInsight on AKS clusters-+ Last updated 08/31/2023
hdinsight-aks Create Cluster Using Arm Template Script https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/create-cluster-using-arm-template-script.md
Title: Export ARM template in Azure HDInsight on AKS description: How to create an ARM template of a cluster in Azure HDInsight on AKS-+ Last updated 02/12/2024
hdinsight-aks Create Cluster Using Arm Template https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/create-cluster-using-arm-template.md
Title: Export cluster ARM template description: Learn how to Create cluster ARM template using Azure CLI-+ Last updated 02/12/2024
hdinsight-aks Customize Clusters https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/customize-clusters.md
Title: Customize Azure HDInsight on AKS clusters description: Add custom components to HDInsight on AKS clusters by using script actions. Script actions are Bash scripts that can be used to customize the cluster configuration. -+ Last updated 08/29/2023
hdinsight-aks Faq https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/faq.md
Title: HDInsight on AKS FAQ description: HDInsight on AKS frequently asked questions.-+ Last updated 08/29/2023
hdinsight-aks Application Mode Cluster On Hdinsight On Aks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/application-mode-cluster-on-hdinsight-on-aks.md
Title: Apache Flink® Application Mode cluster on HDInsight on AKS description: Learn about Flink® Application Mode cluster on HDInsight on AKS.-+ Last updated 03/21/2024
hdinsight-aks Assign Kafka Topic Event Message To Azure Data Lake Storage Gen2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/assign-kafka-topic-event-message-to-azure-data-lake-storage-gen2.md
Title: Write event messages into Azure Data Lake Storage Gen2 with Apache Flink® DataStream API description: Learn how to write event messages into Azure Data Lake Storage Gen2 with Apache Flink® DataStream API.-+ Last updated 03/29/2024
hdinsight-aks Azure Databricks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/azure-databricks.md
Title: Incorporate Apache Flink® DataStream into Azure Databricks Delta Lake Table description: Learn about incorporate Apache Flink® DataStream into Azure Databricks Delta Lake Table.-+ Last updated 04/10/2024
hdinsight-aks Azure Iot Hub https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/azure-iot-hub.md
Title: Process real-time IoT data on Apache Flink® with Azure HDInsight on AKS description: How to integrate Azure IoT Hub and Apache Flink®.-+ Last updated 04/04/2024
hdinsight-aks Azure Service Bus Demo https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/azure-service-bus-demo.md
Title: Use Apache Flink on HDInsight on AKS with Azure Service Bus description: Use Apache Flink DataStream API on HDInsight on AKS with Azure Service Bus.-+ Last updated 04/02/2024
hdinsight-aks Change Data Capture Connectors For Apache Flink https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/change-data-capture-connectors-for-apache-flink.md
Title: How to perform Change Data Capture of SQL Server with Apache Flink® DataStream API and DataStream Source. description: Learn how to perform Change Data Capture of SQL Server with Apache Flink® DataStream API and DataStream Source.-+ Last updated 04/02/2024
hdinsight-aks Cosmos Db For Apache Cassandra https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/cosmos-db-for-apache-cassandra.md
Title: Using Azure Cosmos DB for Apache Cassandra® with HDInsight on AKS for Apache Flink® description: Learn how to Sink Apache Kafka® message into Azure Cosmos DB for Apache Cassandra®, with Apache Flink® running on HDInsight on AKS.-+ Last updated 04/02/2024
hdinsight-aks Create Kafka Table Flink Kafka Sql Connector https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/create-kafka-table-flink-kafka-sql-connector.md
Title: How to create Apache Kafka table on an Apache Flink® on HDInsight on AKS description: Learn how to create Apache Kafka table on Apache Flink®.-+ Last updated 03/14/2024
hdinsight-aks Datastream Api Mongodb https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/datastream-api-mongodb.md
Title: Use DataStream API for MongoDB as a source and sink with Apache Flink® description: Learn how to use Apache Flink® DataStream API on HDInsight on AKS for MongoDB as a source and sink.-+ Last updated 03/22/2024
hdinsight-aks Fabric Lakehouse Flink Datastream Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/fabric-lakehouse-flink-datastream-api.md
Title: Microsoft Fabric with Apache Flink® in HDInsight on AKS description: An introduction to lakehouse on Microsoft Fabric with Apache Flink® on HDInsight on AKS-+ Last updated 03/23/2024
hdinsight-aks Flink Catalog Delta Hive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-catalog-delta-hive.md
Title: Table API and SQL - Use Delta Catalog type with Hive with Apache Flink® on Azure HDInsight on AKS description: Learn about how to create Delta Catalog with Apache Flink® on Azure HDInsight on AKS-+ Last updated 03/29/2024
hdinsight-aks Flink Catalog Iceberg Hive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-catalog-iceberg-hive.md
Title: Table API and SQL - Use Iceberg Catalog type with Hive in Apache Flink® on HDInsight on AKS description: Learn how to create Iceberg Catalog in Apache Flink® on HDInsight on AKS.-+ Last updated 04/19/2024
hdinsight-aks Flink Cluster Configuration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-cluster-configuration.md
Title: Troubleshoot Apache Flink® on HDInsight on AKS description: Learn to troubleshoot Apache Flink® cluster configurations on HDInsight on AKS-+ Last updated 09/26/2023
hdinsight-aks Flink Configuration Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-configuration-management.md
Title: Apache Flink® Configuration Management in HDInsight on AKS description: Learn about Apache Flink Configuration Management in HDInsight on AKS.-+ Last updated 04/25/2024
hdinsight-aks Flink Create Cluster Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-create-cluster-portal.md
Title: Create an Apache Flink® cluster in HDInsight on AKS using Azure portal description: Creating an Apache Flink cluster in HDInsight on AKS with Azure portal.-+ Last updated 12/28/2023
hdinsight-aks Flink How To Setup Event Hub https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-how-to-setup-event-hub.md
Title: How to connect Apache Flink® on HDInsight on AKS with Azure Event Hubs for Apache Kafka® description: Learn how to connect Apache Flink® on HDInsight on AKS with Azure Event Hubs for Apache Kafka®-+ Last updated 04/02/2024
hdinsight-aks Flink Job Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-job-management.md
Title: Apache Flink® job management in HDInsight on AKS description: HDInsight on AKS provides a feature to manage and submit Apache Flink jobs directly through the Azure portal.-+ Last updated 04/01/2024
hdinsight-aks Flink Job Orchestration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-job-orchestration.md
Title: Azure Data Factory Workflow Orchestration Manager (powered by Apache Airflow) with Apache Flink® on HDInsight on AKS description: Learn how to perform Apache Flink® job orchestration using Azure Data Factory Workflow Orchestration Manager-+ Last updated 10/28/2023
hdinsight-aks Flink Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-overview.md
Title: What is Apache Flink® in Azure HDInsight on AKS? (Preview) description: An introduction to Apache Flink® in Azure HDInsight on AKS.-+ Last updated 10/28/2023
hdinsight-aks Flink Table Api And Sql https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-table-api-and-sql.md
Title: Table API and SQL in Apache Flink® clusters on HDInsight on AKS description: Learn about Table API and SQL in Apache Flink® clusters on HDInsight on AKS-+ Last updated 10/27/2023
hdinsight-aks Flink Web Ssh On Portal To Flink Sql https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/flink-web-ssh-on-portal-to-flink-sql.md
Title: How to enter the Apache Flink® CLI client using Secure Shell (SSH) on HDInsight on AKS clusters with Azure portal description: How to enter Apache Flink® SQL & DStream CLI client using webssh on HDInsight on AKS clusters with Azure portal.-+ Last updated 02/04/2024
hdinsight-aks Fraud Detection Flink Datastream Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/fraud-detection-flink-datastream-api.md
Title: Fraud detection with the Apache Flink® DataStream API description: Learn about Fraud detection with the Apache Flink® DataStream API.-+ Last updated 04/09/2024
hdinsight-aks Hive Dialect Flink https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/hive-dialect-flink.md
Title: Hive dialect in Apache Flink® clusters on HDInsight on AKS description: How to use Hive dialect in Apache Flink® clusters on HDInsight on AKS.-+ Last updated 04/17/2024
hdinsight-aks Integration Of Azure Data Explorer https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/integration-of-azure-data-explorer.md
Title: Integration of Azure Data Explorer and Apache Flink® description: Integration of Azure Data Explorer and Apache Flink® in HDInsight on AKS-+ Last updated 09/18/2023
hdinsight-aks Join Stream Kafka Table Filesystem https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/join-stream-kafka-table-filesystem.md
Title: Enrich the events from Apache Kafka® with the attributes from FileSystem with Apache Flink® description: Learn how to join stream from Kafka with table from fileSystem using Apache Flink® DataStream API.-+ Last updated 03/14/2024
hdinsight-aks Monitor Changes Postgres Table Flink https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/monitor-changes-postgres-table-flink.md
Title: Change Data Capture (CDC) of PostgreSQL table using Apache Flink® description: Learn how to perform CDC on PostgreSQL table using Apache Flink® -+ Last updated 03/29/2024
hdinsight-aks Process And Consume Data https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/process-and-consume-data.md
Title: Using Apache Kafka® on HDInsight with Apache Flink® on HDInsight on AKS description: Learn how to use Apache Kafka® on HDInsight with Apache Flink® on HDInsight on AKS-+ Last updated 04/03/2024
hdinsight-aks Sink Kafka To Kibana https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/sink-kafka-to-kibana.md
Title: Use Elasticsearch with Apache Flink on HDInsight on AKS description: This article shows you how to use Elasticsearch along with Apache Flink on HDInsight on Azure Kubernetes Service.-+ Last updated 04/09/2024
hdinsight-aks Sink Sql Server Table Using Flink Sql https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/sink-sql-server-table-using-flink-sql.md
Title: Change Data Capture (CDC) of SQL Server using Apache Flink® description: Learn how to perform CDC of SQL Server using Apache Flink®-+ Last updated 10/27/2023
hdinsight-aks Start Sql Client Cli Gateway Mode https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/start-sql-client-cli-gateway-mode.md
Title: Start SQL Client CLI in gateway mode in Apache Flink Cluster 1.17.0 on HDInsight on AKS. description: Learn how to start SQL Client CLI in gateway mode in Apache Flink Cluster 1.17.0 on HDInsight on AKS.-+ Last updated 04/17/2024
hdinsight-aks Use Apache Nifi With Datastream Api https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-apache-nifi-with-datastream-api.md
Title: Use Apache NiFi with HDInsight on AKS clusters running Apache Flink® to publish into ADLS Gen2 description: Learn how to use Apache NiFi to consume processed Apache Kafka® topic from Apache Flink® on HDInsight on AKS clusters and publish into ADLS Gen2.-+ Last updated 03/25/2024
hdinsight-aks Use Azure Pipelines To Run Flink Jobs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-azure-pipelines-to-run-flink-jobs.md
Title: How to use Azure Pipelines with Apache Flink® on HDInsight on AKS description: Learn how to use Azure Pipelines with Apache Flink®-+ Last updated 10/27/2023
hdinsight-aks Use Flink Cli To Submit Jobs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-flink-cli-to-submit-jobs.md
Title: How to use Apache Flink® CLI to submit jobs description: Learn how to use Apache Flink® CLI to submit jobs-+ Last updated 10/27/2023
hdinsight-aks Use Flink Delta Connector https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-flink-delta-connector.md
Title: How to use Apache Flink® on HDInsight on AKS with Flink/Delta connector description: Learn how to use Flink/Delta Connector.-+ Last updated 04/25/2024
hdinsight-aks Use Flink To Sink Kafka Message Into Hbase https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-flink-to-sink-kafka-message-into-hbase.md
Title: Write messages to Apache HBase® with Apache Flink® DataStream API description: Learn how to write messages to Apache HBase with Apache Flink DataStream API.-+ Last updated 05/01/2024
hdinsight-aks Use Hive Catalog https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-hive-catalog.md
Title: Use Hive Catalog, Hive Read & Write demo on Apache Flink® description: Learn how to use Hive Catalog, Hive Read & Write demo on Apache Flink® on HDInsight on AKS-+ Last updated 03/29/2024
hdinsight-aks Use Hive Metastore Datastream https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/flink/use-hive-metastore-datastream.md
Title: Use Hive Metastore with Apache Flink® DataStream API description: Use Hive Metastore with Apache Flink® DataStream API-+ Last updated 03/29/2024
hdinsight-aks Hdinsight Aks Support Help https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/hdinsight-aks-support-help.md
Title: Support and troubleshooting for HDInsight on AKS description: This article provides support and troubleshooting options for HDInsight on AKS.-+ Last updated 10/06/2023
hdinsight-aks Hdinsight On Aks Autoscale Clusters https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/hdinsight-on-aks-autoscale-clusters.md
Title: Automatically scale Azure HDInsight on AKS clusters description: Use the Auto scale feature to automatically scale Azure HDInsight clusters on AKS based on a schedule or load based metrics.-+ Last updated 02/06/2024
hdinsight-aks Hdinsight On Aks Manage Authorization Profile https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/hdinsight-on-aks-manage-authorization-profile.md
Title: Manage cluster access description: How to manage cluster access in HDInsight on AKS-+ Last updated 08/4/2023
hdinsight-aks How To Azure Monitor Integration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/how-to-azure-monitor-integration.md
Title: How to integrate with Azure Monitor description: Learn how to integrate with Azure Monitoring.-+ Last updated 08/29/2023
hdinsight-aks In Place Upgrade https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/in-place-upgrade.md
Title: Upgrade your HDInsight on AKS clusters and cluster pools description: Upgrade your HDInsight on AKS clusters and cluster pools.-+ Last updated 03/22/2024
hdinsight-aks Manage Cluster Pool https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/manage-cluster-pool.md
Title: Manage cluster pools description: Manage cluster pools in HDInsight on AKS.-+ Last updated 08/29/2023
hdinsight-aks Manage Cluster https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/manage-cluster.md
Title: Manage clusters description: Manage clusters in HDInsight on AKS.-+ Last updated 08/29/2023
hdinsight-aks Manage Script Actions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/manage-script-actions.md
Title: Manage script actions on Azure HDInsight on AKS clusters description: An introduction on how to manage script actions in Azure HDInsight on AKS.-+ Last updated 08/29/2023
hdinsight-aks Manual Scale https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/manual-scale.md
Title: Manual scale description: How to manually scale in HDInsight on AKS.-+ Last updated 02/06/2024
hdinsight-aks Monitor With Prometheus Grafana https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/monitor-with-prometheus-grafana.md
Title: Monitoring with Azure Managed Prometheus and Grafana description: Learn how to use monitor With Azure Managed Prometheus and Grafana-+ Last updated 11/07/2023
hdinsight-aks Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/overview.md
Title: What is Azure HDInsight on AKS? (Preview) description: An introduction to Azure HDInsight on AKS. -+ Last updated 05/28/2024
hdinsight-aks Powershell Cluster Create https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/powershell-cluster-create.md
Title: Manage HDInsight on AKS clusters using PowerShell (Preview) description: Manage HDInsight on AKS clusters using PowerShell.-+ Last updated 12/11/2023
hdinsight-aks Preview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/preview.md
Title: HDInsight on AKS preview information description: This article explains what public preview mean in HDInsight on AKS.-+ Last updated 09/05/2023
hdinsight-aks Quickstart Create Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/quickstart-create-cli.md
Title: 'Quickstart: Create HDInsight on AKS cluster pool using Azure CLI' description: Learn how to use Azure CLI to create an HDInsight on AKS cluster pool.-+ Last updated 06/18/2024
hdinsight-aks Quickstart Create Cluster https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/quickstart-create-cluster.md
Title: 'Quickstart: Create an HDInsight on AKS cluster pool using Azure portal' description: This quickstart shows you how to create a cluster pool for Azure HDInsight on AKS.-+ Last updated 06/18/2024
hdinsight-aks Quickstart Create Powershell https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/quickstart-create-powershell.md
Title: 'Quickstart: Create HDInsight on AKS cluster pool using Azure PowerShell' description: Learn how to use Azure PowerShell to create an HDInsight on AKS cluster pool.-+ Last updated 06/19/2024
hdinsight-aks Quickstart Get Started https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/quickstart-get-started.md
Title: One-click deployment for Azure HDInsight on AKS description: How to create cluster pool and cluster with one-click deployment on Azure HDInsight on AKS.-+ Last updated 08/29/2023
hdinsight-aks Quickstart Prerequisites Resources https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/quickstart-prerequisites-resources.md
Title: Resource prerequisites for Azure HDInsight on AKS description: Prerequisite steps to complete for Azure resources before working with HDInsight on AKS. -+ Last updated 04/08/2024
hdinsight-aks Quickstart Prerequisites Subscription https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/quickstart-prerequisites-subscription.md
Title: Subscription prerequisites for Azure HDInsight on AKS. description: Prerequisite steps to complete on your subscription before working with Azure HDInsight on AKS. -+ Last updated 05/06/2024
hdinsight-aks Hdinsight Aks Release Notes Archive https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/release-notes/hdinsight-aks-release-notes-archive.md
Title: Archived release notes for Azure HDInsight on AKS description: Archived release notes for Azure HDInsight on AKS. Get development tips and details for Trino, Flink, and Spark.-+ Last updated 08/05/2024
hdinsight-aks Hdinsight Aks Release Notes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/release-notes/hdinsight-aks-release-notes.md
Title: Release notes for Azure HDInsight on AKS description: Latest release notes for Azure HDInsight on AKS. Get development tips and details for Trino, Flink, Spark, and more.-+ Last updated 08/05/2024
hdinsight-aks Required Outbound Traffic https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/required-outbound-traffic.md
Title: Outbound traffic on HDInsight on AKS description: Learn required outbound traffic on HDInsight on AKS. -+ Last updated 03/26/2024
hdinsight-aks Rest Api Cluster Creation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/rest-api-cluster-creation.md
Title: Manage HDInsight on AKS clusters using Azure REST API description: Manage HDInsight on AKS clusters using Azure REST API -+ Last updated 11/26/2023
hdinsight-aks Sdk Cluster Creation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/sdk-cluster-creation.md
Title: Manage HDInsight on AKS clusters using .NET SDK (Preview) description: Manage HDInsight on AKS clusters using .NET SDK.-+ Last updated 11/23/2023
hdinsight-aks Secure Traffic By Firewall Azure Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/secure-traffic-by-firewall-azure-portal.md
Title: Use firewall to restrict outbound traffic on HDInsight on AKS, using Azure portal description: Learn how to secure traffic using firewall on HDInsight on AKS using Azure portal-+ Last updated 08/3/2023
hdinsight-aks Secure Traffic By Firewall https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/secure-traffic-by-firewall.md
Title: Use firewall to restrict outbound traffic on HDInsight on AKS using Azure CLI description: Learn how to secure traffic using firewall on HDInsight on AKS using Azure CLI-+ Last updated 02/19/2024
hdinsight-aks Secure Traffic By Nsg https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/secure-traffic-by-nsg.md
Title: Use NSG to restrict traffic on HDInsight on AKS description: Learn how to secure traffic by NSGs on HDInsight on AKS -+ Last updated 08/3/2023
hdinsight-aks Service Health https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/service-health.md
Title: Manage service health. description: Learn how to check the health of the services running in a cluster.-+ Last updated 08/29/2023
hdinsight-aks Azure Hdinsight Spark On Aks Delta Lake https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/azure-hdinsight-spark-on-aks-delta-lake.md
Title: How to use Delta Lake in Azure HDInsight on AKS with Apache SparkΓäó cluster. description: Learn how to use Delta Lake scenario in Azure HDInsight on AKS with Apache SparkΓäó cluster. -+ Last updated 10/27/2023
hdinsight-aks Configuration Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/configuration-management.md
Title: Configuration management in HDInsight on AKS with Apache SparkΓäó description: Learn how to perform Configuration management in HDInsight on AKS with Apache SparkΓäó cluster-+ Last updated 10/19/2023
hdinsight-aks Connect To One Lake Storage https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/connect-to-one-lake-storage.md
Title: Connect to OneLake Storage description: Learn how to connect to OneLake storage-+ Last updated 10/27/2023
hdinsight-aks Create Spark Cluster https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/create-spark-cluster.md
Title: How to create Spark cluster in HDInsight on AKS description: Learn how to create Spark cluster in HDInsight on AKS-+ Last updated 12/28/2023
hdinsight-aks Hdinsight On Aks Spark Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/hdinsight-on-aks-spark-overview.md
Title: What is Apache SparkΓäó in HDInsight on AKS? (Preview) description: An introduction to Apache SparkΓäó in HDInsight on AKS-+ Last updated 10/27/2023
hdinsight-aks Library Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/library-management.md
Title: Library Management in Azure HDInsight on AKS description: Learn how to use Library Management in Azure HDInsight on AKS with Spark -+ Last updated 08/29/2023
hdinsight-aks Spark Job Orchestration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/spark-job-orchestration.md
Title: Azure Data Factory Workflow Orchestration Manager (powered by Apache Airflow) with Apache Spark® on HDInsight on AKS description: Learn how to perform Apache Spark® job orchestration using Azure Data Factory Workflow Orchestration Manager-+ Last updated 11/28/2023
hdinsight-aks Submit Manage Jobs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/submit-manage-jobs.md
Title: How to submit and manage jobs on an Apache SparkΓäó cluster in Azure HDInsight on AKS description: Learn how to submit and manage jobs on an Apache SparkΓäó cluster in HDInsight on AKS-+ Last updated 10/27/2023
hdinsight-aks Use Hive Metastore https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/use-hive-metastore.md
Title: How to use Hive metastore in Apache SparkΓäó description: Learn how to use Hive metastore in Apache SparkΓäó-+ Last updated 10/27/2023
hdinsight-aks Use Machine Learning Notebook On Spark https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/spark/use-machine-learning-notebook-on-spark.md
Title: How to use Azure Machine Learning Notebook on Spark description: Learn how to Azure Machine Learning notebook on Spark-+ Last updated 08/29/2023
hdinsight-aks Subscribe To Release Notes Repo https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/subscribe-to-release-notes-repo.md
Title: Subscribe to GitHub release notes repo description: Learn how to subscribe to HDInsight on AKS GitHub release notes repo-+ Last updated 11/20/2023
hdinsight-aks Trademarks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trademarks.md
Title: Trademarks description: The Trademark and Brand Guidelines detail how you can help us protect MicrosoftΓÇÖs brand assets.-+ Last updated 10/26/2023
hdinsight-aks Configure Azure Active Directory Login For Superset https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/configure-azure-active-directory-login-for-superset.md
Title: Configure Microsoft Entra ID OAuth2 login for Apache Superset description: Learn how to configure Microsoft Entra ID OAuth2 login for Superset-+ Last updated 08/29/2023
hdinsight-aks Configure Ingress https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/configure-ingress.md
Title: Expose Superset to the internet description: Learn how to expose Superset to the internet-+ Last updated 12/11/2023
hdinsight-aks Role Based Access Control https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/role-based-access-control.md
Title: Configure Role Based Access Control description: How to provide Role Based Access Control-+ Last updated 08/29/2023
hdinsight-aks Trino Add Catalogs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-add-catalogs.md
Title: Configure catalogs in Azure HDInsight on AKS description: Add catalogs to an existing Trino cluster in HDInsight on AKS-+ Last updated 10/19/2023
hdinsight-aks Trino Add Delta Lake Catalog https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-add-delta-lake-catalog.md
Title: Configure Delta Lake catalog description: How to configure Delta Lake catalog in a Trino cluster.-+ Last updated 06/19/2024
hdinsight-aks Trino Add Iceberg Catalog https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-add-iceberg-catalog.md
Title: Configure Iceberg catalog description: How to configure iceberg catalog in a Trino cluster.-+ Last updated 06/19/2024
hdinsight-aks Trino Airflow https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-airflow.md
Title: Use Apache Airflow with Trino cluster description: How to create Apache Airflow DAG to connect to Trino cluster with HDInsight on AKS-+ Last updated 10/19/2023
hdinsight-aks Trino Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-authentication.md
Title: Client authentication description: How to authenticate to Trino cluster-+ Last updated 10/19/2023
hdinsight-aks Trino Caching https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-caching.md
Title: Configure caching description: Learn how to configure caching in Trino-+ Last updated 11/03/2023
hdinsight-aks Trino Catalog Glue https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-catalog-glue.md
Title: Query data from AWS S3 and with AWS Glue description: How to configure Trino catalogs for HDInsight on AKS with AWS Glue as metastore-+ Last updated 10/19/2023
hdinsight-aks Trino Configuration Troubleshoot https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-configuration-troubleshoot.md
Title: Troubleshoot cluster configuration description: How to understand and fix errors for Trino clusters for HDInsight on AKS.-+ Last updated 08/29/2023
hdinsight-aks Trino Connect To Metastore https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-connect-to-metastore.md
Title: Add external Hive metastore database description: Connecting to the HIVE metastore for Trino clusters in HDInsight on AKS-+ Last updated 02/21/2024
hdinsight-aks Trino Connectors https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-connectors.md
Title: Trino connectors description: Connectors available for Trino.-+ Last updated 08/29/2023
hdinsight-aks Trino Create Cluster https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-create-cluster.md
Title: Create a Trino cluster - Azure portal description: Creating a Trino cluster in HDInsight on AKS on the Azure portal.-+ Last updated 12/28/2023
hdinsight-aks Trino Create Delta Lake Tables Synapse https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-create-delta-lake-tables-synapse.md
Title: Read Delta Lake tables (Synapse or External Location) description: How to read external tables created in Synapse or other systems into a Trino cluster.-+ Last updated 10/19/2023
hdinsight-aks Trino Custom Plugins https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-custom-plugins.md
Title: Add custom plugins in Azure HDInsight on AKS description: Add custom plugins to an existing Trino cluster in HDInsight on AKS-+ Last updated 10/19/2023
hdinsight-aks Trino Fault Tolerance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-fault-tolerance.md
Title: Configure fault-tolerance description: Learn how to configure fault-tolerance in Trino with HDInsight on AKS.-+ Last updated 10/19/2023
hdinsight-aks Trino Jvm Configuration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-jvm-configuration.md
Title: Modifying JVM heap settings description: How to modify initial and max heap size for Trino pods.-+ Last updated 10/19/2023
hdinsight-aks Trino Miscellaneous Files https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-miscellaneous-files.md
Title: Using miscellaneous files description: Using miscellaneous files with Trino clusters in HDInsight on AKS-+ Last updated 10/19/2023
hdinsight-aks Trino Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-overview.md
Title: What is Trino? (Preview) description: An introduction to Trino.-+ Last updated 08/29/2023
hdinsight-aks Trino Query Logging https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-query-logging.md
Title: Query logging description: Log query lifecycle events in Trino cluster-+ Last updated 10/19/2023
hdinsight-aks Trino Scan Stats https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-scan-stats.md
Title: Use scan statistics description: How to enable, understand and query scan statistics using query log tables for Trino clusters for HDInsight on AKS.-+ Last updated 10/19/2023
hdinsight-aks Trino Service Configuration https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-service-configuration.md
Title: Trino cluster configuration description: How to perform service configuration for Trino clusters for HDInsight on AKS.-+ Last updated 10/19/2023
hdinsight-aks Trino Sharded Sql Connector https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-sharded-sql-connector.md
Title: Sharded SQL connector description: How to configure and use sharded sql connector.-+ Last updated 02/06/2024
hdinsight-aks Trino Superset https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-superset.md
Title: Use Apache Superset with Trino on HDInsight on AKS description: Deploying Superset and connecting to Trino with HDInsight on AKS-+ Last updated 10/19/2023
hdinsight-aks Trino Ui Command Line Interface https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-ui-command-line-interface.md
Title: Trino CLI description: Using Trino via CLI-+ Last updated 10/19/2023
hdinsight-aks Trino Ui Dbeaver https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-ui-dbeaver.md
Title: Trino with DBeaver description: Using Trino in DBeaver.-+ Last updated 10/19/2023
hdinsight-aks Trino Ui Jdbc Driver https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-ui-jdbc-driver.md
Title: Trino JDBC driver description: Using the Trino JDBC driver.-+ Last updated 10/19/2023
hdinsight-aks Trino Ui Web Ssh https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-ui-web-ssh.md
Title: Trino Web SSH description: Using Trino in Web SSH-+ Last updated 08/29/2023
hdinsight-aks Trino Ui https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/trino/trino-ui.md
Title: Trino UI description: Using Trino UI-+ Last updated 10/19/2023
hdinsight-aks Versions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/versions.md
Title: Versioning description: Versioning in HDInsight on AKS.-+ Last updated 03/27/2024
hdinsight-aks Virtual Machine Recommendation Capacity Planning https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/virtual-machine-recommendation-capacity-planning.md
Title: Azure Virtual Machine recommendations and capacity planning description: Default and minimum virtual machine size recommendations and capacity planning for HDInsight on AKS.-+ Last updated 10/05/2023
hdinsight-aks Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight-aks/whats-new.md
Title: What's new in HDInsight on AKS? (Preview) description: An introduction to new concepts in HDInsight on AKS that aren't in HDInsight.-+ Last updated 03/24/2024
hdinsight Ranger Policies For Spark https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/hdinsight/spark/ranger-policies-for-spark.md
Title: Configure Apache Ranger policies for Spark SQL in HDInsight with Enterprise Security Package. description: This article describes how to configure Ranger policies for Spark SQL with Enterprise Security Package.-+ Last updated 03/07/2024
iot-dps Quick Setup Auto Provision https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/iot-dps/quick-setup-auto-provision.md
Title: Quickstart - Set up Device Provisioning Service in portal
+ Title: Quickstart - Set up in portal
description: Quickstart - Set up the Azure IoT Hub Device Provisioning Service (DPS) in the Microsoft Azure portal Previously updated : 04/06/2023 Last updated : 08/16/2024
-# Quickstart: Set up the IoT Hub Device Provisioning Service with the Azure portal
+# Quickstart: Set up IoT Hub Device Provisioning Service with the Azure portal
-In this quickstart, you learn how to set up the IoT Hub Device Provisioning Service in the Azure portal. The IoT Hub Device Provisioning Service enables zero-touch, just-in-time device provisioning to any IoT hub. The Device Provisioning Service enables customers to provision millions of IoT devices in a secure and scalable manner, without requiring human intervention. Azure IoT Hub Device Provisioning Service supports IoT devices with TPM, symmetric key, and X.509 certificate authentications. For more information, please refer to [IoT Hub Device Provisioning Service overview](about-iot-dps.md).
+In this quickstart, you learn how to set up Azure IoT Hub Device Provisioning Service in the Azure portal. Device Provisioning Service enables zero-touch, just-in-time device provisioning to any IoT hub. The Device Provisioning Service enables customers to provision millions of IoT devices in a secure and scalable manner, without requiring human intervention. Azure IoT Hub Device Provisioning Service supports IoT devices with TPM, symmetric key, and X.509 certificate authentications.
-To provision your devices, you first perform the following steps:
+Before you can provision your devices, you first perform the following steps:
> [!div class="checklist"] > * Use the Azure portal to create an IoT hub
If you don't have an Azure subscription, create a [free Azure account](https://a
## Create a new IoT Hub Device Provisioning Service instance
-1. In the Azure portal, select the **+ Create a resource** button.
+1. In the Azure portal, select **Create a resource**.
1. From the **Categories** menu, select **Internet of Things**, and then select **IoT Hub Device Provisioning Service**.
If you don't have an Azure subscription, create a [free Azure account](https://a
| Property | Value | | | | | **Subscription** | Select the subscription to use for your Device Provisioning Service instance. |
- | **Resource group** | This field allows you to create a new resource group, or choose an existing one to contain the new instance. Choose the same resource group that contains the Iot hub you created in the previous steps. By putting all related resources in a group together, you can manage them together. For example, deleting the resource group deletes all resources contained in that group. For more information, see [Manage Azure Resource Manager resource groups](../azure-resource-manager/management/manage-resource-groups-portal.md). |
+ | **Resource group** | This field allows you to create a new resource group, or choose an existing one to contain the new instance. Choose the same resource group that contains the IoT hub that you created in the previous steps. By putting all related resources in a group together, you can manage them together. |
| **Name** | Provide a unique name for your new Device Provisioning Service instance. If the name you enter is available, a green check mark appears. | | **Region** | Select a location that's close to your devices. For resiliency and reliability, we recommend deploying to one of the regions that support [Availability Zones](iot-dps-ha-dr.md). |
- :::image type="content" source="./media/quick-setup-auto-provision/create-iot-dps-portal.png" alt-text="Screenshot showing the Basics tab of the IoT Hub device provisioning service. Enter basic information about your Device Provisioning Service instance in the portal blade.":::
+ :::image type="content" source="./media/quick-setup-auto-provision/create-iot-dps-portal.png" alt-text="Screenshot showing the Basics tab of the IoT Hub device provisioning service. Enter basic information about your Device Provisioning Service instance in the portal.":::
1. Select **Review + create** to validate your provisioning service.
If you don't have an Azure subscription, create a [free Azure account](https://a
## Link the IoT hub and your Device Provisioning Service instance
-In this section, you add a configuration to the Device Provisioning Service instance. This configuration sets the IoT hub for which the instance provisions IoT devices.
+In this section, you add a configuration to the Device Provisioning Service instance. This configuration sets the IoT hub to which the instance provisions IoT devices.
-1. In the **Settings** menu, select **Linked IoT hubs**.
+1. In the **Settings** menu of your Device Provisioning Service instance, select **Linked IoT hubs**.
-1. Select **+ Add**.
+1. Select **Add**.
1. On the **Add link to IoT hub** panel, provide the following information:
In this section, you add a configuration to the Device Provisioning Service inst
| **IoT hub** | Select the IoT hub to link with your new Device Provisioning System instance. | | **Access Policy** | Select **iothubowner (RegistryWrite, ServiceConnect, DeviceConnect)** as the credentials for establishing the link with the IoT hub. |
- :::image type="content" source="./media/quick-setup-auto-provision/link-iot-hub-to-dps-portal.png" alt-text="Screenshot showing how to link an IoT hub to the Device Provisioning Service instance in the portal blade.":::
+ :::image type="content" source="./media/quick-setup-auto-provision/link-iot-hub-to-dps-portal.png" alt-text="Screenshot showing how to link an IoT hub to the Device Provisioning Service instance in the portal.":::
1. Select **Save**.
-1. Select **Refresh**. You should now see the selected hub under the **Linked IoT hubs** blade.
+1. Select **Refresh**. You should now see the selected hub under the list of **Linked IoT hubs**.
## Clean up resources
The rest of the Device Provisioning Service quickstarts and tutorials use the re
To clean up resources in the Azure portal:
-1. From the left-hand menu in the Azure portal, select **All resources**.
+1. In the Azure portal, navigate to the resource group that you used in this quickstart.
-1. Select your Device Provisioning Service instance.
+1. If you want to delete the resource group and all of the resources it contains, select **Delete resource group**.
-1. At the top of the device detail pane, select **Delete**.
-
-1. From the left-hand menu in the Azure portal, select **All resources**.
-
-1. Select your IoT hub.
-
-1. At the top of the hub detail pane, select **Delete**.
+ Otherwise, select your Device Provisioning Service instance and your IoT hub from the list of resources, then select **Delete**.
## Next steps
iot-operations Howto Deploy Dapr https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/iot-operations/create-edge-apps/howto-deploy-dapr.md
To create the yaml file, use the following component definitions:
], "env": [ { "name": "pubSubLogLevel", "value": "Information" },
- { "name": "stateStoreLogLevel", "value": "Information" }
+ { "name": "stateStoreLogLevel", "value": "Information" },
+ { "name": "defaultLogLevel", "value": "Warning" }
] } spec:
iot-operations Howto Develop Dapr Apps https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/iot-operations/create-edge-apps/howto-develop-dapr-apps.md
The following definition components might require customization to your specific
> | `template:metadata:annotations:dapr.io/app-port` | Tells Dapr which port your application is listening on. If your application us not using this feature (such as a pubsub subscription), then remove this line | > | `volumes:mqtt-client-token` | The System Authentication Token used for authenticating the Dapr pluggable components with the MQTT broker | > | `volumes:aio-ca-trust-bundle` | The chain of trust to validate the MQTT broker TLS cert. This defaults to the test certificate deployed with Azure IoT Operations |
-> | `containers:mq-dapr-app` | The Dapr application container you want to deploy |
+> | `containers:name` | A name given to your application container |
+> | `containers:image` | The application container you want to deploy |
> [!CAUTION] > If your Dapr application is not listening for traffic from the Dapr sidecar, then remove the `dapr.io/app-port` and `dapr.io/app-protocol` [annotations](https://docs.dapr.io/reference/arguments-annotations-overview/) otherwise the Dapr sidecar will fail to initialize.
iot-operations Tutorial Event Driven With Dapr https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/iot-operations/create-edge-apps/tutorial-event-driven-with-dapr.md
To verify the MQTT bridge is working, deploy an MQTT client to the cluster.
## Optional - Create the Dapr application
-ThIs tutorial uses a prebuilt container of the Dapr application. If you would like to modify and build the code yourself, follow these steps:
+This tutorial uses a prebuilt container of the Dapr application. If you would like to modify and build the code yourself, follow these steps:
### Prerequisites
logic-apps Azure Arc Enabled Logic Apps Create Deploy Workflows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/azure-arc-enabled-logic-apps-create-deploy-workflows.md
For example, this cluster can be Azure Kubernetes Service, bare-metal Kubernetes
For more information, review the following documentation: - [What is Azure Arc-enabled Logic Apps?](azure-arc-enabled-logic-apps-overview.md)-- [Single-tenant versus multitenant and integration service environment](../logic-apps/single-tenant-overview-compare.md)
+- [Single-tenant versus multitenant in Azure Logic Apps](../logic-apps/single-tenant-overview-compare.md)
- [Azure Arc overview](../azure-arc/overview.md) - [Azure Kubernetes Service overview](/azure/aks/intro-kubernetes) - [What is Azure Arc-enabled Kubernetes?](../azure-arc/kubernetes/overview.md)
The following example describes a sample Azure Arc-enabled Logic Apps resource d
}, { "name": "FUNCTIONS_WORKER_RUNTIME",
- "value": "node"
+ "value": "dotnet"
}, { "name": "AzureWebJobsStorage",
The following example describes a sample Azure Arc-enabled Logic Apps resource d
}, { "name": "FUNCTIONS_WORKER_RUNTIME",
- "value": "node"
+ "value": "dotnet"
}, { "name": "AzureWebJobsStorage",
The following example describes a sample Azure Arc-enabled Logic Apps resource d
} ``` + <a name="include-app-service-plan"></a> ### Include App Service plan with deployment
logic-apps Azure Arc Enabled Logic Apps Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/azure-arc-enabled-logic-apps-overview.md
With Azure Arc-enabled Logic Apps, you can develop and run single-tenant based l
For more information, review the following documentation: - [What is Azure Logic Apps?](../logic-apps/logic-apps-overview.md)-- [Single-tenant versus other Logic Apps environments](../logic-apps/single-tenant-overview-compare.md)
+- [Single-tenant versus multitenant in Azure Logic Apps](../logic-apps/single-tenant-overview-compare.md)
- [Azure Arc overview](../azure-arc/overview.md) - [Azure Kubernetes Service overview](/azure/aks/intro-kubernetes) - [What is Azure Arc-enabled Kubernetes?](../azure-arc/kubernetes/overview.md)
For more information, review the following documentation:
With Azure Arc-enabled Logic Apps, you can create and deploy logic app workflows in the same way as in the single-tenant experience for Azure Logic Apps. You also gain more control and flexibility when you have logic apps running on a Kubernetes infrastructure that you operate and manage.
-Minor differences exist between the Azure Arc and single-tenant Logic Apps experiences for creating, designing, and deploying logic apps. When you use Azure Arc-enabled Logic Apps, the major difference is that your logic apps run in a *custom location*. This location is mapped to an Azure Arc-enabled Kubernetes cluster where you have installed and enabled the Azure App Service platform extensions bundle.
+Minor differences exist between the Azure Arc and single-tenant Azure Logic Apps experiences for creating, designing, and deploying logic apps. When you use Azure Arc-enabled Logic Apps, the major difference is that your logic apps run in a *custom location*. This location is mapped to an Azure Arc-enabled Kubernetes cluster where you have installed and enabled the Azure App Service platform extensions bundle.
For example, this cluster can be Azure Kubernetes Service, bare-metal Kubernetes, or another setup. The extensions bundle enables you to run platform services such as Azure Logic Apps, Azure Functions, and Azure App Service on your Kubernetes cluster. For more information, review the following documentation: -- [Single-tenant versus other Azure Logic Apps environments](../logic-apps/single-tenant-overview-compare.md)
+- [Single-tenant versus multitenant in Azure Logic Apps](../logic-apps/single-tenant-overview-compare.md)
- [Azure Kubernetes Service overview](/azure/aks/intro-kubernetes) - [What is Azure Arc-enabled Kubernetes?](../azure-arc/kubernetes/overview.md) - [Custom locations on Azure Arc-enabled Kubernetes](../azure-arc/kubernetes/conceptual-custom-locations.md)
For more information, review the following documentation:
## When to use Azure Arc-enabled Logic Apps
-Although Kubernetes provides more control and flexibility, you also have operational overhead. If you're satisfied that the Logic Apps service meets your needs, you're encouraged to continue using this service. However, consider using Azure Arc-enabled Logic Apps when you have the following scenarios:
+Although Kubernetes provides more control and flexibility, you also have operational overhead. If you're satisfied that Azure Logic Apps meets your needs, you're encouraged to continue using this service. However, consider using Azure Arc-enabled Logic Apps when you have the following scenarios:
- You already run all your apps and services on Kubernetes. You want to extend these processes and controls to all your other PaaS services. -- You want to use Logic Apps as your integration platform. However, you need fine grained networking with compute control and flexibility. You don't want to use an integration service environment (ISE) or App Service Environment (ASE).
+- You want to use Azure Logic Apps as your integration platform. However, you need fine grained networking with compute control and flexibility. You don't want to use an App Service Environment (ASE).
- For security reasons, you need control over where your logic apps run, for example, in your own region or in your own datacenter. -- You want to run your logic apps in multi-cloud scenarios and use the Logic Apps service as your sole integration platform for all your applications wherever they run.
+- You want to run your logic apps in multi-cloud scenarios and use Azure Logic Apps as your sole integration platform for all your applications wherever they run.
<a name="compare"></a>
This table provides a high-level comparison between the capabilities in the curr
**Capability** :::column-end::: :::column:::
- **Multi-tenant Logic Apps (Consumption)**
+ **Multitenant Azure Logic Apps (Consumption)**
:::column-end::: :::column:::
- **Single-tenant Logic Apps (Standard)**
+ **Single-tenant Azure Logic Apps (Standard)**
:::column-end::: :::column::: **Standalone containers** <br><br>**Note**: Unsupported for workflows in production environments. For fully supported containers, [create Azure Arc-enabled Logic Apps workflows](azure-arc-enabled-logic-apps-create-deploy-workflows.md) instead.
This table provides a high-level comparison between the capabilities in the curr
Management :::column-end::: :::column:::
- Fully managed Logic Apps experience
+ Fully managed Azure Logic Apps experience
:::column-end::: :::column:::
- Fully managed Logic Apps experience
+ Fully managed Azure Logic Apps experience
:::column-end::: :::column::: Not managed :::column-end::: :::column:::
- Managed Logic Apps experience with operational control at the Kubernetes level
+ Managed Azure Logic Apps experience with operational control at the Kubernetes level
:::column-end::: :::row-end::: :::row:::
logic-apps Business Continuity Disaster Recovery Guidance https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/business-continuity-disaster-recovery-guidance.md
This article provides BCDR guidance and strategies that you can apply when you b
* [Integration accounts](../logic-apps/logic-apps-enterprise-integration-create-integration-account.md) where you define and store the artifacts that logic apps use for [business-to-business (B2B) enterprise integration](../logic-apps/logic-apps-enterprise-integration-overview.md) scenarios. For example, you can [set up cross-region disaster recovery for integration accounts](../logic-apps/logic-apps-enterprise-integration-b2b-business-continuity.md).
-* [Integration service environments (ISEs)](../logic-apps/connect-virtual-network-vnet-isolated-environment-overview.md) where you create logic apps that run in an isolated Logic Apps runtime instance within an Azure virtual network. These logic apps can then access resources that are protected behind a firewall in that virtual network.
- <a name="primary-secondary-locations"></a> ## Primary and secondary locations
-Each logic app needs to specify the location that you want to use for deployment. This location is either a public region in global multi-tenant Azure, such as "West US", or an integration service environment (ISE) that you previously created and deployed into an Azure virtual network. Running logic apps in an ISE is similar to running logic apps in a global Azure region, which means your disaster recovery strategy can apply to both scenarios. However, ISEs have other considerations such as configuring access to resources that are available only to ISEs.
+Each logic app needs to specify the location that you want to use for deployment, such as an Azure region, for example, "West US". This disaster recovery strategy focuses on setting up your primary logic app to [*failover*](https://en.wikipedia.org/wiki/Failover) onto a standby or backup logic app in an alternate location where Azure Logic Apps is also available. That way, if the primary suffers losses, disruptions, or failures, the secondary can take on the work. This strategy requires that your secondary logic app and dependent resources are already deployed and ready in the alternate location.
> [!NOTE]
+>
> If your logic app also works with B2B artifacts, such as trading partners, agreements, schemas, maps, and certificates,
-> which are stored in an integration account, both your integration account and logic apps must specify the same location.
-
-This disaster recovery strategy focuses on setting up your primary logic app to [*failover*](https://en.wikipedia.org/wiki/Failover) onto a standby or backup logic app in an alternate location where Azure Logic Apps is also available. That way, if the primary suffers losses, disruptions, or failures, the secondary can take on the work. This strategy requires that your secondary logic app and dependent resources are already deployed and ready in the alternate location.
+> which are stored in an integration account, both your integration account and logic apps must use the same location.
If you follow good DevOps practices, you already use [Azure Resource Manager templates](../azure-resource-manager/management/overview.md) to define and deploy your logic apps and their dependent resources. Resource Manager templates give you the capability to use a single deployment definition and then use parameter files to provide the configuration values to use for each deployment destination. This capability means that you can deploy the same logic app to different environments, for example, development, test, and production. You can also deploy the same logic app to different Azure regions or ISEs, which support disaster recovery strategies that use [paired-regions](../availability-zones/cross-region-replication-azure.md).
For the failover strategy, your logic apps and locations must meet these require
* The secondary logic app instance has access to the same apps, services, and systems as the primary logic app instance.
-* Both logic app instances have the same host type. So, either both instances are deployed to regions in global multi-tenant Azure, or both instances are deployed to ISEs, which let your logic apps directly access resources in an Azure virtual network. For best practices and more information about paired regions for BCDR, see [Cross-region replication in Azure: Business continuity and disaster recovery](../availability-zones/cross-region-replication-azure.md).
+* Both logic app instances have the same host type. So, either both instances are deployed to regions in global multitenant Azure, or both instances are deployed to ISEs, which let your logic apps directly access resources in an Azure virtual network. For best practices and more information about paired regions for BCDR, see [Cross-region replication in Azure: Business continuity and disaster recovery](../availability-zones/cross-region-replication-azure.md).
For example, both the primary and secondary locations must be ISEs when the primary logic app runs in an ISE and uses [ISE-versioned connectors](../connectors/managed.md#ise-connectors), HTTP actions to call resources in the Azure virtual network, or both. In this scenario, your secondary logic app must also have a similar setup in the secondary location as the primary logic app. > [!NOTE]
- > For more advanced scenarios, you can mix both multi-tenant Azure and an
+ > For more advanced scenarios, you can mix both multitenant Azure and an
> ISE as locations. However, make sure that you consider and understand the
- > [differences between how logic apps run in an ISE versus multi-tenant Azure](../logic-apps/connect-virtual-network-vnet-isolated-environment-overview.md#difference).
+ > [differences between how logic apps run in an ISE versus multitenant Azure](../logic-apps/connect-virtual-network-vnet-isolated-environment-overview.md#difference).
* If you use ISEs, [make sure that they are scaled out or have enough capacity](../logic-apps/ise-manage-integration-service-environment.md#add-capacity) to handle the load.
-#### Example: Multi-tenant Azure
+#### Example: Multitenant Azure
-This example shows primary and secondary logic app instances, which are deployed to separate regions in the global multi-tenant Azure for this scenario. A single [Resource Manager template](../logic-apps/logic-apps-azure-resource-manager-templates-overview.md) defines both logic app instances and the dependent resources required by those logic apps. Separate parameter files specify the configuration values to use for each deployment location:
+This example shows primary and secondary logic app instances, which are deployed to separate regions in the global multitenant Azure for this scenario. A single [Resource Manager template](../logic-apps/logic-apps-azure-resource-manager-templates-overview.md) defines both logic app instances and the dependent resources required by those logic apps. Separate parameter files specify the configuration values to use for each deployment location:
![Primary and secondary logic app instances in separate locations](./media/business-continuity-disaster-recovery-guidance/primary-secondary-locations.png)
For your disaster recovery strategy, consider the locations where dependent reso
## On-premises data gateways
-If your logic app runs in multi-tenant Azure and needs access to on-premises resources such as SQL Server databases, you need to install the [on-premises data gateway](../logic-apps/logic-apps-gateway-install.md) on a local computer. You can then create a data gateway resource in the Azure portal so that your logic app can use the gateway when you create a connection to the resource.
+If your logic app runs in multitenant Azure and needs access to on-premises resources such as SQL Server databases, you need to install the [on-premises data gateway](../logic-apps/logic-apps-gateway-install.md) on a local computer. You can then create a data gateway resource in the Azure portal so that your logic app can use the gateway when you create a connection to the resource.
The data gateway resource is associated with a location or Azure region, just like your logic app resource. In your disaster recovery strategy, make sure that the data gateway remains available for your logic app to use. You can [enable high availability for your gateway](../logic-apps/logic-apps-gateway-install.md#high-availability) when you have multiple gateway installations.
The data gateway resource is associated with a location or Azure region, just li
> > If no ISE-versioned connector is available for the on-premises resource that you want, > your logic app can still create the connection by using a non-ISE connector,
-> which runs in the global multi-tenant Azure, not your ISE. However, this connection
+> which runs in the global multitenant Azure, not your ISE. However, this connection
> requires the on-premises data gateway. <a name="roles"></a>
logic-apps Create Custom Built In Connector Standard https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/create-custom-built-in-connector-standard.md
For more information, review the following documentation:
* Basic knowledge about single-tenant Azure Logic Apps, Standard logic app workflows, connectors, and how to use Visual Studio Code for creating single tenant-based workflows. For more information, review the following documentation:
- * [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md)
+ * [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md)
* [Create an integration workflow with single-tenant Azure Logic Apps (Standard) - Azure portal](create-single-tenant-workflows-azure-portal.md)
logic-apps Create Parameters Workflows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/create-parameters-workflows.md
Last updated 08/06/2024
In Azure Logic Apps, you can abstract values that might change in workflows across development, test, and production environments by defining *parameters*. When you use parameters rather than environment-specific variables, you can initially focus more on designing your workflows, and insert your environment-specific variables later.
-This article introduces how to create, use, and edit parameters for multi-tenant Consumption logic app workflows and for single-tenant Standard logic app workflows. You'll also learn how to manage environment variables.
+This article introduces how to create, use, and edit parameters for multitenant Consumption logic app workflows and for single-tenant Standard logic app workflows. You'll also learn how to manage environment variables.
-For more information about multi-tenant and single-tenant Azure Logic Apps, review [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md).
+For more information about multitenant and single-tenant Azure Logic Apps, review [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md).
## Prerequisites
For more information about multi-tenant and single-tenant Azure Logic Apps, revi
For both Consumption and Standard logic app workflows, you can define parameters using the designer. After you define the parameter, you can reference that parameter from any workflow or connection that's in the *same* logic app resource.
-In multi-tenant Consumption logic app workflows, after you create and use parameters in the designer, you define and set the environment variables in your Azure Resource Manager template (ARM template) and template parameters files. In this scenario, you have to define and set the parameters *at deployment*, which means that even if you only have to change one variable, you have to redeploy your logic app's ARM template.
+In multitenant Consumption logic app workflows, after you create and use parameters in the designer, you define and set the environment variables in your Azure Resource Manager template (ARM template) and template parameters files. In this scenario, you have to define and set the parameters *at deployment*, which means that even if you only have to change one variable, you have to redeploy your logic app's ARM template.
In single-tenant Standard logic app workflows, you can work with environment variables both at runtime and deployment by using parameters *and* app settings. App settings contain global configuration options for *all the workflows* in the same logic app resource. For more information, review [Edit host and app settings for single-tenant based logic apps](edit-app-settings-host-settings.md).
This example shows file settings for either ARM templates or Bicep templates:
-## Next steps
+## Related content
-* [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md)
+* [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md)
logic-apps Create Replication Tasks Azure Resources https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/create-replication-tasks-azure-resources.md
To reduce the effect that unpredictable events can have on your Azure resources
> You can also use replication tasks to move content between entities in the same region, but if the > entire region becomes unavailable or experiences disruption, both source and target are affected.
-This article provides an overview about replication tasks powered by Azure Logic Apps and shows how to create an example replication task for Azure Service Bus queues. If you're new to logic apps and workflows, review [What is Azure Logic Apps](logic-apps-overview.md) and [Single-tenant versus multitenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md).
+This article provides an overview about replication tasks powered by Azure Logic Apps and shows how to create an example replication task for Azure Service Bus queues. If you're new to logic apps and workflows, review [What is Azure Logic Apps](logic-apps-overview.md) and [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md).
<a name="replication-task"></a>
logic-apps Create Single Tenant Workflows Azure Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/create-single-tenant-workflows-azure-portal.md
More workflows in your logic app raise the risk of longer load times, which nega
:::image type="content" source="media/create-single-tenant-workflows-azure-portal/create-logic-app-basics.png" alt-text="Screenshot shows Azure portal and page named Create Logic App Workflow Service Plan." lightbox="media/create-single-tenant-workflows-azure-portal/create-logic-app-basics.png":::
+ > [!NOTE]
+ >
+ > By default, the language worker runtime value for your Standard logic app is **`dotnet`**.
+ > Previously, **`node`** was the default value. However, **`dotnet`** is now the default value
+ > for all new and existing deployed Standard logic apps, even for apps that had a different value.
+ > This change shouldn't affect your workflow's runtime, and everything should work the same way
+ > as before. For more information, see the [**FUNCTIONS_WORKER_RUNTIME** app setting](edit-app-settings-host-settings.md#reference-local-settings-json).
+ 1. When you finish, select **Next: Storage**. 1. On the **Storage** tab, provide the following information about the storage solution and hosting plan to use for your logic app.
logic-apps Create Single Tenant Workflows Visual Studio Code https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/create-single-tenant-workflows-visual-studio-code.md
This how-to guide shows how to create an example integration workflow that runs
> [!NOTE] > Deploying your logic app to a Kubernetes cluster is currently in public preview.
- For more information about single-tenant Azure Logic Apps, review [Single-tenant versus multitenant and integration service environment](single-tenant-overview-compare.md#resource-environment-differences).
+ For more information about single-tenant Azure Logic Apps, review [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md#resource-environment-differences).
While the example workflow is cloud-based and has only two steps, you can create workflows from hundreds of operations that can connect a wide range of apps, data, services, and systems across cloud, on premises, and hybrid environments. The example workflow starts with the built-in **Request** trigger and follows with an Office 365 Outlook action. The trigger creates a callable endpoint for the workflow and waits for an inbound HTTPS request from any caller. When the trigger receives a request and fires, the next action runs by sending email to the specified email address along with selected outputs from the trigger.
To locally run webhook-based triggers and actions in Visual Studio Code, you nee
"IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true",
- "FUNCTIONS_WORKER_RUNTIME": "node",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet",
"FUNCTIONS_V2_COMPATIBILITY_MODE": "true", <...> "Workflows.WebhookRedirectHostUri": "http://xxxXXXXxxxXXX.ngrok.io",
To locally run webhook-based triggers and actions in Visual Studio Code, you nee
} ```
+ [!INCLUDE [functions-language-runtime](./includes/functions-language-runtime.md)]
+ The first time when you start a local debugging session or run the workflow without debugging, the Azure Logic Apps runtime registers the workflow with the service endpoint and subscribes to that endpoint for notifying the webhook operations. The next time that your workflow runs, the runtime won't register or resubscribe because the subscription registration already exists in local storage. When you stop the debugging session for a workflow run that uses locally run webhook-based triggers or actions, the existing subscription registrations aren't deleted. To unregister, you have to manually remove or delete the subscription registrations.
Deployment for the Standard logic app resource requires a hosting plan and prici
"IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true",
- "FUNCTIONS_WORKER_RUNTIME": "node",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": <instrumentation-key> } }
To debug a stateless workflow more easily, you can enable the run history for th
"IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true",
- "FUNCTIONS_WORKER_RUNTIME": "node",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet",
"Workflows.{yourWorkflowName}.OperationOptions": "WithStatelessRunHistory" } }
To debug a stateless workflow more easily, you can enable the run history for th
"Values": { "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=fabrikamstorageacct; \ AccountKey=<access-key>;EndpointSuffix=core.windows.net",
- "FUNCTIONS_WORKER_RUNTIME": "node",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet",
"Workflows.{yourWorkflowName}.OperationOptions": "WithStatelessRunHistory" } }
logic-apps Custom Connector Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/custom-connector-overview.md
This article provides an overview about custom connectors for [Consumption logic
* [Built-in connectors in Azure Logic Apps](../connectors/built-in.md) * [Managed connectors in Azure Logic Apps](../connectors/managed.md) * [Connector overview](/connectors/connectors)
-* [Single-tenant versus multitenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md)
+* [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md)
<a name="custom-connector-consumption"></a>
logic-apps Designer Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/designer-overview.md
When you work with Azure Logic Apps in the Azure portal, you can edit your [*wor
> [!IMPORTANT] > Currently, the latest version of the designer is available only for *Standard* logic app resources, which run in the > *single-tenant* Azure Logic Apps environment. For more information about different resource types and runtime
-> environments in Logic Apps, review [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md).
+> environments in Logic Apps, review [Single-tenant versus multi-tenant in Azure Logic Apps](single-tenant-overview-compare.md).
:::image type="content" source="./media/designer-overview/choose-developer-view.png" alt-text="Screenshot of a logic app resource page in the Azure portal, showing the sidebar options to view a workflow in Code or Designer view.":::
logic-apps Edit App Settings Host Settings https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/edit-app-settings-host-settings.md
ms.suite: integration Previously updated : 03/08/2024 Last updated : 08/16/2024
App settings in Azure Logic Apps work similarly to app settings in Azure Functio
| Setting | Default value | Description | |||-| | `AzureWebJobsStorage` | None | Sets the connection string for an Azure storage account. For more information, see [AzureWebJobsStorage](../azure-functions/functions-app-settings.md#azurewebjobsstorage) |
-| `FUNCTIONS_WORKER_RUNTIME` | `node` | Sets the language worker runtime to use with your logic app resource and workflows. However, this setting is no longer necessary due to automatically enabled multi-language support. <br><br>For more information, see [FUNCTIONS_WORKER_RUNTIME](../azure-functions/functions-app-settings.md#functions_worker_runtime). |
+| `FUNCTIONS_WORKER_RUNTIME` | `dotnet` | Sets the language worker runtime to use with your logic app resource and workflows. However, this setting is no longer necessary due to automatically enabled multi-language support. <br><br>**Note**: Previously, this setting's default value was **`node`**. Now, **`dotnet`** is the default value for all new and existing deployed Standard logic apps, even for apps that had a different different value. This change shouldn't affect your workflow's runtime, and everything should work the same way as before.<br><br>For more information, see [FUNCTIONS_WORKER_RUNTIME](../azure-functions/functions-app-settings.md#functions_worker_runtime). |
| `ServiceProviders.Sftp.FileUploadBufferTimeForTrigger` | `00:00:20` <br>(20 seconds) | Sets the buffer time to ignore files that have a last modified timestamp that's greater than the current time. This setting is useful when large file writes take a long time and avoids fetching data for a partially written file. | | `ServiceProviders.Sftp.OperationTimeout` | `00:02:00` <br>(2 min) | Sets the time to wait before timing out on any operation. | | `ServiceProviders.Sftp.ServerAliveInterval` | `00:30:00` <br>(30 min) | Sends a "keep alive" message to keep the SSH connection active if no data exchange with the server happens during the specified period. |
logic-apps Create Integration Account https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/enterprise-integration/create-integration-account.md
Before you can link your integration account to a Standard logic app resource, y
"IsEncrypted": false, "Values": { "AzureWebJobStorage": "UseDevelopmentStorage=true",
- "FUNCTIONS_WORKER_RUNTIME": "node",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet",
"WORKFLOW_INTEGRATION_ACCOUNT_CALLBACK_URL": "https://prod-03.westus.logic.azure.com:443/integrationAccounts/...." } }
logic-apps Estimate Storage Costs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/estimate-storage-costs.md
Last updated 01/10/2024
Azure Logic Apps uses [Azure Storage](../storage/index.yml) for any storage operations. In traditional *multitenant* Azure Logic Apps, any storage usage and costs are attached to the logic app. Now, in *single-tenant* Azure Logic Apps, you can use your own storage account. These storage costs are listed separately in your Azure billing invoice. This capability gives you more flexibility and control over your logic app data. > [!NOTE]
-> This article applies to workflows in the single-tenant Azure Logic Apps environment. These workflows exist in the same logic app and in a single tenant that share the same storage. For more information, see [Single-tenant versus multitenant and integration service environment](single-tenant-overview-compare.md).
+> This article applies to workflows in the single-tenant Azure Logic Apps environment. These workflows exist in the same logic app and in a single tenant that share the same storage. For more information, see [Single-tenant versus multitenant in Azure Logic Appst](single-tenant-overview-compare.md).
Storage costs change based on your workflows' content. Different triggers, actions, and payloads result in different storage operations and needs. This article describes how to estimate your storage costs when you're using your own Azure Storage account with single-tenant based logic apps. First, you can [estimate the number of storage operations you'll perform](#estimate-storage-needs) using the Logic Apps storage calculator. Then, you can [estimate your possible storage costs](#estimate-storage-costs) using these numbers in the Azure pricing calculator.
If you have a workflow to estimate, get the JSON code for your workflow:
1. Go to the **Logic apps** service, and select your workflow.
-1. In your logic app's menu, under **Development tools**, select **Logic app code view**.
+1. In the logic app menu, under **Development tools**, select **Logic app code view**.
1. Copy the workflow's JSON code.
logic-apps Handle Throttling Problems 429 Errors https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/handle-throttling-problems-429-errors.md
The following Consumption workflow example shows where you can find this informa
Although the retry history provides error information, you might have trouble differentiating between connector throttling and [destination throttling](#destination-throttling). In this case, you might have to review the response's details or perform some throttling interval calculations to identify the source.
-For Consumption logic app workflows in multi-tenant Azure Logic Apps, throttling happens at the *connection* level. For logic app workflows that run in an [integration service environment (ISE)](connect-virtual-network-vnet-isolated-environment-overview.md), throttling still happens for non-ISE connections because they run in the multi-tenant Azure Logic Apps. However, ISE connections, which are created by ISE connectors, aren't throttled because they run in your ISE.
+For Consumption logic app workflows in multitenant Azure Logic Apps, throttling happens at the *connection* level.
To handle throttling at this level, you have the following options:
logic-apps Logic Apps Azure Resource Manager Templates Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/logic-apps-azure-resource-manager-templates-overview.md
For more information about Resource Manager templates, see these topics:
* [Azure Resource Manager template best practices](../azure-resource-manager/templates/best-practices.md) * [Develop Azure Resource Manager templates for cloud consistency](../azure-resource-manager/templates/template-cloud-consistency.md)
-For template resource information specific to logic apps, integration accounts, integration account artifacts, and integration service environments, see [Microsoft.Logic resource types](/azure/templates/microsoft.logic/allversions).
+For template resource information specific to logic apps, integration accounts, and integration account artifacts, see [Microsoft.Logic resource types](/azure/templates/microsoft.logic/allversions).
For sample logic app templates, see these examples: * [Full template](#full-example-template) that's used for this topic's examples * [Sample quickstart logic app template](https://github.com/Azure/azure-quickstart-templates/blob/master/quickstarts/microsoft.logic/logic-app-create/azuredeploy.json) in GitHub
-For the Logic Apps REST API, start with the [Azure Logic Apps REST API overview](/rest/api/logic).
+For the Azure Logic Apps REST API, start with the [Azure Logic Apps REST API overview](/rest/api/logic).
<a name="template-structure"></a>
Here are the attributes that are specific to your logic app resource definition:
| `parameters` | No | Object | The [workflow definition parameter values](#workflow-definition-parameters) to use at logic app runtime. The parameter definitions for these values appear inside your [workflow definition's parameters object](#workflow-definition-parameters). Also, if your logic app uses [managed connectors](../connectors/managed.md) for accessing other services and systems, this object includes a `$connections` object that sets the connection values to use at runtime. | | `accessControl` | No | Object | For specifying security attributes for your logic app, such as restricting IP access to request triggers or run history inputs and outputs. For more information, see [Secure access to logic apps](../logic-apps/logic-apps-securing-a-logic-app.md). | | `runtimeConfiguration` | No | Object | For specifying any `operationOptions` properties that control the way that your logic app behaves at run time. For example, you can run your logic app in [high throughput mode](../logic-apps/logic-apps-limits-and-config.md#run-high-throughput-mode). |
-|||||
-For more information about resource definitions for these Logic Apps objects, see [Microsoft.Logic resource types](/azure/templates/microsoft.logic/allversions):
+For more information about resource definitions for these Azure Logic Apps objects, see [Microsoft.Logic resource types](/azure/templates/microsoft.logic/allversions):
* [Workflow resource definition](/azure/templates/microsoft.logic/workflows)
-* [Integration service environment resource definition](/azure/templates/microsoft.logic/integrationserviceenvironments)
-* [Integration service environment managed API resource definition](/azure/templates/microsoft.logic/integrationserviceenvironments/managedapis)
* [Integration account resource definition](/azure/templates/microsoft.logic/integrationaccounts)
logic-apps Logic Apps Enterprise Integration As2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/logic-apps-enterprise-integration-as2.md
The **AS2** connector has different versions, based on [logic app type and host
| Logic app | Environment | Connector version | |--|-|-| | **Consumption** | multitenant Azure Logic Apps | **AS2 (v2)** and **AS2** managed connectors (Standard class). The **AS2 (v2)** connector provides only actions, but you can use any trigger that works for your scenario. For more information, review the following documentation: <br><br>- [AS2 managed connector reference](/connectors/as2/) <br>- [AS2 (v2) managed connector operations](#as2-v2-operations) <br>- [AS2 message limits](logic-apps-limits-and-config.md#b2b-protocol-limits) |
-| **Consumption** | Integration service environment (ISE) | **AS2 (v2)** and **AS2** managed connectors (Standard class) and **AS2** ISE version, which has different message limits than the Standard class. The **AS2 (v2)** connector provides only actions, but you can use any trigger that works for your scenario. For more information, review the following documentation: <br><br>- [AS2 managed connector reference](/connectors/as2/) <br>- [AS2 (v2) managed connector operations](#as2-v2-operations) <br>- [AS2 message limits](logic-apps-limits-and-config.md#b2b-protocol-limits) |
+| **Consumption** | Integration service environment (ISE) | **AS2 (v2)** and **AS2** managed connectors (Standard class) and **AS2** ISE version, which has different message limits than the Standard class. The **AS2 (v2)** connector provides only actions, but you can use any trigger that works for your scenario. For more information, review the following documentation: <br><br>- [AS2 managed connector reference](/connectors/as2/) <br>- [AS2 (v2) managed connector operations](#as2-v2-operations) <br>- [AS2 message limits](logic-apps-limits-and-config.md#b2b-protocol-limits) |
| **Standard** | Single-tenant Azure Logic Apps and App Service Environment v3 (Windows plans only) | **AS2 (v2)** built-in connector and **AS2** managed connector. The built-in version differs in the following ways: <br><br>- The built-in version provides only actions, but you can use any trigger that works for your scenario. <br><br>- The built-in version can directly access Azure virtual networks. You don't need an on-premises data gateway.<br><br>For more information, review the following documentation: <br><br>- [AS2 managed connector reference](/connectors/as2/) <br>- [AS2 (v2) built-in connector operations](#as2-v2-operations) <br>- [AS2 message limits](logic-apps-limits-and-config.md#b2b-protocol-limits) | <a name="as-v2-operations"></a>
logic-apps Logic Apps Examples And Scenarios https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/logic-apps-examples-and-scenarios.md
Every workflow starts with a single [*trigger*](logic-apps-overview.md#logic-app
| [**Request** trigger](../connectors/connectors-native-reqres.md) | Receive incoming HTTPS requests. | | [**HTTP Webhook** trigger](../connectors/connectors-native-webhook.md) | Subscribe to a service endpoint by registering a *callback URL* with that service. That way, the service can just notify the trigger when the specified event happens, so that the trigger doesn't need to poll the service. |
-After you add the trigger, continue building your workflow by adding one or more actions. The following quickstarts help you build your first Consumption logic app workflow, which runs in global, multi-tenant Azure Logic Apps:
+After you add the trigger, continue building your workflow by adding one or more actions. The following quickstarts help you build your first Consumption logic app workflow, which runs in global, multitenant Azure Logic Apps:
-* [Quickstart: Create an example Consumption logic app workflow in multi-tenant Azure Logic Apps - Azure portal](quickstart-create-example-consumption-workflow.md)
+* [Quickstart: Create an example Consumption logic app workflow in multitenant Azure Logic Apps - Azure portal](quickstart-create-example-consumption-workflow.md)
* [Quickstart: Create automated tasks, processes, and workflows by using Azure Logic Apps - Visual Studio](quickstart-create-logic-apps-with-visual-studio.md) * [Quickstart: Create and manage automated logic app workflows by using Visual Studio Code](quickstart-create-logic-apps-visual-studio-code.md)
For enterprise integration solutions and seamless communication between organiza
## Access Azure virtual network resources
-Sometimes, your logic app workflow might need access to secured resources, such as virtual machines (VMs) in an Azure virtual network. To directly access such resources, [create a Standard logic app workflow](create-single-tenant-workflows-azure-portal.md). This type of logic app workflow runs in single-tenant Azure Logic Apps, separately from Consumption logic app workflows in multi-tenant Azure Logic Apps, and uses dedicated storage and other resources. With this option, you can reduce the impact that other Azure tenants might have on your apps' performance, which is also known as the "noisy neighbors" effect.
-
-> [!IMPORTANT]
->
-> On August 31, 2024, the Integration Service Environment (ISE) resource will retire, due to its dependency on Azure Cloud Services (classic),
-> which retires at the same time. Before the retirement date, export any logic app resources from your ISE to Standard logic app workflows so that you can avoid
-> service disruption. Standard logic app workflows run in single-tenant Azure Logic Apps and provide the same capabilities plus more.
->
-> Starting November 1, 2022, you can no longer create new ISE resources. However, ISE resources existing
-> before this date are supported through August 31, 2024. For more information, see the following resources:
->
-> - [ISE Retirement - what you need to know](https://techcommunity.microsoft.com/t5/integrations-on-azure-blog/ise-retirement-what-you-need-to-know/ba-p/3645220)
-> - [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md)
-> - [Azure Logic Apps pricing](https://azure.microsoft.com/pricing/details/logic-apps/)
-> - [Export ISE workflows to a Standard logic app](export-from-ise-to-standard-logic-app.md)
-> - [Integration Service Environment will be retired on 31 August 2024 - transition to Azure Logic Apps Standard](https://azure.microsoft.com/updates/integration-services-environment-will-be-retired-on-31-august-2024-transition-to-logic-apps-standard/)
-> - [Cloud Services (classic) deployment model is retiring on 31 August 2024](https://azure.microsoft.com/updates/cloud-services-retirement-announcement/)
+Sometimes, your logic app workflow might need access to secured resources, such as virtual machines (VMs) in an Azure virtual network. To directly access such resources, [create a Standard logic app workflow](create-single-tenant-workflows-azure-portal.md). This type of logic app workflow runs in single-tenant Azure Logic Apps, separately from Consumption logic app workflows in multitenant Azure Logic Apps, and uses dedicated storage and other resources. With this option, you can reduce the impact that other Azure tenants might have on your apps' performance, which is also known as the "noisy neighbors" effect.
## Deploy, manage, and monitor logic app workflows
logic-apps Logic Apps Limits And Config https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/logic-apps-limits-and-config.md
For Azure Logic Apps to receive incoming communication through your firewall, yo
| Switzerland West | 51.107.225.180, 51.107.225.167, 51.107.225.163, 51.107.239.66, 51.107.235.139,51.107.227.18, 20.199.218.139, 20.199.219.180, 20.199.216.255, 20.199.217.34, 20.208.231.200, 20.199.217.39, 20.199.216.16, 20.199.216.98 | | UAE Central | 20.45.75.193, 20.45.64.29, 20.45.64.87, 20.45.71.213, 40.126.212.77, 40.126.209.97, 40.125.29.71, 40.125.28.162, 40.125.25.83, 40.125.24.49, 40.125.3.59, 40.125.3.137, 40.125.2.220, 40.125.3.139 | | UAE North | 20.46.42.220, 40.123.224.227, 40.123.224.143, 20.46.46.173, 20.74.255.147, 20.74.255.37, 20.233.241.162, 20.233.241.99, 20.174.64.131, 20.233.241.184, 20.174.48.155, 20.233.241.200, 20.174.56.89, 20.174.41.1 |
-| UK South | 51.140.79.109, 51.140.78.71, 51.140.84.39, 51.140.155.81, 20.108.102.180, 20.90.204.232, 20.108.148.173, 20.254.10.157, 4.159.25.35, 4.159.25.50, 4.250.87.43, 4.158.106.183, 4.250.53.153, 4.159.26.160, 4.159.25.103, 4.159.59.224 |
+| UK South | 51.140.79.109, 51.140.78.71, 51.140.84.39, 51.140.155.81, 20.108.102.180, 20.90.204.232, 20.108.148.173, 20.254.10.157, 4.159.25.35, 4.159.25.50, 4.250.87.43, 4.158.106.183, 4.250.53.153, 4.159.26.160, 4.159.25.103, 4.159.59.224, 4.158.138.59, 85.210.163.36, 85.210.34.209, 85.210.36.40 |
| UK West | 51.141.48.98, 51.141.51.145, 51.141.53.164, 51.141.119.150, 51.104.62.166, 51.141.123.161, 20.162.86.241, 20.162.87.200, 51.141.80.175, 20.162.87.253, 20.254.244.41, 20.254.244.108, 20.254.241.7, 20.254.245.81 |
-| West Central US | 52.161.26.172, 52.161.8.128, 52.161.19.82, 13.78.137.247, 52.161.64.217, 52.161.91.215 |
+| West Central US | 52.161.26.172, 52.161.8.128, 52.161.19.82, 13.78.137.247, 52.161.64.217, 52.161.91.215, 20.165.255.229, 4.255.162.134, 20.165.228.184, 4.255.178.108, 20.165.225.209, 4.255.145.22, 20.165.245.151, 20.165.232.221 |
| West Europe | 13.95.155.53, 52.174.54.218, 52.174.49.6, 20.103.21.113, 20.103.18.84, 20.103.57.210, 20.101.174.52, 20.93.236.81, 20.103.94.255, 20.82.87.229, 20.76.171.34, 20.103.84.61, 98.64.193.78, 98.64.194.143, 98.64.198.223, 98.64.198.203, 98.64.208.186, 98.64.209.52, 172.211.196.189, 172.211.195.251, 98.64.154.66, 98.64.156.81, 98.64.156.180, 98.64.156.68, 20.238.229.165, 20.8.128.2, 20.238.230.113, 108.141.139.111, 108.142.111.162, 108.142.111.174, 108.142.111.178, 108.142.111.183, 108.142.111.152, 108.142.111.156, 108.142.111.179, 108.142.111.169, 98.64.203.30, 98.64.156.172, 20.56.202.157, 20.56.203.30, 57.153.19.33, 57.153.59.202, 108.141.95.140, 20.61.147.216, 57.153.83.52, 57.153.38.174, 57.153.3.13, 57.153.1.223, 108.142.29.55, 108.142.31.220, 108.142.31.202, 20.61.153.22, 57.153.7.252, 108.141.83.61 | | West India | 104.211.164.112, 104.211.165.81, 104.211.164.25, 104.211.157.237, 104.211.167.12,104.211.166.35 | | West US | 52.160.90.237, 138.91.188.137, 13.91.252.184, 157.56.160.212, 104.40.34.112, 52.160.68.27, 13.88.168.158, 104.42.40.164, 13.87.207.79, 13.87.204.210, 168.62.9.100, 13.88.169.158, 13.88.171.218, 13.91.81.69, 13.64.215.62, 13.83.10.141, 13.91.40.58, 13.91.103.48, 52.160.93.229, 13.93.215.87, 13.88.177.160, 13.88.18.200, 13.91.105.180, 13.91.18.168, 13.83.15.162, 52.160.32.120, 13.91.35.39, 13.93.177.253, 13.93.180.131, 13.93.179.126, 13.91.130.111, 13.64.236.166, 13.64.239.120, 13.93.233.226, 40.83.133.96, 13.93.239.166, 13.64.240.133, 13.86.209.140, 13.91.40.136, 40.112.147.242, 40.112.136.59, 104.42.142.214, 104.42.128.212, 13.91.65.198, 13.93.193.254, 13.93.211.175, 13.91.46.140 |
This section lists the outbound IP addresses that Azure Logic Apps requires in y
| Switzerland West | 51.107.239.66, 51.107.231.86, 51.107.239.112, 51.107.239.123, 51.107.225.190, 51.107.225.179, 51.107.225.186, 51.107.225.151, 51.107.239.83, 51.107.232.61, 51.107.234.254, 51.107.226.253, 20.199.193.249, 20.199.217.37, 20.199.219.154, 20.199.216.246, 20.199.219.21, 20.208.230.30, 20.199.216.63, 20.199.218.36, 20.199.216.44 | | UAE Central | 20.45.75.200, 20.45.72.72, 20.45.75.236, 20.45.79.239, 20.45.67.170, 20.45.72.54, 20.45.67.134, 20.45.67.135, 40.126.210.93, 40.126.209.151, 40.126.208.156, 40.126.214.92, 40.125.28.217, 40.125.28.159, 40.125.25.44, 40.125.29.66, 40.125.3.49, 40.125.3.66, 40.125.3.111, 40.125.3.63| | UAE North | 40.123.230.45, 40.123.231.179, 40.123.231.186, 40.119.166.152, 40.123.228.182, 40.123.217.165, 40.123.216.73, 40.123.212.104, 20.74.255.28, 20.74.250.247, 20.216.16.75, 20.74.251.30, 20.233.241.106, 20.233.241.102, 20.233.241.85, 20.233.241.25, 20.174.64.128, 20.174.64.55, 20.233.240.41, 20.233.241.206, 20.174.48.149, 20.174.48.147, 20.233.241.187, 20.233.241.165, 20.174.56.83, 20.174.56.74, 20.174.40.222, 20.174.40.91 |
-| UK South | 51.140.74.14, 51.140.73.85, 51.140.78.44, 51.140.137.190, 51.140.153.135, 51.140.28.225, 51.140.142.28, 51.140.158.24, 20.108.102.142, 20.108.102.123, 20.90.204.228, 20.90.204.188, 20.108.146.132, 20.90.223.4, 20.26.15.70, 20.26.13.151, 4.159.24.241, 4.250.55.134, 4.159.24.255, 4.250.55.217, 172.165.88.82, 4.250.82.111, 4.158.106.101, 4.158.105.106, 4.250.51.127, 4.250.49.230, 4.159.26.128, 172.166.86.30, 4.159.26.151, 4.159.26.77, 4.159.59.140, 4.159.59.13 |
+| UK South | 51.140.74.14, 51.140.73.85, 51.140.78.44, 51.140.137.190, 51.140.153.135, 51.140.28.225, 51.140.142.28, 51.140.158.24, 20.108.102.142, 20.108.102.123, 20.90.204.228, 20.90.204.188, 20.108.146.132, 20.90.223.4, 20.26.15.70, 20.26.13.151, 4.159.24.241, 4.250.55.134, 4.159.24.255, 4.250.55.217, 172.165.88.82, 4.250.82.111, 4.158.106.101, 4.158.105.106, 4.250.51.127, 4.250.49.230, 4.159.26.128, 172.166.86.30, 4.159.26.151, 4.159.26.77, 4.159.59.140, 4.159.59.13, 85.210.65.206, 85.210.120.102, 4.159.57.40, 85.210.66.97 |
| UK West | 51.141.54.185, 51.141.45.238, 51.141.47.136, 51.141.114.77, 51.141.112.112, 51.141.113.36, 51.141.118.119, 51.141.119.63, 51.104.58.40, 51.104.57.160, 51.141.121.72, 51.141.121.220, 20.162.84.125, 20.162.86.120, 51.141.86.225, 20.162.80.198, 20.254.242.187, 20.254.242.213, 20.254.244.189, 20.254.245.102 |
-| West Central US | 52.161.27.190, 52.161.18.218, 52.161.9.108, 13.78.151.161, 13.78.137.179, 13.78.148.140, 13.78.129.20, 13.78.141.75, 13.71.199.128 - 13.71.199.159, 13.78.212.163, 13.77.220.134, 13.78.200.233, 13.77.219.128 |
+| West Central US | 52.161.27.190, 52.161.18.218, 52.161.9.108, 13.78.151.161, 13.78.137.179, 13.78.148.140, 13.78.129.20, 13.78.141.75, 13.71.199.128 - 13.71.199.159, 13.78.212.163, 13.77.220.134, 13.78.200.233, 13.77.219.128, 52.150.226.148, 4.255.161.16, 4.255.195.186, 4.255.168.251, 4.255.219.152, 20.165.235.148, 20.165.249.200, 20.165.232.68 |
| West Europe | 40.68.222.65, 40.68.209.23, 13.95.147.65, 23.97.218.130, 51.144.182.201, 23.97.211.179, 104.45.9.52, 23.97.210.126, 13.69.71.160, 13.69.71.161, 13.69.71.162, 13.69.71.163, 13.69.71.164, 13.69.71.165, 13.69.71.166, 13.69.71.167, 20.103.21.81, 20.103.17.247, 20.103.17.223, 20.103.16.47, 20.103.58.116, 20.103.57.29, 20.101.174.49, 20.101.174.23, 20.93.236.26, 20.93.235.107, 20.103.94.250, 20.76.174.72, 20.82.87.192, 20.82.87.16, 20.76.170.145, 20.103.91.39, 20.103.84.41, 20.76.161.156, 98.64.193.64, 98.64.194.135, 98.64.198.219, 98.64.198.194, 98.64.208.46, 98.64.209.43, 172.211.196.188, 172.211.195.181, 98.64.157.37, 98.64.156.69, 98.64.156.152, 98.64.156.62, 20.238.229.108, 108.141.139.225, 20.238.230.87, 108.141.139.80, 108.142.111.161, 108.142.111.173, 108.142.111.175, 108.142.111.182, 108.142.111.151, 108.142.111.155, 108.142.111.157, 108.142.111.167, 98.64.203.5, 98.64.156.150, 20.56.202.134, 20.56.202.244, 57.153.19.27, 57.153.59.193, 108.141.95.129, 20.61.147.200, 57.153.83.40, 57.153.38.60, 57.153.2.162, 57.153.1.215, 108.142.24.182, 108.142.31.170, 108.142.31.143, 20.61.152.226, 57.153.7.245, 108.141.83.46 | | West India | 104.211.164.80, 104.211.162.205, 104.211.164.136, 104.211.158.127, 104.211.156.153, 104.211.158.123, 104.211.154.59, 104.211.154.7, 104.211.155.179, 104.211.142.119, 104.211.153.240, 104.211.156.193 | | West US | 52.160.92.112, 40.118.244.241, 40.118.241.243, 157.56.162.53, 157.56.167.147, 104.42.49.145, 40.83.164.80, 104.42.38.32, 13.86.223.0, 13.86.223.1, 13.86.223.2, 13.86.223.3, 13.86.223.4, 13.86.223.5, 104.40.34.169, 104.40.32.148, 52.160.70.221, 52.160.70.105, 13.91.81.221, 13.64.231.196, 13.87.204.182, 40.78.65.193, 13.87.207.39, 104.42.44.28, 40.83.134.97, 40.78.65.112, 168.62.9.74, 168.62.28.191, 13.91.81.188, 13.88.169.213, 13.64.224.17, 13.91.70.215, 13.83.14.75, 13.91.231.159, 13.91.102.122, 52.160.94.54, 13.91.17.147, 13.93.163.29, 13.93.223.133, 13.88.19.4, 13.91.33.16, 13.91.247.124, 52.160.39.166, 13.91.20.94, 13.93.180.161, 13.93.161.57, 13.93.183.170, 13.93.180.221, 13.64.236.222, 13.64.237.74, 13.93.203.72, 13.88.56.138, 13.93.239.25, 13.83.10.112, 13.64.241.219, 13.64.243.209, 104.42.134.185, 40.112.138.23, 104.42.226.197, 104.42.129.159, 13.91.87.195, 13.93.167.155, 13.91.46.132, 13.91.247.104 |
logic-apps Logic Apps Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/logic-apps-overview.md
Some patterns and processes are easy to describe but hard to implement in code.
### Create and deploy to different environments
-Based on your scenario, solution requirements, and desired capabilities, choose whether to create a Consumption or Standard logic app workflow. Based on this choice, the workflow runs in either multitenant Azure Logic Apps, single-tenant Azure Logic Apps, or an App Service Environment (v3). With single-tenant Azure Logic Apps, your workflows can more easily access resources protected by Azure virtual networks. If you create single tenant-based workflows using Azure Arc enabled Logic Apps, you can also run workflows in containers. For more information, see [Single-tenant versus multitenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md) and [What is Arc enabled Logic Apps](azure-arc-enabled-logic-apps-overview.md)?
+Based on your scenario, solution requirements, and desired capabilities, choose whether to create a Consumption or Standard logic app workflow. Based on this choice, the workflow runs in either multitenant Azure Logic Apps, single-tenant Azure Logic Apps, or an App Service Environment (v3). With single-tenant Azure Logic Apps, your workflows can more easily access resources protected by Azure virtual networks. If you create single tenant-based workflows using Azure Arc enabled Logic Apps, you can also run workflows in containers. For more information, see [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md) and [What is Arc enabled Logic Apps](azure-arc-enabled-logic-apps-overview.md)?
The following table briefly summarizes differences between a Consumption and Standard logic app workflow. You'll also learn the differences between the multitenant environment, integration service environment (ISE), single-tenant environment, and App Service Environment v3 (ASEv3) for deploying, hosting, and running your logic app workflows.
logic-apps Logic Apps Serverless Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/logic-apps-serverless-overview.md
To connect your workflows to other Azure services, Microsoft services, cloud-bas
If no connector is available to meet your needs, you can use the built-in HTTP operation or Request trigger to communicate with any service endpoint. Or, you can create your own connector using an existing API.
-Based on the logic app resource type that you choose, the associated workflow runs in either multi-tenant Azure Logic Apps, single-tenant Azure Logic Apps, or a dedicated integration service environment (ISE). Each has their own capabilities, benefits, and billing models. The Azure portal provides the fastest way to get started creating logic app workflows. However, you can also use other tools such as Visual Studio Code, Visual Studio, Azure PowerShell, and others. For more information, review [What is Azure Logic Apps](logic-apps-overview.md)?
+Based on the logic app resource type that you choose, the associated workflow runs in either multitenant Azure Logic Apps or single-tenant Azure Logic Apps. Each has their own capabilities, benefits, and billing models. The Azure portal provides the fastest way to get started creating logic app workflows. However, you can also use other tools such as Visual Studio Code, Visual Studio, Azure PowerShell, and others. For more information, review [What is Azure Logic Apps](logic-apps-overview.md)?
-To get started with Azure Logic Apps, try a [quickstart to create an example Consumption logic app workflow in multi-tenant Azure Logic Apps using the Azure portal](quickstart-create-example-consumption-workflow.md). Or, try these [steps that create an example serverless app with Azure Logic Apps and Azure Functions in Visual Studio](create-serverless-apps-visual-studio.md).
+To get started with Azure Logic Apps, try a [quickstart to create an example Consumption logic app workflow in multitenant Azure Logic Apps using the Azure portal](quickstart-create-example-consumption-workflow.md). Or, try these [steps that create an example serverless app with Azure Logic Apps and Azure Functions in Visual Studio](create-serverless-apps-visual-studio.md).
For other information, review the following documentation: * [What is Azure Logic Apps?](logic-apps-overview.md) * [Managed connectors for Azure Logic Apps](/connectors/connector-reference/connector-reference-logicapps-connectors) * [Built-in connectors for Azure Logic Apps](../connectors/built-in.md)
-* [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md)
+* [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md)
* [Usage metering, billing, and pricing models for Azure Logic Apps](logic-apps-pricing.md) ## Azure Functions
logic-apps Manage Logic Apps With Visual Studio https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/manage-logic-apps-with-visual-studio.md
You can [download](../azure-resource-manager/templates/export-template-portal.md
> [!TIP] > If you don't have this command in Visual Studio 2019, check that you have the latest updates for Visual Studio.
- The logic app opens in the Logic App Designer.
+ The logic app opens in the workflow designer.
1. On the designer toolbar, select **Download**.
To build logic apps for business-to-business (B2B) enterprise integration scenar
1. In Solution Explorer, open the **\<logic-app-name\>.json** file's shortcut menu, and select **Open With Logic App Designer**. (Keyboard: Ctrl + L)
- ![Open logic app's .json file with Logic App Designer](./media/manage-logic-apps-with-visual-studio/open-logic-app-designer.png)
+ ![Open logic app's .json file with workflow designer](./media/manage-logic-apps-with-visual-studio/open-logic-app-designer.png)
> [!TIP] > If you don't have this command in Visual Studio 2019, check that you have the latest updates to Visual Studio and the Azure Logic Apps Tools extension.
-1. Make sure that the Logic App Designer has focus by selecting the designer's tab or surface so that the Properties window shows the **Integration Account** property for your logic app.
+1. Make sure that the workflow designer has focus by selecting the designer's tab or surface so that the Properties window shows the **Integration Account** property for your logic app.
![Properties window - "Integration Account" property](./media/manage-logic-apps-with-visual-studio/open-logic-app-properties-integration-account.png)
When you set the **Integration Account** property in Visual Studio and save your
## Change deployment location
-In Visual Studio, if your logic app exists as a JSON (.json) file within an [Azure Resource Group project](../azure-resource-manager/templates/create-visual-studio-deployment-project.md) that you use to automate deployment, that logic app is set to a location type and a specific location. This location is either an Azure region or an existing [integration service environment (ISE)](connect-virtual-network-vnet-isolated-environment-overview.md).
+In Visual Studio, if your logic app exists as a JSON (.json) file within an [Azure Resource Group project](../azure-resource-manager/templates/create-visual-studio-deployment-project.md) that you use to automate deployment, that logic app is set to a location type and a specific location, which is an Azure region.
-To change your logic app's location type or location, you have to open your logic app's workflow definition (.json) file from Solution Explorer by using the Logic App Designer. You can't change these properties by using Cloud Explorer.
+To change your logic app's location type or location, you have to open your logic app's workflow definition (.json) file from Solution Explorer by using the workflow designer. You can't change these properties by using Cloud Explorer.
> [!IMPORTANT] > Changing the location type from **Region** to
To change your logic app's location type or location, you have to open your logi
1. In Solution Explorer, open the `<logic-app-name>.json` file's shortcut menu, and select **Open With Logic App Designer**. (Keyboard: Ctrl + L)
- ![Open logic app's .json file with Logic App Designer](./media/manage-logic-apps-with-visual-studio/open-logic-app-designer.png)
+ ![Open logic app's .json file with workflow designer](./media/manage-logic-apps-with-visual-studio/open-logic-app-designer.png)
> [!TIP] > If you don't have this command in Visual Studio 2019, check that you have the latest updates to Visual Studio and the Azure Logic Apps Tools extension.
-1. Make sure that the Logic App Designer has focus by selecting the designer's tab or surface so that the Properties window shows the **Choose Location Type** and **Location** properties for your logic app. The project's location type is set to either **Region** or **Integration Service Environment**.
+1. Make sure that the workflow designer has focus by selecting the designer's tab or surface so that the Properties window shows the **Choose Location Type** and **Location** properties for your logic app. The project's location type is set to either **Region** or **Integration Service Environment**.
![Properties window - "Choose Location Type" & "Location" properties](./media/manage-logic-apps-with-visual-studio/open-logic-app-properties-location.png)
When you change the location type or location in Visual Studio and save your log
If you edit your logic app in the Azure portal and want to keep those changes, make sure that you refresh that app's version in Visual Studio with those changes.
-* In Visual Studio, on the Logic App Designer toolbar, select **Refresh**.
+* In Visual Studio, on the workflow designer toolbar, select **Refresh**.
-or-
If you edit your logic app in the Azure portal and want to keep those changes, m
## Publish logic app updates
-When you're ready to deploy your logic app updates from Visual Studio to Azure, on the Logic App Designer toolbar, select **Publish**.
+When you're ready to deploy your logic app updates from Visual Studio to Azure, on the workflow designer toolbar, select **Publish**.
![Publish updated logic app to Azure portal](./media/manage-logic-apps-with-visual-studio/publish-logic-app-to-azure-portal.png) ## Manually run your logic app
-You can manually trigger a logic app deployed in Azure from Visual Studio. On the Logic App Designer toolbar, select **Run Trigger**.
+You can manually trigger a logic app deployed in Azure from Visual Studio. On the workflow designer toolbar, select **Run Trigger**.
![Manually run trigger for your logic app](./media/manage-logic-apps-with-visual-studio/manually-run-logic-app.png)
logic-apps Parse Document Chunk Text https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/parse-document-chunk-text.md
ms.suite: integration
Previously updated : 08/14/2024 Last updated : 08/16/2024 # Customer intent: As a developer using Azure Logic Apps, I want to parse a document or chunk text that I want to use with Azure AI operations for my Standard workflow in Azure Logic Apps.
Last updated 08/14/2024
Sometimes you have to convert content into tokens, which are words or chunks of characters, or divide a large document into smaller pieces before you can use this content with some actions. For example, the **Azure AI Search** or **Azure OpenAI** actions expect tokenized input and can handle only a limited number of tokens.
-For these scenarios, use the **Data Operations** actions named **Parse a document** and **Chunk text** in your Standard logic app workflow. These actions respectively transform content, such as a PDF document, CSV file, Excel file, and so on, into tokenized string output and then split the string into pieces, based on the number of tokens or characters. You can then reference and use these outputs with subsequent actions in your workflow.
+For these scenarios, use the **Data Operations** actions named **Parse a document** and **Chunk text** in your Standard logic app workflow. These actions respectively transform content, such as a PDF document, CSV file, Excel file, and so on, into tokenized string output and then split the string into pieces, based on the number of tokens. You can then reference and use these outputs with subsequent actions in your workflow.
> [!TIP] >
The **Chunk text** action splits content into smaller pieces for subsequent acti
1. On the designer, select the **Chunk text** action.
-1. After the action information pane opens, on the **Parameters** tab, for the **Chunking Strategy** property, select either **FixedLength** or **TokenSize** as the chunking method.
+1. After the action information pane opens, on the **Parameters** tab, for the **Chunking Strategy** property, select **TokenSize** as the chunking method, if not already selected.
| Strategy | Description | |-|-|
- | **FixedLength** | Split the specified content, based on the number of characters. |
| **TokenSize** | Split the specified content, based on the number of tokens. | 1. After you select the strategy, select inside the **Text** box to specify the content for chunking.
Now, when you add other actions that expect and use tokenized input, such as the
| Name | Value | Data type | Description | Limits | ||-|--|-|-|
-| **Chunking Strategy** | **FixedLength** or **TokenSize** | String enum | **FixedLength**: Split the content, based on the number of characters <br><br>**TokenSize**: Split the content, based on the number of tokens. <br><br>Default: **FixedLength** | Not applicable |
+| **Chunking Strategy** | **TokenSize** | String enum | Split the content, based on the number of tokens. <br><br>Default: **TokenSize** | Not applicable |
| **Text** | <*content-to-chunk*> | Any | The content to chunk. | See [Limits and configuration reference guide](logic-apps-limits-and-config.md#character-limits) |-
-For **Chunking Strategy** set to **FixedLength**:
-
-| Name | Value | Data type | Description | Limits |
-||-|--|-|-|
-| **MaxPageLength** | <*max-char-per-chunk*> | Integer | The maximum number of characters per content chunk. <br><br>Default: **5000** | Minimum: **1** |
-| **PageOverlapLength** | <*number-of-overlapping-characters*> | Integer | The number of characters from the end of the previous chunk to include in the next chunk. This setting helps you avoid losing important information when splitting content into chunks and preserves continuity and context across chunks. <br><br>Default: **0** - No overlapping characters exist. | Minimum: **0** |
-| **Language** | <*language*> | String | The [language](/azure/ai-services/language-service/language-detection/language-support) to use for the resulting chunks. <br><br>Default: **en-us** | Not applicable |
-
-For **Chunking Strategy** set to **TokenSize**:
-
-| Name | Value | Data type | Description | Limits |
-||-|--|-|-|
+| **EncodingModel** | <*encoding-method*> | String enum | The encoding model to use: <br><br>- Default: **cl100k_base (gpt4, gpt-3.5-turbo, gpt-35-turbo)** <br><br>- **r50k_base (gpt-3)** <br><br>- **p50k_base (gpt-3)** <br><br>- **p50k_edit (gpt-3)** <br><br>- **cl200k_base (gpt-4o)** <br><br>For more information, see [OpenAI - Models overview](https://platform.openai.com/docs/models/overview). | Not applicable |
| **TokenSize** | <*max-tokens-per-chunk*> | Integer | The maximum number of tokens per content chunk. <br><br>Default: None | Minimum: **1** <br>Maximum: **8000** |
-| **Encoding model** | <*encoding-method*> | String enum | The encoding model to use: <br><br>- Default: **cl100k_base (gpt4, gpt-3.5-turbo, gpt-35-turbo)** <br><br>- **r50k_base (gpt-3)** <br><br>- **p50k_base (gpt-3)** <br><br>- **p50k_edit (gpt-3)** <br><br>- **cl200k_base (gpt-4o)** <br><br>For more information, see [OpenAI - Models overview](https://platform.openai.com/docs/models/overview). | Not applicable |
+| **PageOverlapLength** | <*number-of-overlapping-characters*> | Integer | The number of characters from the end of the previous chunk to include in the next chunk. This setting helps you avoid losing important information when splitting content into chunks and preserves continuity and context across chunks. <br><br>Default: **0** - No overlapping characters exist. | Minimum: **0** |
> [!TIP] >
The following example includes other actions that create a complete workflow pat
| 2 | Get the content. | **HTTP** | An **HTTP** action that retrieves the uploaded document using the file URL from the trigger output. | | 3 | Compose document details. | **Compose** | A **Data Operations** action that concatenates various items. <br><br>This example concatenates key-value information about the document. | | 4 | Create token string. | **Parse a document** | A **Data Operations** action that produces a tokenized string using the output from the **Compose** action. |
-| 5 | Create content chunks. | **Chunk text** | A **Data Operations** action that splits the token string into pieces, based on either the number of characters or tokens per content chunk. |
+| 5 | Create content chunks. | **Chunk text** | A **Data Operations** action that splits the token string into pieces, based on the number of tokens per content chunk. |
| 6 | Convert tokenized and chunked text to JSON. | **Parse JSON** | A **Data Operations** action that converts the chunked output into a JSON array. | | 7 | Select JSON array items. | **Select** | A **Data Operations** action that selects multiple items from the JSON array. | | 8 | Generate the embeddings. | **Get multiple embeddings** | An **Azure OpenAI** action that creates embeddings for each JSON array item. |
logic-apps Quickstart Create Logic Apps Visual Studio Code https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/quickstart-create-logic-apps-visual-studio-code.md
Last updated 01/04/2024
[!INCLUDE [logic-apps-sku-consumption](~/reusable-content/ce-skilling/azure/includes/logic-apps-sku-consumption.md)]
-This quickstart shows how to create and manage logic app workflows that help you automate tasks and processes that integrate apps, data, systems, and services across organizations and enterprises by using multitenant [Azure Logic Apps](../logic-apps/logic-apps-overview.md) and Visual Studio Code. You can create and edit the underlying workflow definitions, which use JavaScript Object Notation (JSON), for logic apps through a code-based experience. You can also work on existing logic apps that are already deployed to Azure. For more information about multitenant versus single-tenant model, review [Single-tenant versus multitenant and integration service environment](single-tenant-overview-compare.md).
+This quickstart shows how to create and manage logic app workflows that help you automate tasks and processes that integrate apps, data, systems, and services across organizations and enterprises by using multitenant [Azure Logic Apps](../logic-apps/logic-apps-overview.md) and Visual Studio Code. You can create and edit the underlying workflow definitions, which use JavaScript Object Notation (JSON), for logic apps through a code-based experience. You can also work on existing logic apps that are already deployed to Azure. For more information about multitenant versus single-tenant model, review [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md).
Although you can perform these same tasks in the [Azure portal](https://portal.azure.com) and in Visual Studio, you can get started faster in Visual Studio Code when you're already familiar with logic app definitions and want to work directly in code. For example, you can disable, enable, delete, and refresh already created logic apps. Also, you can work on logic apps and integration accounts from any development platform where Visual Studio Code runs, such as Linux, Windows, and Mac.
logic-apps Quickstart Create Logic Apps With Visual Studio https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/quickstart-create-logic-apps-with-visual-studio.md
Last updated 01/04/2024
[!INCLUDE [logic-apps-sku-consumption](~/reusable-content/ce-skilling/azure/includes/logic-apps-sku-consumption.md)]
-This quickstart shows how to design, develop, and deploy automated workflows that integrate apps, data, systems, and services across enterprises and organizations by using multitenant [Azure Logic Apps](logic-apps-overview.md) and Visual Studio. Although you can perform these tasks in the Azure portal, Visual Studio lets you add your logic apps to source control, publish different versions, and create Azure Resource Manager templates for different deployment environments. For more information about multitenant versus single-tenant model, review [Single-tenant versus multitenant and integration service environment](single-tenant-overview-compare.md).
+This quickstart shows how to design, develop, and deploy automated workflows that integrate apps, data, systems, and services across enterprises and organizations by using multitenant [Azure Logic Apps](logic-apps-overview.md) and Visual Studio. Although you can perform these tasks in the Azure portal, Visual Studio lets you add your logic apps to source control, publish different versions, and create Azure Resource Manager templates for different deployment environments. For more information about multitenant versus single-tenant model, review [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md).
If you're new to Azure Logic Apps and just want the basic concepts, try the [quickstart for creating an example Consumption logic app workflow in the Azure portal](quickstart-create-example-consumption-workflow.md). The workflow designer works similarly in both the Azure portal and Visual Studio.
logic-apps Quickstart Logic Apps Azure Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/quickstart-logic-apps-azure-cli.md
Last updated 01/04/2024
[!INCLUDE [logic-apps-sku-consumption](~/reusable-content/ce-skilling/azure/includes/logic-apps-sku-consumption.md)]
-This quickstart shows how to create and manage automated workflows that run in Azure Logic Apps by using the [Azure CLI Logic Apps extension](/cli/azure/logic) (`az logic`). From the command line, you can create a [Consumption logic app](logic-apps-overview.md#resource-environment-differences) in multi-tenant Azure Logic Apps by using the JSON file for a logic app workflow definition. You can then manage your logic app by running operations such as `list`, `show` (`get`), `update`, and `delete` from the command line.
+This quickstart shows how to create and manage automated workflows that run in Azure Logic Apps by using the [Azure CLI Logic Apps extension](/cli/azure/logic) (`az logic`). From the command line, you can create a [Consumption logic app](logic-apps-overview.md#resource-environment-differences) in multitenant Azure Logic Apps by using the JSON file for a logic app workflow definition. You can then manage your logic app by running operations such as `list`, `show` (`get`), `update`, and `delete` from the command line.
> [!WARNING] > The Azure CLI Logic Apps extension is currently *experimental* and *not covered by customer support*. Use this CLI extension with caution, especially if you choose to use the extension in production environments.
-This quickstart currently applies only to Consumption logic app workflows that run in multi-tenant Azure Logic Apps. Azure CLI is currently unavailable for Standard logic app workflows that run in single-tenant Azure Logic Apps. For more information, review [Resource type and host differences in Azure Logic Apps](logic-apps-overview.md#resource-environment-differences).
+This quickstart currently applies only to Consumption logic app workflows that run in multitenant Azure Logic Apps. Azure CLI is currently unavailable for Standard logic app workflows that run in single-tenant Azure Logic Apps. For more information, review [Resource type and host differences in Azure Logic Apps](logic-apps-overview.md#resource-environment-differences).
If you're new to Azure Logic Apps, learn how to create your first Consumption logic app workflow [through the Azure portal](quickstart-create-example-consumption-workflow.md), [in Visual Studio](quickstart-create-logic-apps-with-visual-studio.md), and [in Visual Studio Code](quickstart-create-logic-apps-visual-studio-code.md).
az logic workflow create --definition
[--access-control] [--endpoints-configuration] [--integration-account]
- [--integration-service-environment]
[--state {Completed, Deleted, Disabled, Enabled, NotSpecified, Suspended}] [--tags] ```
Your command must include the following [required parameters](/cli/azure/logic/w
| Resource group name | `--resource-group -g` | The [Azure resource group](../azure-resource-manager/management/overview.md) in which you want to create your logic app. [Create a resource group](#examplecreate-resource-group) before you begin if you don't already have one for your logic app. | ||||
-You can also include additional [optional parameters](/cli/azure/logic/workflow#az-logic-workflow-create-optional-parameters) to configure your logic app's access controls, endpoints, integration account, integration service environment, state, and resource tags.
+You can also include additional [optional parameters](/cli/azure/logic/workflow#az-logic-workflow-create-optional-parameters) to configure your logic app's access controls, endpoints, integration account, state, and resource tags.
### Example - Create logic app
logic-apps Set Up Sql Db Storage Single Tenant Standard Workflows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/set-up-sql-db-storage-single-tenant-standard-workflows.md
This article provides an overview for why you might want to use SQL storage as t
If you're new to logic apps, review the following documentation: - [What is Azure Logic Apps](logic-apps-overview.md)-- [Single-tenant versus multi-tenant and integration service environment for Azure Logic Apps](single-tenant-overview-compare.md)
+- [Single-tenant versus multitenant in Azure Logic Apps](single-tenant-overview-compare.md)
<a name="why-sql"></a>
machine-learning How To Managed Network Compute https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/machine-learning/how-to-managed-network-compute.md
Previously updated : 08/22/2023 Last updated : 08/16/2024
Learn how to configure compute clusters or compute instances in an Azure Machine Learning managed virtual network.
-When using a managed network, compute resources managed by Azure Machine Learning can participate in the virtual network. Azure Machine Learning _compute clusters_, _compute instances_, and _managed online endpoints_ are created in the managed network.
+When you use a managed network, compute resources managed by Azure Machine Learning can participate in the virtual network. Azure Machine Learning _compute clusters_, _compute instances_, and _managed online endpoints_ are created in the managed network.
This article focuses on configuring compute clusters and compute instances in a managed network. For information on managed online endpoints, see [secure online endpoints with network isolation](how-to-secure-online-endpoint.md).
Before following the steps in this article, make sure you have the following pre
> pip install --upgrade azure-ai-ml azure-identity > ```
-* The examples in this article assume that your code begins with the following Python. This code imports the classes required when creating a workspace with managed VNet, sets variables for your Azure subscription and resource group, and creates the `ml_client`:
+* The examples in this article assume that your code begins with the following Python. This code imports the classes required when creating a workspace with managed virtual network, sets variables for your Azure subscription and resource group, and creates the `ml_client`:
```python from azure.ai.ml import MLClient
Before following the steps in this article, make sure you have the following pre
# Replace with the values for your Azure subscription and resource group. subscription_id = "<SUBSCRIPTION_ID>" resource_group = "<RESOURCE_GROUP>"
+ workspace_name = "<WORKSPACE_NAME>"
# get a handle to the subscription
- ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
+ ml_client = MLClient(
+ workspace_name=workspace_name,
+ subscription_id=subscription_id,
+ resource_group_name=resource_group,
+ credential=DefaultAzureCredential()
+ )
``` # [Studio](#tab/studio)
Before following the steps in this article, make sure you have the following pre
## Configure compute resources
-Use the tabs below to learn how to configure compute clusters and compute instances in a managed virtual network:
+Use the following tabs to learn how to configure compute clusters and compute instances in a managed virtual network:
> [!TIP]
-> When using a managed virtual network, compute clusters and compute instances are automatically created in the managed network. The steps below focus on configuring the compute resources to not use a public IP address.
+> When using a managed virtual network, compute clusters and compute instances are automatically created in the managed network. The following steps focus on configuring the compute resources to not use a public IP address.
# [Azure CLI](#tab/azure-cli)
from azure.ai.ml.entities import AmlCompute
# Create a compute cluster compute_cluster = AmlCompute(
- name="mycomputecluster,
+ name="mycomputecluster",
size="STANDARD_D2_V2", min_instances=0, max_instances=4,
machine-learning How To Use Event Grid Batch https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/machine-learning/how-to-use-event-grid-batch.md
To indicate the input data that you want to send to the deployment job, this tut
| Property | Required | Value | Description | |-|-|-|-|
- | **Region** | Yes | **West US** | The Azure datacenter region for storing your app's information. This example deploys the sample logic app to the **West US** region in Azure. <br><br>**Note**: If your subscription is associated with an integration service environment, this list includes those environments. |
+ | **Region** | Yes | **West US** | The Azure datacenter region for storing your app's information. This example deploys the sample logic app to the **West US** region in Azure. |
| **Enable log analytics** | Yes | **No** | This option appears and applies only when you select the **Consumption** logic app type. Change this option only when you want to enable diagnostic logging. For this tutorial, keep the default selection. | 1. When you're done, select **Review + create**. After Azure validates the information about your logic app resource, select **Create**.
machine-learning Tutorial Create Secure Workspace Vnet https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/machine-learning/tutorial-create-secure-workspace-vnet.md
Previously updated : 08/22/2023 Last updated : 08/16/2024 monikerRange: 'azureml-api-2 || azureml-api-1'
After completing this tutorial, you'll have the following architecture:
* __Training__: Contains the Azure Machine Learning workspace, dependency services, and resources used for training models. * __Scoring__: For the steps in this tutorial, it isn't used. However if you continue using this workspace for other tutorials, we recommend using this subnet when deploying models to [endpoints](concept-endpoints.md). * __AzureBastionSubnet__: Used by the Azure Bastion service to securely connect clients to Azure Virtual Machines.
-* An Azure Machine Learning workspace that uses a private endpoint to communicate using the VNet.
-* An Azure Storage Account that uses private endpoints to allow storage services such as blob and file to communicate using the VNet.
-* An Azure Container Registry that uses a private endpoint communicate using the VNet.
-* Azure Bastion, which allows you to use your browser to securely communicate with the jump box VM inside the VNet.
-* An Azure Virtual Machine that you can remotely connect to and access resources secured inside the VNet.
+* An Azure Machine Learning workspace that uses a private endpoint to communicate using the virtual network.
+* An Azure Storage Account that uses private endpoints to allow storage services such as blob and file to communicate using the virtual network.
+* An Azure Container Registry that uses a private endpoint communicate using the virtual network.
+* Azure Bastion, which allows you to use your browser to securely communicate with the jump box VM inside the virtual network.
+* An Azure Virtual Machine that you can remotely connect to and access resources secured inside the virtual network.
* An Azure Machine Learning compute instance and compute cluster. > [!TIP]
To create a virtual network, use the following steps:
1. In the [Azure portal](https://portal.azure.com), select the portal menu in the upper left corner. From the menu, select __+ Create a resource__ and then enter __Virtual Network__ in the search field. Select the __Virtual Network__ entry, and then select __Create__.
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-resource-search-vnet.png" alt-text="Screenshot of the create resource search form with virtual network selected.":::
+ :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-resource-search-vnet.png" alt-text="Screenshot of the resource search form with virtual network selected.":::
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-resource-vnet.png" alt-text="Screenshot of the virtual network create form.":::
To create a virtual network, use the following steps:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-vnet-basics.png" alt-text="Screenshot of the basic virtual network configuration form.":::
-1. Select __Security__. Select to __Enable Azure Bastion__. [Azure Bastion](../bastion/bastion-overview.md) provides a secure way to access the VM jump box you'll create inside the VNet in a later step. Use the following values for the remaining fields:
+1. Select __Security__. Select to __Enable Azure Bastion__. [Azure Bastion](../bastion/bastion-overview.md) provides a secure way to access the VM jump box you create inside the virtual network in a later step. Use the following values for the remaining fields:
* __Bastion name__: A unique name for this Bastion instance * __Public IP address__: Create a new public IP address.
To create a virtual network, use the following steps:
> [!WARNING] > Do not use the 172.17.0.0/16 IP address range for your VNet. This is the default subnet range used by the Docker bridge network, and will result in errors if used for your VNet. Other ranges may also conflict depending on what you want to connect to the virtual network. For example, if you plan to connect your on premises network to the VNet, and your on-premises network also uses the 172.16.0.0/16 range. Ultimately, it is up to __you__ to plan your network infrastructure.
- 1. Select the __Default__ subnet and then select __Remove subnet__.
+ 1. Select the __Default__ subnet and then select the __edit icon__.
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/delete-default-subnet.png" alt-text="Screenshot of deleting default subnet.":::
+ :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/edit-default-subnet.png" alt-text="Screenshot of selecting the edit icon of default subnet.":::
- 1. To create a subnet to contain the workspace, dependency services, and resources used for _training_, select __+ Add subnet__ and set the subnet name, starting address, and subnet size. The following are the values used in this tutorial:
- * __Name__: Training
- * __Starting address__: 172.16.0.0
- * __Subnet size__: /24 (256 addresses)
-
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/vnet-add-training-subnet.png" alt-text="Screenshot of Training subnet.":::
+ 1. Change the subnet __Name__ to __Training__. Leave the other values at the default settings, then select __Save__ to save the changes.
- 1. To create a subnet for compute resources used to _score_ your models, select __+ Add subnet__ again, and set the name and address range:
+ 1. To create a subnet for compute resources used to _score_ your models, select __+ Add subnet__ and set the name and address range:
* __Subnet name__: Scoring
- * __Starting address__: 172.16.1.0
+ * __Starting address__: 172.16.2.0
* __Subnet size__: /24 (256 addresses) :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/vnet-add-scoring-subnet.png" alt-text="Screenshot of Scoring subnet.":::
- 1. To create a subnet for _Azure Bastion_, select __+ Add subnet__ and set the template, starting address, and subnet size:
- * __Subnet template__: Azure Bastion
- * __Starting address__: 172.16.2.0
- * __Subnet size__: /26 (64 addresses)
-
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/vnet-add-azure-bastion-subnet.png" alt-text="Screenshot of Azure Bastion subnet.":::
+ 1. Select __Add__ to add the subnet.
1. Select __Review + create__.
To create a virtual network, use the following steps:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-storage.png" alt-text="Screenshot of storage account basic config.":::
-1. From the __Networking__ tab, select __Private endpoint__ and then select __+ Add private endpoint__.
+1. From the __Networking__ tab, select __Disable public access__ and then select __+ Add private endpoint__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/storage-enable-private-endpoint.png" alt-text="Screenshot of the form to add the blob private network."::: 1. On the __Create private endpoint__ form, use the following values:
- * __Subscription__: The same Azure subscription that contains the previous resources you've created.
- * __Resource group__: The same Azure resource group that contains the previous resources you've created.
- * __Location__: The same Azure region that contains the previous resources you've created.
+ * __Subscription__: The same Azure subscription that contains the previous resources.
+ * __Resource group__: The same Azure resource group that contains the previous resources.
+ * __Location__: The same Azure region that contains the previous resources.
* __Name__: A unique name for this private endpoint. * __Target sub-resource__: blob * __Virtual network__: The virtual network you created earlier.
To create a virtual network, use the following steps:
* __Private DNS integration__: Yes * __Private DNS Zone__: privatelink.blob.core.windows.net
- Select __OK__ to create the private endpoint.
+ Select __Add__ to create the private endpoint.
1. Select __Review + create__. Verify that the information is correct, and then select __Create__.
-1. Once the Storage Account has been created, select __Go to resource__:
+1. Once the Storage Account is created, select __Go to resource__:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/storage-go-to-resource.png" alt-text="Screenshot of the go to new storage resource button.":::
To create a virtual network, use the following steps:
1. Select __Next : Resource__, and then set __Target sub-resource__ to __file__.
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/storage-file-private-endpoint-resource.png" alt-text="Screenshot of the resource form when selecting a sub-resource of 'file'.":::
+ :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/storage-file-private-endpoint-resource.png" alt-text="Screenshot of the resource form when selecting a subresource of 'file'.":::
-1. Select __Next : Configuration__, and then use the following values:
+1. Select __Next : Virtual Network__, and then use the following values:
* __Virtual network__: The network you created previously * __Subnet__: Training
- * __Integrate with private DNS zone__: Yes
- * __Private DNS zone__: privatelink.file.core.windows.net
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/storage-file-private-endpoint-config.png" alt-text="Screenshot of the configuration form when adding the file private endpoint.":::
-1. Select __Review + Create__. Verify that the information is correct, and then select __Create__.
+1. Continue through the tabs selecting defaults until you reach __Review + Create__. Verify that the information is correct, and then select __Create__.
> [!TIP]
-> If you plan to use a [batch endpoint](concept-endpoints.md) or an Azure Machine Learning pipeline that uses a [ParallelRunStep](./tutorial-pipeline-batch-scoring-classification.md), it is also required to configure private endpoints target **queue** and **table** sub-resources. ParallelRunStep uses queue and table under the hood for task scheduling and dispatching.
+> If you plan to use a [batch endpoint](concept-endpoints.md) or an Azure Machine Learning pipeline that uses a [ParallelRunStep](./tutorial-pipeline-batch-scoring-classification.md), it is also required to configure private endpoints target __queue__ and __table__ sub-resources. ParallelRunStep internally uses queue and table for task scheduling and dispatching.
## Create a key vault
To create a virtual network, use the following steps:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-key-vault.png" alt-text="Screenshot of the basics form when creating a new key vault.":::
-1. From the __Networking__ tab, select __Private endpoint__ and then select __+ Add__.
+1. From the __Networking__ tab, deselect __Enable public access__ and then select __+ create a private endpoint__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/key-vault-networking.png" alt-text="Screenshot of the networking form when adding a private endpoint for the key vault."::: 1. On the __Create private endpoint__ form, use the following values:
- * __Subscription__: The same Azure subscription that contains the previous resources you've created.
- * __Resource group__: The same Azure resource group that contains the previous resources you've created.
- * __Location__: The same Azure region that contains the previous resources you've created.
+ * __Subscription__: The same Azure subscription that contains the previous resources.
+ * __Resource group__: The same Azure resource group that contains the previous resources.
+ * __Location__: The same Azure region that contains the previous resources.
* __Name__: A unique name for this private endpoint. * __Target sub-resource__: Vault * __Virtual network__: The virtual network you created earlier. * __Subnet__: Training (172.16.0.0/24)
- * __Private DNS integration__: Yes
- * __Private DNS Zone__: privatelink.vaultcore.azure.net
+ * __Enable Private DNS integration__: Yes
+ * __Private DNS Zone__: Select the resource group that contains the virtual network and key vault.
- Select __OK__ to create the private endpoint.
+ Select __Add__ to create the private endpoint.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/key-vault-private-endpoint.png" alt-text="Screenshot of the key vault private endpoint configuration form.":::
To create a virtual network, use the following steps:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/container-registry-networking.png" alt-text="Screenshot of the networking form when adding a container registry private endpoint."::: 1. On the __Create private endpoint__ form, use the following values:
- * __Subscription__: The same Azure subscription that contains the previous resources you've created.
- * __Resource group__: The same Azure resource group that contains the previous resources you've created.
- * __Location__: The same Azure region that contains the previous resources you've created.
+ * __Subscription__: The same Azure subscription that contains the previous resources.
+ * __Resource group__: The same Azure resource group that contains the previous resources.
+ * __Location__: The same Azure region that contains the previous resources.
* __Name__: A unique name for this private endpoint. * __Target sub-resource__: registry * __Virtual network__: The virtual network you created earlier. * __Subnet__: Training (172.16.0.0/24) * __Private DNS integration__: Yes
- * __Private DNS Zone__: privatelink.azurecr.io
+ * __Resource group__: Select the resource group that contains the virtual network and container registry.
- Select __OK__ to create the private endpoint.
+ Select __Add__ to create the private endpoint.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/container-registry-private-endpoint.png" alt-text="Screenshot of the configuration form for the container registry private endpoint."::: 1. Select __Review + create__. Verify that the information is correct, and then select __Create__.
-1. After the container registry has been created, select __Go to resource__.
+
+1. After the container registry is created, select __Go to resource__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/container-registry-go-to-resource.png" alt-text="Screenshot of the 'go to resource' button.":::
To create a virtual network, use the following steps:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/machine-learning-create.png" alt-text="Screenshot of the create page for Azure Machine Learning."::: 1. From the __Basics__ tab, select the __subscription__, __resource group__, and __Region__ you previously used for the virtual network. Use the following values for the other fields:
- * __Workspace name__: A unique name for your workspace.
+ * __Name__: A unique name for your workspace.
* __Storage account__: Select the storage account you created previously. * __Key vault__: Select the key vault you created previously. * __Application insights__: Use the default value.
To create a virtual network, use the following steps:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-machine-learning-workspace.png" alt-text="Screenshot of the basic workspace configuration form.":::
-1. From the __Networking__ tab, select __Private with Internet Outbound__. In the __Workspace inbound access__ section, select __+ add__.
+1. From the __Networking__ tab, select __Private with Internet Outbound__. In the __Workspace inbound access__ section, select __+ Add__.
1. On the __Create private endpoint__ form, use the following values:
- * __Subscription__: The same Azure subscription that contains the previous resources you've created.
- * __Resource group__: The same Azure resource group that contains the previous resources you've created.
- * __Location__: The same Azure region that contains the previous resources you've created.
+ * __Subscription__: The same Azure subscription that contains the previous resources.
+ * __Resource group__: The same Azure resource group that contains the previous resources.
+ * __Location__: The same Azure region that contains the previous resources.
* __Name__: A unique name for this private endpoint. * __Target sub-resource__: amlworkspace * __Virtual network__: The virtual network you created earlier.
To create a virtual network, use the following steps:
1. From the __Networking__ tab, in the __Workspace outbound access__ section, select __Use my own virtual network__. 1. Select __Review + create__. Verify that the information is correct, and then select __Create__.
-1. Once the workspace has been created, select __Go to resource__.
-1. From the __Settings__ section on the left, select __Private endpoint connections__ and then select the link in the __Private endpoint__ column:
+1. Once the workspace is created, select __Go to resource__.
+1. From the __Settings__ section on the left, select __Networking__, __Private endpoint connections__, and then select the link in the __Private endpoint__ column:
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/workspace-private-endpoint-connections.png" alt-text="Screenshot of the private endpoint connections for the workspace.":::
-1. Once the private endpoint information appears, select __DNS configuration__ from the left of the page. Save the IP address and fully qualified domain name (FQDN) information on this page, as it will be used later.
+1. Once the private endpoint information appears, select __DNS configuration__ from the left of the page. Save the IP address and fully qualified domain name (FQDN) information on this page.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/workspace-private-endpoint-dns.png" alt-text="screenshot of the IP and FQDN entries for the workspace.":::
To create a virtual network, use the following steps:
## Enable studio
-Azure Machine Learning studio is a web-based application that lets you easily manage your workspace. However, it needs some extra configuration before it can be used with resources secured inside a VNet. Use the following steps to enable studio:
+Azure Machine Learning studio is a web-based application that lets you easily manage your workspace. However, it needs some extra configuration before it can be used with resources secured inside a virtual network. Use the following steps to enable studio:
-1. When using an Azure Storage Account that has a private endpoint, add the service principal for the workspace as a __Reader__ for the storage private endpoint(s). From the Azure portal, select your storage account and then select __Networking__. Next, select __Private endpoint connections__.
+1. When using an Azure Storage Account that has a private endpoint, add the service principal for the workspace as a __Reader__ for the storage private endpoints. From the Azure portal, select your storage account and then select __Networking__. Next, select __Private endpoint connections__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/storage-private-endpoint-select.png" alt-text="Screenshot of storage private endpoint connections.":::
Azure Machine Learning studio is a web-based application that lets you easily ma
> * [Migrate to workspace-based Application Insights resources](../azure-monitor/app/convert-classic-resource.md). > * [Configure your Azure Monitor private link](../azure-monitor/logs/private-link-configure.md).
-1. In the [Azure portal](https://portal.azure.com), select your Azure Machine Learning workspace. From __Overview__, select the __Application Insights__ link.
-
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/workspace-application-insight.png" alt-text="Screenshot of the Application Insights link.":::
-
-1. In the __Properties__ for Application Insights, check the __WORKSPACE__ entry to see if it contains a value. If it _doesn't_, select __Migrate to Workspace-based__, select the __Subscription__ and __Log Analytics Workspace__ to use, then select __Apply__.
-
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/migrate-workspace-based.png" alt-text="Screenshot of the link to migrate to workspace-based.":::
-
-1. In the Azure portal, select __Home__, and then search for __Private link__. Select the __Azure Monitor Private Link Scope__ result and then select __Create__.
+1. In the [Azure portal](https://portal.azure.com), select __Home__, and then search for __Private link__. Select the __Azure Monitor Private Link Scope__ result and then select __Create__.
1. From the __Basics__ tab, select the same __Subscription__, __Resource Group__, and __Resource group region__ as your Azure Machine Learning workspace. Enter a __Name__ for the instance, and then select __Review + Create__. To create the instance, select __Create__.
-1. Once the Azure Monitor Private Link Scope instance has been created, select the instance in the Azure portal. From the __Configure__ section, select __Azure Monitor Resources__ and then select __+ Add__.
+1. Once the Azure Monitor Private Link Scope instance is created, select the instance in the Azure portal. From the __Configure__ section, select __Azure Monitor Resources__ and then select __+ Add__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/add-monitor-resources.png" alt-text="Screenshot of the add button.":::
Azure Machine Learning studio is a web-based application that lets you easily ma
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/private-endpoint-connections.png" alt-text="Screenshot of the add private endpoint button.":::
-1. Select the same __Subscription__, __Resource Group__, and __Region__ that contains your VNet. Select __Next: Resource__.
+1. Select the same __Subscription__, __Resource Group__, and __Region__ that contains your virtual network. Select __Next: Resource__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/monitor-private-endpoint-basics.png" alt-text="Screenshot of the Azure Monitor private endpoint basics.":::
Azure Machine Learning studio is a web-based application that lets you easily ma
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/monitor-private-endpoint-network.png" alt-text="Screenshot of the Azure Monitor private endpoint network.":::
-1. After the private endpoint has been created, return to the __Azure Monitor Private Link Scope__ resource in the portal. From the __Configure__ section, select __Access modes__. Select __Private only__ for __Ingestion access mode__ and __Query access mode__, then select __Save__.
+1. After the private endpoint is created, return to the __Azure Monitor Private Link Scope__ resource in the portal. From the __Configure__ section, select __Access modes__. Select __Private only__ for __Ingestion access mode__ and __Query access mode__, then select __Save__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/access-modes.png" alt-text="Screenshot of the private link scope access modes."::: ## Connect to the workspace
-There are several ways that you can connect to the secured workspace. The steps in this article use a __jump box__, which is a virtual machine in the VNet. You can connect to it using your web browser and Azure Bastion. The following table lists several other ways that you might connect to the secure workspace:
+There are several ways that you can connect to the secured workspace. The steps in this article use a __jump box__, which is a virtual machine in the virtual network. You can connect to it using your web browser and Azure Bastion. The following table lists several other ways that you might connect to the secure workspace:
| Method | Description | | -- | -- |
-| [Azure VPN gateway](../vpn-gateway/vpn-gateway-about-vpngateways.md) | Connects on-premises networks to the VNet over a private connection. Connection is made over the public internet. |
+| [Azure VPN gateway](../vpn-gateway/vpn-gateway-about-vpngateways.md) | Connects on-premises networks to the virtual network over a private connection. Connection is made over the public internet. |
| [ExpressRoute](https://azure.microsoft.com/services/expressroute/) | Connects on-premises networks into the cloud over a private connection. Connection is made using a connectivity provider. | > [!IMPORTANT]
There are several ways that you can connect to the secured workspace. The steps
### Create a jump box (VM)
-Use the following steps to create an Azure Virtual Machine to use as a jump box. Azure Bastion enables you to connect to the VM desktop through your browser. From the VM desktop, you can then use the browser on the VM to connect to resources inside the VNet, such as Azure Machine Learning studio. Or you can install development tools on the VM.
+Use the following steps to create an Azure Virtual Machine to use as a jump box. Azure Bastion enables you to connect to the VM desktop through your browser. From the VM desktop, you can then use the browser on the VM to connect to resources inside the virtual network, such as Azure Machine Learning studio. Or you can install development tools on the VM.
> [!TIP]
-> The steps below create a Windows 11 enterprise VM. Depending on your requirements, you may want to select a different VM image. The Windows 11 (or 10) enterprise image is useful if you need to join the VM to your organization's domain.
+> The following steps create a Windows 11 enterprise VM. Depending on your requirements, you may want to select a different VM image. The Windows 11 (or 10) enterprise image is useful if you need to join the VM to your organization's domain.
1. In the [Azure portal](https://portal.azure.com), select the portal menu in the upper left corner. From the menu, select __+ Create a resource__ and then enter __Virtual Machine__. Select the __Virtual Machine__ entry, and then select __Create__. 1. From the __Basics__ tab, select the __subscription__, __resource group__, and __Region__ you previously used for the virtual network. Provide values for the following fields: * __Virtual machine name__: A unique name for the VM.
- * __Username__: The username you'll use to log in to the VM.
+ * __Username__: The username you use to sign in to the VM.
* __Password__: The password for the username. * __Security type__: Standard. * __Image__: Windows 11 Enterprise.
Use the following steps to create an Azure Virtual Machine to use as a jump box.
### Connect to the jump box
-1. Once the virtual machine has been created, select __Go to resource__.
-1. From the top of the page, select __Connect__ and then __Bastion__.
+1. Once the virtual machine is created, select __Go to resource__.
+1. From the top of the page, select __Connect__ and then __Connect via Bastion__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/virtual-machine-connect.png" alt-text="Screenshot of the 'connect' list, with 'Bastion' selected.":::
-1. Select __Use Bastion__, and then provide your authentication information for the virtual machine, and a connection will be established in your browser.
-
- :::image type="content" source="./media/tutorial-create-secure-workspace-vnet/use-bastion.png" alt-text="Screenshot of the Use Bastion button.":::
+1. Provide your authentication information for the virtual machine, and a connection is established in your browser.
-## Create a compute cluster and compute instance
+## Create a compute cluster and instance
-A compute cluster is used by your training jobs. A compute instance provides a Jupyter Notebook experience on a shared compute resource attached to your workspace.
+A compute instance provides a Jupyter Notebook experience on a shared compute resource attached to your workspace.
1. From an Azure Bastion connection to the jump box, open the __Microsoft Edge__ browser on the remote desktop. 1. In the remote browser session, go to __https://ml.azure.com__. When prompted, authenticate using your Microsoft Entra account.
A compute cluster is used by your training jobs. A compute instance provides a J
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/studio-select-workspace.png" alt-text="Screenshot of the select Machine Learning workspace form.":::
-1. From studio, select __Compute__, __Compute clusters__, and then __+ New__.
+1. From studio, select Compute, Compute clusters, and then + New.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/studio-new-compute-cluster.png" alt-text="Screenshot of the compute clusters page, with the 'new' button selected.":::
-1. From the __Virtual Machine__ dialog, select __Next__ to accept the default virtual machine configuration.
+1. From the Virtual Machine dialog, select Next to accept the default virtual machine configuration.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/studio-new-compute-vm.png" alt-text="Screenshot of the compute cluster virtual machine configuration.":::
-
-1. From the __Configure Settings__ dialog, enter __cpu-cluster__ as the __Compute name__. Set the __Subnet__ to __Training__ and then select __Create__ to create the cluster.
+
+1. From the Configure Settings dialog, enter cpu-cluster as the Compute name. Set the Subnet to Training and then select Create to create the cluster.
> [!TIP]
- > Compute clusters dynamically scale the nodes in the cluster as needed. We recommend leaving the minimum number of nodes at 0 to reduce costs when the cluster is not in use.
+ > Compute clusters dynamically scale the nodes in the cluster as needed. We recommend leaving the minimum number of nodes at 0 to reduce costs when the cluster isn't in use.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/studio-new-compute-settings.png" alt-text="Screenshot of the configure settings form.":::
A compute cluster is used by your training jobs. A compute instance provides a J
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-compute-instance.png" alt-text="Screenshot of the compute instances page, with the 'new' button selected.":::
-1. From the __Virtual Machine__ dialog, enter a unique __Computer name__ and select __Next: Advanced Settings__.
+1. From __Required settings__, enter a unique __Computer name__ and select __Next__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-compute-instance-vm.png" alt-text="Screenshot of compute instance virtual machine configuration.":::
-1. From the __Advanced Settings__ dialog, set the __Subnet__ to __Training__, and then select __Create__.
+1. Continue selecting __Next__ until you arrive at __Security__ dialog, select the __Virtual network__ and set the __Subnet__ to __Training__. Select __Review + Create__ and then select __Create__.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/create-compute-instance-settings.png" alt-text="Screenshot of the advanced settings.":::
When Azure Container Registry is behind the virtual network, Azure Machine Learn
az extension add -n ml ```
-1. To update the workspace to use the compute cluster to build Docker images. Replace `docs-ml-rg` with your resource group. Replace `docs-ml-ws` with your workspace. Replace `cpu-cluster` with the compute cluster to use:
+1. To update the workspace to use the compute cluster to build Docker images. Replace `docs-ml-rg` with your resource group. Replace `docs-ml-ws` with your workspace. Replace `cpu-cluster` with the compute cluster name:
```azurecli-interactive az ml workspace update \
- -n myworkspace \
- -g myresourcegroup \
- -i mycomputecluster
+ -n docs-ml-ws \
+ -g docs-ml-rg \
+ -i cpu-cluster
``` > [!NOTE]
From studio, select __Compute__, __Compute clusters__, and then select the compu
### Stop the jump box
-Once it has been created, select the virtual machine in the Azure portal and then use the __Stop__ button. When you're ready to use it again, use the __Start__ button to start it.
+Once created, select the virtual machine in the Azure portal and then use the __Stop__ button. When you're ready to use it again, use the __Start__ button to start it.
:::image type="content" source="./media/tutorial-create-secure-workspace-vnet/virtual-machine-stop.png" alt-text="Screenshot of the stop button for the jump box virtual machine.":::
To delete all resources created in this tutorial, use the following steps:
## Next steps :::moniker range="azureml-api-2"
-Now that you've created a secure workspace and can access studio, learn how to [deploy a model to an online endpoint with network isolation](how-to-secure-online-endpoint.md).
+Now that you have a secure workspace and can access studio, learn how to [deploy a model to an online endpoint with network isolation](how-to-secure-online-endpoint.md).
:::moniker-end :::moniker range="azureml-api-1"
-Now that you've created a secure workspace, learn how to [deploy a model](./v1/how-to-deploy-and-where.md).
+Now that you have a secure workspace, learn how to [deploy a model](./v1/how-to-deploy-and-where.md).
:::moniker-end
network-watcher Connection Monitor Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/connection-monitor-overview.md
Connection monitor relies on lightweight executable files to run connectivity ch
To make Connection monitor recognize your Azure VMs or virtual machine scale sets as monitoring sources, install the Network Watcher Agent virtual machine extension on them. This extension is also known as the *Network Watcher extension*. Azure virtual machines and scale sets require the extension to trigger end-to-end monitoring and other advanced functionality.
-You can install the Network Watcher extension when you create a virtual machine or a scale set. You can also separately install, configure, and troubleshoot the Network Watcher extension for [Linux](../virtual-machines/extensions/network-watcher-linux.md) and [Windows](../virtual-machines/extensions/network-watcher-windows.md).
+You can install the Network Watcher extension when you create a virtual machine or a scale set. You can also separately install, configure, and troubleshoot the Network Watcher extension for [Linux](network-watcher-agent-linux.md) and [Windows](network-watcher-agent-windows.md).
Rules for a network security group (NSG) or firewall can block communication between the source and destination. Connection monitor detects this issue and shows it as a diagnostics message in the topology. To enable connection monitoring, ensure that the NSG and firewall rules allow packets over TCP or ICMP between the source and destination.
network-watcher Connection Troubleshoot Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/connection-troubleshoot-cli.md
In this article, you learn how to use the connection troubleshoot feature of Azu
You can also [install Azure CLI locally](/cli/azure/install-azure-cli) to run the commands. If you run Azure CLI locally, sign in to Azure using the [az login](/cli/azure/reference-index#az-login) command. > [!NOTE]
-> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](../virtual-machines/extensions/network-watcher-windows.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](../virtual-machines/extensions/network-watcher-linux.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](../virtual-machines/extensions/network-watcher-update.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
+> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](network-watcher-agent-windows.md).
+> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](network-watcher-agent-linux.md).
+> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](network-watcher-agent-update.md).
## Test connectivity to a virtual machine
network-watcher Connection Troubleshoot Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/connection-troubleshoot-overview.md
Connection troubleshoot provides the capability to check TCP or ICMP connections
> [!IMPORTANT] > Connection troubleshoot requires that the virtual machine you troubleshoot from has the *Network Watcher agent VM extension* installed. The extension is not required on the destination virtual machine.
-> - To install the extension on a Windows VM, see [Azure Network Watcher agent VM extension for Windows](../virtual-machines/extensions/network-watcher-windows.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To install the extension on a Linux VM, see [Azure Network Watcher agent VM extension for Linux](../virtual-machines/extensions/network-watcher-linux.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](../virtual-machines/extensions/network-watcher-update.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
+> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](network-watcher-agent-windows.md).
+> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](network-watcher-agent-linux.md).
+> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](network-watcher-agent-update.md).
Connection troubleshoot can test connections to any of these destinations:
network-watcher Connection Troubleshoot Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/connection-troubleshoot-portal.md
In this article, you learn how to use the connection troubleshoot feature of Azu
> [!NOTE] > When you use connection troubleshoot, Azure portal automatically installs the Network Watcher agent VM extension on the source virtual machine if it's not already installed.
-> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](../virtual-machines/extensions/network-watcher-windows.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](../virtual-machines/extensions/network-watcher-linux.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](../virtual-machines/extensions/network-watcher-update.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
+> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](network-watcher-agent-windows.md).
+> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](network-watcher-agent-linux.md).
+> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](network-watcher-agent-update.md).
## Test connectivity to a virtual machine
network-watcher Connection Troubleshoot Powershell https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/connection-troubleshoot-powershell.md
In this article, you learn how to use the connection troubleshoot feature of Azu
You can also install Azure PowerShell locally to run the cmdlets. This article requires the Az PowerShell module. For more information, see [How to install Azure PowerShell](/powershell/azure/install-azure-powershell). To find the installed version, run `Get-InstalledModule -Name Az`. If you run PowerShell locally, sign in to Azure using the [Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet. > [!NOTE]
-> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](../virtual-machines/extensions/network-watcher-windows.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](../virtual-machines/extensions/network-watcher-linux.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
-> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](../virtual-machines/extensions/network-watcher-update.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
+> - To install the extension on a Windows virtual machine, see [Network Watcher agent VM extension for Windows](network-watcher-agent-windows.md).
+> - To install the extension on a Linux virtual machine, see [Network Watcher agent VM extension for Linux](network-watcher-agent-linux.md).
+> - To update an already installed extension, see [Update Network Watcher agent VM extension to the latest version](network-watcher-agent-update.md).
## Check connectivity to a virtual machine
network-watcher Migrate To Connection Monitor From Network Performance Monitor https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/migrate-to-connection-monitor-from-network-performance-monitor.md
The following table compares Network performance monitor and the new Connection
The migration helps produce the following results: -- On-premises agents and firewall settings work as is. No changes are required. Log Analytics agents that are installed on Azure virtual machines need to be replaced with the [Network Watcher extension](../virtual-machines/extensions/network-watcher-windows.md?toc=/azure/network-watcher/toc.json&bc=/azure/network-watcher/breadcrumb/toc.json).
+- On-premises agents and firewall settings work as is. No changes are required. Log Analytics agents that are installed on Azure virtual machines need to be replaced with the [Network Watcher extension](network-watcher-agent-windows.md).
- Existing tests are mapped to Connection monitor > Test group > Test format. By selecting **Edit**, you can view and modify the properties of the new Connection monitor, download a template to make changes to it, and submit the template via Azure Resource Manager. - Agents send data to both the Log Analytics workspace and the metrics. - Data monitoring:
network-watcher Network Watcher Agent Linux https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/network-watcher-agent-linux.md
+
+ Title: Manage Network Watcher Agent VM extension - Linux
+description: Learn about the Network Watcher Agent virtual machine extension for Linux virtual machines and how to install and uninstall it.
++++ Last updated : 07/16/2024++
+#CustomerIntent: As an Azure administrator, I want to install Network Watcher Agent VM extension and manage it so that I can use Network watcher features to diagnose and monitor my Linux virtual machines (VMs).
++
+# Manage Network Watcher Agent virtual machine extension for Linux
+
+The Network Watcher Agent virtual machine extension is a requirement for some of Azure Network Watcher features that capture network traffic to diagnose and monitor Azure virtual machines (VMs). For more information, see [What is Azure Network Watcher?](network-watcher-overview.md)
+
+In this article, you learn how to install and uninstall Network Watcher Agent for Linux. Installation of the agent doesn't disrupt, or require a reboot of the virtual machine. If the virtual machine is deployed by an Azure service, check the documentation of the service to determine whether or not it permits installing extensions in the virtual machine.
+
+> [!NOTE]
+> Network Watcher Agent extension is not supported on AKS clusters.
+
+## Prerequisites
+
+# [**Portal**](#tab/portal)
+
+- An Azure Linux virtual machine (VM). For more information, see [Supported Linux distributions and versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+# [**PowerShell**](#tab/powershell)
+
+- An Azure Linux virtual machine (VM). For more information, see [Supported Linux distributions and versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+- Azure Cloud Shell or Azure PowerShell.
+
+ The steps in this article run the Azure PowerShell cmdlets interactively in [Azure Cloud Shell](/azure/cloud-shell/overview). To run the commands in the Cloud Shell, select **Open Cloud Shell** at the upper-right corner of a code block. Select **Copy** to copy the code and then paste it into Cloud Shell to run it. You can also run the Cloud Shell from within the Azure portal.
+
+ You can also [install Azure PowerShell locally](/powershell/azure/install-azure-powershell) to run the cmdlets. If you run PowerShell locally, sign in to Azure using the [Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet.
+
+# [**Azure CLI**](#tab/cli)
+
+- An Azure Linux virtual machine (VM). For more information, see [Supported Linux distributions and versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+- Azure Cloud Shell or Azure CLI.
+
+ The steps in this article run the Azure CLI commands interactively in [Azure Cloud Shell](/azure/cloud-shell/overview). To run the commands in the Cloud Shell, select **Open Cloud Shell** at the upper-right corner of a code block. Select **Copy** to copy the code, and paste it into Cloud Shell to run it. You can also run the Cloud Shell from within the Azure portal.
+
+ You can also [install Azure CLI locally](/cli/azure/install-azure-cli) to run the commands. If you run Azure CLI locally, sign in to Azure using the [az login](/cli/azure/reference-index#az-login) command.
+
+# [**Resource Manager**](#tab/arm)
+
+- An Azure Linux virtual machine (VM). For more information, see [Supported Linux distributions and versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+- Azure PowerShell or Azure CLI installed locally to deploy the template.
+
+ - You can [install Azure PowerShell](/powershell/azure/install-azure-powershell) to run the cmdlets. Use [Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet to sign in to Azure.
+
+ - You can [install Azure CLI](/cli/azure/install-azure-cli) to run the commands. Use [az login](/cli/azure/reference-index#az-login) command to sign in to Azure.
+++
+## Supported operating systems
+
+Network Watcher Agent extension for Linux can be installed on the following Linux distributions:
+
+| Distribution | Version |
+|||
+| AlmaLinux | 9.2 |
+| Azure Linux | 2.0 |
+| CentOS <sup>1</sup> | 6.10 and 7 |
+| Debian | 7 and 8 |
+| OpenSUSE Leap | 42.3+ |
+| Oracle Linux | 6.10 <sup>2</sup>, 7 and 8+ |
+| Red Hat Enterprise Linux (RHEL) | 6.10 <sup>3</sup>, 7, 8 and 9.2 |
+| Rocky Linux | 9.1 |
+| SUSE Linux Enterprise Server (SLES) | 12 and 15 (SP2, SP3, and SP4) |
+| Ubuntu | 16+ |
+
+<sup>1</sup> CentOS Linux reached its end-of-life (EOL) on June 30, 2024. For more information, see the [CentOS End Of Life guidance](../virtual-machines/workloads/centos/centos-end-of-life.md).
+
+<sup>2</sup> [Extended life cycle (ELS) support](https://www.oracle.com/a/ocom/docs/linux/oracle-linux-extended-support-ds.pdf) for Oracle Linux version 6.X ended on [July 1, 2024](https://www.oracle.com/a/ocom/docs/elsp-lifetime-069338.pdf).
+
+<sup>3</sup> [Extended life cycle (ELS) support](https://www.redhat.com/en/resources/els-datasheet) for Red Hat Enterprise Linux 6.X ended on [June 30, 2024]( https://access.redhat.com/product-life-cycles/?product=Red%20Hat%20Enterprise%20Linux,OpenShift%20Container%20Platform%204).
+
+## Extension schema
+
+The following JSON shows the schema for the Network Watcher Agent extension. The extension doesn't require, or support, any user-supplied settings. The extension relies on its default configuration.
+
+```json
+{
+ "name": "[concat(parameters('vmName'), '/AzureNetworkWatcherExtension')]",
+ "type": "Microsoft.Compute/virtualMachines/extensions",
+ "apiVersion": "2023-03-01",
+ "location": "[resourceGroup().location]",
+ "dependsOn": [
+ "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
+ ],
+ "properties": {
+ "autoUpgradeMinorVersion": true,
+ "publisher": "Microsoft.Azure.NetworkWatcher",
+ "type": "NetworkWatcherAgentLinux",
+ "typeHandlerVersion": "1.4"
+ }
+}
+```
+
+## List installed extensions
+
+# [**Portal**](#tab/portal)
+
+From the virtual machine page in the Azure portal, you can view the installed extension by following these steps:
+
+1. Under **Settings**, select **Extensions + applications**.
+
+1. In the **Extensions** tab, you can see all installed extensions on the virtual machine. If the list is long, you can use the search box to filter the list.
+
+ :::image type="content" source="./media/network-watcher-agent-linux/list-vm-extensions.png" alt-text="Screenshot that shows how to view installed extensions on a VM in the Azure portal." lightbox="./media/network-watcher-agent-linux/list-vm-extensions.png":::
+
+# [**PowerShell**](#tab/powershell)
+
+Use [Get-AzVMExtension](/powershell/module/az.compute/get-azvmextension) cmdlet to list all installed extensions on the virtual machine:
+
+```azurepowershell-interactive
+# List the installed extensions on the virtual machine.
+Get-AzVMExtension -ResourceGroupName 'myResourceGroup' -VMName 'myVM' | format-table Name, Publisher, ExtensionType, AutoUpgradeMinorVersion, EnableAutomaticUpgrade
+```
+
+The output of the cmdlet lists the installed extensions:
+
+```output
+Name Publisher ExtensionType AutoUpgradeMinorVersion EnableAutomaticUpgrade
+- - -- -
+AzureNetworkWatcherExtension Microsoft.Azure.NetworkWatcher NetworkWatcherAgentLinux True True
+```
+
+# [**Azure CLI**](#tab/cli)
+
+Use [az vm extension list](/cli/azure/vm/extension#az-vm-extension-list) command to list all installed extensions on the virtual machine:
+
+```azurecli
+# List the installed extensions on the virtual machine.
+az vm extension list --resource-group 'myResourceGroup' --vm-name 'myVM' --out table
+```
+
+The output of the command lists the installed extensions:
+
+```output
+Name ProvisioningState Publisher Version AutoUpgradeMinorVersion
+- - -
+AzureNetworkWatcherExtension Succeeded Microsoft.Azure.NetworkWatcher 1.4 True
+```
+
+# [**Resource Manager**](#tab/arm)
+
+N/A
+++
+## Install Network Watcher Agent VM extension
+
+# [**Portal**](#tab/portal)
+
+From the virtual machine page in the Azure portal, you can install the Network Watcher Agent VM extension by following these steps:
+
+1. Under **Settings**, select **Extensions + applications**.
+
+1. Select **+ Add** and search for **Network Watcher Agent** and install it. If the extension is already installed, you can see it in the list of extensions.
+
+ :::image type="content" source="./media/network-watcher-agent-linux/vm-extensions.png" alt-text="Screenshot that shows the VM's extensions page in the Azure portal." lightbox="./media/network-watcher-agent-linux/vm-extensions.png":::
+
+1. In the search box of **Install an Extension**, enter *Network Watcher Agent for Linux*. Select the extension from the list and select **Next**.
+
+ :::image type="content" source="./media/network-watcher-agent-linux/install-extension-linux.png" alt-text="Screenshot that shows how to install Network Watcher Agent for Linux in the Azure portal." lightbox="./media/network-watcher-agent-linux/install-extension-linux.png":::
+
+1. Select **Review + create** and then select **Create**.
+
+# [**PowerShell**](#tab/powershell)
+
+Use [Set-AzVMExtension](/powershell/module/az.compute/set-azvmextension) cmdlet to install Network Watcher Agent VM extension on the virtual machine:
+
+```azurepowershell-interactive
+# Install Network Watcher Agent for Linux on the virtual machine.
+Set-AzVMExtension -Name 'AzureNetworkWatcherExtension' -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentLinux' -EnableAutomaticUpgrade 1 -TypeHandlerVersion '1.4' -ResourceGroupName 'myResourceGroup' -VMName 'myVM'
+```
+
+Once the installation is successfully completed, you see the following output:
+
+```output
+RequestId IsSuccessStatusCode StatusCode ReasonPhrase
+ - -
+ True OK
+```
+
+# [**Azure CLI**](#tab/cli)
+
+Use [az vm extension set](/cli/azure/vm/extension#az-vm-extension-set) command to install Network Watcher Agent VM extension on the virtual machine:
+
+```azurecli
+# Install Network Watcher Agent for Windows on the virtual machine.
+az vm extension set --name 'NetworkWatcherAgentLinux' --extension-instance-name 'AzureNetworkWatcherExtension' --publisher 'Microsoft.Azure.NetworkWatcher' --enable-auto-upgrade 'true' --version '1.4' --resource-group 'myResourceGroup' --vm-name 'myVM'
+```
+
+# [**Resource Manager**](#tab/arm)
+
+Use the following Azure Resource Manager template (ARM template) to install Network Watcher Agent VM extension on a Linux virtual machine:
+
+```json
+{
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "vmName": {
+ "type": "string"
+ }
+ },
+ "variables": {},
+ "resources": [
+ {
+ "name": "[parameters('vmName')]",
+ "type": "Microsoft.Compute/virtualMachines",
+ "apiVersion": "2023-03-01",
+ "location": "[resourceGroup().location]",
+ "properties": {
+ }
+ },
+ {
+ "name": "[concat(parameters('vmName'), '/AzureNetworkWatcherExtension')]",
+ "type": "Microsoft.Compute/virtualMachines/extensions",
+ "apiVersion": "2023-03-01",
+ "location": "[resourceGroup().location]",
+ "dependsOn": [
+ "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
+ ],
+ "properties": {
+ "autoUpgradeMinorVersion": true,
+ "publisher": "Microsoft.Azure.NetworkWatcher",
+ "type": "NetworkWatcherAgentLinux",
+ "typeHandlerVersion": "1.4"
+ }
+ }
+ ],
+ "outputs": {}
+}
+```
+
+You can use either Azure PowerShell or Azure CLI to deploy the Resource Manager template:
+
+```azurepowershell
+# Deploy the JSON template file using Azure PowerShell.
+New-AzResourceGroupDeployment -ResourceGroupName 'myResourceGroup' -TemplateFile 'agent.json'
+```
+
+```azurecli
+# Deploy the JSON template file using the Azure CLI.
+az deployment group create --resource-group 'myResourceGroup' --template-file 'agent.json'
+```
+++
+## Uninstall Network Watcher Agent VM extension
+
+# [**Portal**](#tab/portal)
+
+From the virtual machine page in the Azure portal, you can uninstall the Network Watcher Agent VM extension by following these steps:
+
+1. Under **Settings**, select **Extensions + applications**.
+
+1. Select **AzureNetworkWatcherExtension** from the list of extensions, and then select **Uninstall**.
+
+ :::image type="content" source="./media/network-watcher-agent-linux/uninstall-extension-linux.png" alt-text="Screenshot that shows how to uninstall Network Watcher Agent for Linux in the Azure portal." lightbox="./media/network-watcher-agent-linux/uninstall-extension-linux.png":::
+
+ > [!NOTE]
+ > You might see Network Watcher Agent VM extension named differently than **AzureNetworkWatcherExtension**.
+
+# [**PowerShell**](#tab/powershell)
+
+Use [Remove-AzVMExtension](/powershell/module/az.compute/remove-azvmextension) cmdlet to remove Network Watcher Agent VM extension from the virtual machine:
+
+```azurepowershell-interactive
+# Uninstall Network Watcher Agent VM extension.
+Remove-AzureVMExtension -Name 'AzureNetworkWatcherExtension' -ResourceGroupName 'myResourceGroup' -VMName 'myVM'
+```
+
+# [**Azure CLI**](#tab/cli)
+
+Use [az vm extension delete](/cli/azure/vm/extension#az-vm-extension-delete) command to remove Network Watcher Agent VM extension from the virtual machine:
+
+```azurecli-interactive
+# Uninstall Network Watcher Agent VM extension.
+az vm extension delete --name 'AzureNetworkWatcherExtension' --resource-group 'myResourceGroup' --vm-name 'myVM'
+```
+
+# [**Resource Manager**](#tab/arm)
+
+N/A
+++
+## Frequently asked questions (FAQ)
+
+To get answers to most frequently asked questions about Network Watcher Agent, see [Network Watcher Agent FAQ](frequently-asked-questions.yml#network-watcher-agent).
+
+## Related content
+
+- [Update Azure Network Watcher extension to the latest version](network-watcher-agent-update.md).
+- [Network Watcher documentation](index.yml).
+- [Microsoft Q&A - Network Watcher](/answers/topics/azure-network-watcher.html).
network-watcher Network Watcher Agent Update https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/network-watcher-agent-update.md
+
+ Title: Update Network Watcher extension to the latest version
+description: Learn how to update the Azure Network Watcher Agent virtual machine (VM) extension to the latest version.
++++ Last updated : 07/05/2024+++
+# Update Azure Network Watcher extension to the latest version
+
+[Azure Network Watcher](network-watcher-monitoring-overview.md) is a network performance monitoring, diagnostic, and analytics service that monitors Azure networks. The Network Watcher Agent virtual machine (VM) extension is a requirement for capturing network traffic on demand and using other advanced functionality on Azure VMs. It's used by connection monitor, connection troubleshoot, and packet capture.
+
+## Prerequisites
+
+- An Azure account with an active subscription. If you don't have one, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+- An Azure virtual machine (VM) that has the Network Watcher extension installed.
+
+## Latest version
++
+### Identify latest version
+
+Use [az vm extension image list](/cli/azure/vm/extension/image#az-vm-extension-image-list) command to identify the latest version of the Network Watcher extension for your VM's operating system.
+
+# [Linux](#tab/linux)
+
+```azurecli-interactive
+# Identify latest version of Network Watcher extension for Linux.
+az vm extension image list --name 'NetworkWatcherAgentLinux' --publisher 'Microsoft.Azure.NetworkWatcher' --latest --location 'eastus'
+```
+
+# [Windows](#tab/windows)
+
+```azurecli-interactive
+# Identify latest version of Network Watcher extension for Windows.
+az vm extension image list --name 'NetworkWatcherAgentWindows' --publisher 'Microsoft.Azure.NetworkWatcher' --latest --location 'eastus'
+```
+++
+## Update your extension using a PowerShell script
+
+If you have large deployments, use a PowerShell script to update multiple VMs at once. The following PowerShell script updates Network Watcher extension of all Windows VMs in a subscription:
+
+```powershell
+<#
+ .SYNOPSIS
+ This script will scan all VMs in the provided subscription and upgrade any out of date AzureNetworkWatcherExtensions
+ .DESCRIPTION
+ This script should be no-op if AzureNetworkWatcherExtensions are up to date
+ Requires Azure PowerShell 4.2 or higher to be installed (e.g. Install-Module AzureRM).
+ .EXAMPLE
+ .\UpdateVMAgentsInSub.ps1 -SubID F4BC4873-5DAB-491E-B713-1358EF4992F2 -NoUpdate
+#>
+
+[CmdletBinding()]
+param(
+ [Parameter(Mandatory=$true)]
+ [string] $SubID,
+ [Parameter(Mandatory=$false)]
+ [Switch] $NoUpdate = $false,
+ [Parameter(Mandatory=$false)]
+ [string] $MinVersion = "1.4.2573.1"
+)
+function NeedsUpdate($version)
+{
+ if ([Version]$version -lt [Version]$MinVersion)
+ {
+ $lessThan = $true
+ }else{
+ $lessThan = $false
+ }
+ return $lessThan
+}
+Write-Host "Scanning all VMs in the subscription: $($SubID)"
+Set-AzContext -SubscriptionId $SubID
+$vms = Get-AzVM
+$foundVMs = $false
+Write-Host "Starting VM search, this may take a while"
+foreach ($vmName in $vms)
+{
+ # Get Detailed VM info
+ $vm = Get-AzVM -ResourceGroupName $vmName.ResourceGroupName -Name $vmName.name -Status
+ $isitWindows = $vm.OsName -like "*Windows*"
+
+ foreach ($extension in $vm.Extensions)
+ {
+ if ($extension.Name -eq "AzureNetworkWatcherExtension")
+ {
+ if (NeedsUpdate($extension.TypeHandlerVersion))
+ {
+ $foundVMs = $true
+ if (-not ($NoUpdate))
+ {
+ Write-Host "Found VM that needs to be updated: subscriptions/$($SubID)/resourceGroups/$($vm.ResourceGroupName)/providers/Microsoft.Compute/virtualMachines/$($vm.Name) -> Updating " -NoNewline
+ Remove-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name -Name "AzureNetworkWatcherExtension" -Force
+ Write-Host "... " -NoNewline
+ $type = if ($isitWindows) { "NetworkWatcherAgentWindows" } else { "NetworkWatcherAgentLinux" }
+ Set-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -Location $vmName.Location -VMName $vm.Name -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type $type -typeHandlerVersion $MinVersion
+ Write-Host "Done"
+ }
+ else
+ {
+ Write-Host "Found $(if ($isitWindows) {"Windows"} else {"Linux"}) VM that needs to be updated: subscriptions/$($SubID)/resourceGroups/$($vm.ResourceGroupName)/providers/Microsoft.Compute/virtualMachines/$($vm.Name)"
+ }
+ }
+ }
+ }
+}
+
+if ($foundVMs)
+{
+ Write-Host "Finished $(if ($NoUpdate) {"searching"} else {"updating"}) out of date AzureNetworkWatcherExtension on VMs"
+}
+else
+{
+ Write-Host "All AzureNetworkWatcherExtensions up to date"
+}
+
+```
+
+## Update your extension manually
+
+To update your extension, you need to know your extension version.
+
+### Check your extension version
+
+You can check your extension version by using the Azure portal, the Azure CLI, or PowerShell.
+
+#### Use the Azure portal
+
+1. Go to the **Extensions** pane of your VM in the Azure portal.
+1. Select the **AzureNetworkWatcher** extension to see the details pane.
+1. Locate the version number in the **Version** field.  
+
+#### Use the Azure CLI
+
+Run the following command from an Azure CLI prompt:
+
+```azurecli
+az vm get-instance-view --resource-group "SampleRG" --name "Sample-VM"
+```
+Locate **"AzureNetworkWatcherExtension"** in the output and identify the version number from the *“TypeHandlerVersion”* field in the output. 
+
+Information about the extension appears multiple times in the JSON output. The full version number of the extension is available under the Extensions block.
+
+You should see something like the below:
+![Azure CLI Screenshot](./media/network-watcher-agent-update/azure-cli-screenshot.png)
+
+#### Use PowerShell
+
+Run the following commands from a PowerShell prompt:
+
+```powershell
+Get-AzVM -ResourceGroupName "SampleRG" -Name "Sample-VM" -Status
+```
+Locate the Azure Network Watcher extension in the output and identify the version number from the *“TypeHandlerVersion”* field in the output.  
+
+You should see something like the below:
+![PowerShell Screenshot](./media/network-watcher-agent-update/powershell-screenshot.png)
+
+### Update your extension
+
+If your version is below the latest version mentioned above, update your extension by using any of the following options.
+
+#### Option 1: Use PowerShell
+
+Run the following commands:
+
+```powershell
+#Linux command
+Set-AzVMExtension -ResourceGroupName "myResourceGroup1" -Location "WestUS" -VMName "myVM1" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentLinux"
+
+#Windows command
+Set-AzVMExtension -ResourceGroupName "myResourceGroup1" -Location "WestUS" -VMName "myVM1" -Name " AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -ForceRerun "True"
+
+```
+
+If that doesn't work. Remove and install the extension again, using the steps below, to install latest version.
+
+Removing the extension
+
+```powershell
+#Same command for Linux and Windows
+Remove-AzVMExtension -ResourceGroupName "SampleRG" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension"
+```
+
+Installing the extension again
+
+```powershell
+#Linux command
+Set-AzVMExtension -ResourceGroupName "SampleRG" -Location "centralus" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentLinux" -typeHandlerVersion "1.4"
+
+#Windows command
+Set-AzVMExtension -ResourceGroupName "SampleRG" -Location "centralus" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -typeHandlerVersion "1.4"
+```
+
+#### Option 2: Use the Azure CLI
+
+Force an upgrade.
+
+```azurecli
+#Linux command
+az vm extension set --resource-group "myResourceGroup1" --vm-name "myVM1" --name "NetworkWatcherAgentLinux" --publisher "Microsoft.Azure.NetworkWatcher" --force-update
+
+#Windows command
+az vm extension set --resource-group "myResourceGroup1" --vm-name "myVM1" --name "NetworkWatcherAgentWindows" --publisher "Microsoft.Azure.NetworkWatcher" --force-update
+```
+
+If that doesn't work, remove and install the extension again, and follow these steps to automatically add the latest version.
+
+Remove the extension.
+
+```azurecli
+#Same for Linux and Windows
+az vm extension delete --resource-group "myResourceGroup1" --vm-name "myVM1" -n "AzureNetworkWatcherExtension"
+
+```
+
+Install the extension again.
+
+```azurecli
+#Linux command
+az vm extension set --resource-group "DALANDEMO" --vm-name "Linux-01" --name "NetworkWatcherAgentLinux" --publisher "Microsoft.Azure.NetworkWatcher"
+
+#Windows command
+az vm extension set --resource-group "DALANDEMO" --vm-name "Linux-01" --name "NetworkWatcherAgentWindows" --publisher "Microsoft.Azure.NetworkWatcher"
+
+```
+
+#### Option 3: Reboot your VMs
+
+If you have auto-upgrade set to true for the Network Watcher extension, reboot your VM installation to the latest extension.
+
+## Support
+
+If you need more help at any point in this article, see the Network Watcher extension documentation for [Linux](network-watcher-agent-linux.md) or [Windows](network-watcher-agent-windows.md). You can also contact the Azure experts on the [MSDN Azure and Stack Overflow forums](https://azure.microsoft.com/support/forums/). Alternatively, file an Azure support incident. Go to the [Azure support site](https://azure.microsoft.com/support/options/), and select **Get support**. For information about using Azure Support, read the [Microsoft Azure support FAQ](https://azure.microsoft.com/support/faq/).
network-watcher Network Watcher Agent Windows https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/network-watcher-agent-windows.md
+
+ Title: Manage Network Watcher Agent VM extension - Windows
+description: Learn about the Network Watcher Agent virtual machine extension on Windows virtual machines and how to deploy it.
++++ Last updated : 08/07/2024++
+#CustomerIntent: As an Azure administrator, I want to learn about Network Watcher Agent VM extension so that I can use Network watcher features to diagnose and monitor my virtual machines (VMs).
++
+# Manage Network Watcher Agent virtual machine extension for Windows
+
+The Network Watcher Agent virtual machine extension is a requirement for some of Azure Network Watcher features that capture network traffic to diagnose and monitor Azure virtual machines (VMs). For more information, see [What is Azure Network Watcher?](network-watcher-overview.md)
+
+In this article, you learn how to install and uninstall Network Watcher Agent for Windows. Installation of the agent doesn't disrupt, or require a reboot of the virtual machine. If the virtual machine is deployed by an Azure service, check the documentation of the service to determine whether or not it permits installing extensions in the virtual machine.
+
+## Prerequisites
+
+# [**Portal**](#tab/portal)
+
+- An Azure Windows virtual machine (VM). For more information, see [Supported Windows versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+# [**PowerShell**](#tab/powershell)
+
+- An Azure Windows virtual machine (VM). For more information, see [Supported Windows versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+- Azure Cloud Shell or Azure PowerShell.
+
+ The steps in this article run the Azure PowerShell cmdlets interactively in [Azure Cloud Shell](/azure/cloud-shell/overview). To run the commands in the Cloud Shell, select **Open Cloud Shell** at the upper-right corner of a code block. Select **Copy** to copy the code and then paste it into Cloud Shell to run it. You can also run the Cloud Shell from within the Azure portal.
+
+ You can also [install Azure PowerShell locally](/powershell/azure/install-azure-powershell) to run the cmdlets. If you run PowerShell locally, sign in to Azure using the [Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet.
+
+# [**Azure CLI**](#tab/cli)
+
+- An Azure Windows virtual machine (VM). For more information, see [Supported Windows versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+- Azure Cloud Shell or Azure CLI.
+
+ The steps in this article run the Azure CLI commands interactively in [Azure Cloud Shell](/azure/cloud-shell/overview). To run the commands in the Cloud Shell, select **Open Cloud Shell** at the upper-right corner of a code block. Select **Copy** to copy the code, and paste it into Cloud Shell to run it. You can also run the Cloud Shell from within the Azure portal.
+
+ You can also [install Azure CLI locally](/cli/azure/install-azure-cli) to run the commands. If you run Azure CLI locally, sign in to Azure using the [az login](/cli/azure/reference-index#az-login) command.
+
+# [**Resource Manager**](#tab/arm)
+
+- An Azure Windows virtual machine (VM). For more information, see [Supported Windows versions](#supported-operating-systems).
+
+- Outbound TCP connectivity to `169.254.169.254` over `port 80` and `168.63.129.16` over `port 8037`. The agent uses these IP addresses to communicate with the Azure platform.
+
+- Internet connectivity: Network Watcher Agent requires internet connectivity for some features to properly work. For example, it requires connectivity to your storage account to upload packet captures. For more information, see [Packet capture overview](packet-capture-overview.md).
+
+- Azure PowerShell or Azure CLI installed locally to deploy the template.
+
+ - You can [install Azure PowerShell](/powershell/azure/install-azure-powershell) to run the cmdlets. Use [Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet to sign in to Azure.
+
+ - You can [install Azure CLI](/cli/azure/install-azure-cli) to run the commands. Use [az login](/cli/azure/reference-index#az-login) command to sign in to Azure.
+++
+## Supported operating systems
+
+Network Watcher Agent extension for Windows can be installed on:
+
+- Windows Server 2012, 2012 R2, 2016, 2019 and 2022 releases.
+- Windows 10 and 11 releases.
+
+> [!NOTE]
+> Currently, Nano Server isn't supported.
+
+## Extension schema
+
+The following JSON shows the schema for the Network Watcher Agent extension. The extension doesn't require, or support, any user-supplied settings, and relies on its default configuration.
+
+```json
+{
+ "name": "[concat(parameters('vmName'), '/AzureNetworkWatcherExtension')]",
+ "type": "Microsoft.Compute/virtualMachines/extensions",
+ "apiVersion": "2023-03-01",
+ "location": "[resourceGroup().location]",
+ "dependsOn": [
+ "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
+ ],
+ "properties": {
+ "autoUpgradeMinorVersion": true,
+ "publisher": "Microsoft.Azure.NetworkWatcher",
+ "type": "NetworkWatcherAgentWindows",
+ "typeHandlerVersion": "1.4"
+ }
+}
+```
+## List installed extensions
+
+# [**Portal**](#tab/portal)
+
+From the virtual machine page in the Azure portal, you can view the installed extension by following these steps:
+
+1. Under **Settings**, select **Extensions + applications**.
+
+1. In the **Extensions** tab, you can see all installed extensions on the virtual machine. If the list is long, you can use the search box to filter the list.
+
+ :::image type="content" source="./media/network-watcher-agent-windows/list-vm-extensions.png" alt-text="Screenshot that shows how to view installed extensions on a VM in the Azure portal." lightbox="./media/network-watcher-agent-windows/list-vm-extensions.png":::
+
+# [**PowerShell**](#tab/powershell)
+
+Use [Get-AzVMExtension](/powershell/module/az.compute/get-azvmextension) cmdlet to list all installed extensions on the virtual machine:
+
+```azurepowershell-interactive
+# List the installed extensions on the virtual machine.
+Get-AzVMExtension -ResourceGroupName 'myResourceGroup' -VMName 'myVM' | format-table Name, Publisher, ExtensionType, AutoUpgradeMinorVersion, EnableAutomaticUpgrade
+```
+
+The output of the cmdlet lists the installed extensions:
+
+```output
+Name Publisher ExtensionType AutoUpgradeMinorVersion EnableAutomaticUpgrade
+- - -- -
+AzureNetworkWatcherExtension Microsoft.Azure.NetworkWatcher NetworkWatcherAgentWindows True True
+```
++
+# [**Azure CLI**](#tab/cli)
+
+Use [az vm extension list](/cli/azure/vm/extension#az-vm-extension-list) command to list all installed extensions on the virtual machine:
+
+```azurecli
+# List the installed extensions on the virtual machine.
+az vm extension list --resource-group 'myResourceGroup' --vm-name 'myVM' --out table
+```
+
+The output of the command lists the installed extensions:
+
+```output
+Name ProvisioningState Publisher Version AutoUpgradeMinorVersion
+- - -
+AzureNetworkWatcherExtension Succeeded Microsoft.Azure.NetworkWatcher 1.4 True
+```
+
+# [**Resource Manager**](#tab/arm)
+
+N/A
+++
+## Install Network Watcher Agent VM extension
+
+# [**Portal**](#tab/portal)
+
+From the virtual machine page in the Azure portal, you can install the Network Watcher Agent VM extension by following these steps:
+
+1. Under **Settings**, select **Extensions + applications**.
+
+1. Select **+ Add** and search for **Network Watcher Agent** and install it. If the extension is already installed, you can see it in the list of extensions.
+
+ :::image type="content" source="./media/network-watcher-agent-windows/vm-extensions.png" alt-text="Screenshot that shows the VM's extensions page in the Azure portal." lightbox="./media/network-watcher-agent-windows/vm-extensions.png":::
+
+1. In the search box of **Install an Extension**, enter *Network Watcher Agent for Windows*. Select the extension from the list and select **Next**.
+
+ :::image type="content" source="./media/network-watcher-agent-windows/install-extension-windows.png" alt-text="Screenshot that shows how to install Network Watcher Agent for Windows in the Azure portal." lightbox="./media/network-watcher-agent-windows/install-extension-windows.png":::
+
+1. Select **Review + create** and then select **Create**.
+
+# [**PowerShell**](#tab/powershell)
+
+Use [Set-AzVMExtension](/powershell/module/az.compute/set-azvmextension) cmdlet to install Network Watcher Agent VM extension on the virtual machine:
+
+```azurepowershell-interactive
+# Install Network Watcher Agent for Windows on the virtual machine.
+Set-AzVMExtension -Name 'AzureNetworkWatcherExtension' -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentWindows' -EnableAutomaticUpgrade 1 -TypeHandlerVersion '1.4' -ResourceGroupName 'myResourceGroup' -VMName 'myVM'
+```
+
+Once the installation is successfully completed, you see the following output:
+
+```output
+RequestId IsSuccessStatusCode StatusCode ReasonPhrase
+ - -
+ True OK
+```
+
+# [**Azure CLI**](#tab/cli)
+
+Use [az vm extension set](/cli/azure/vm/extension#az-vm-extension-set) command to install Network Watcher Agent VM extension on the virtual machine:
+
+```azurecli
+# Install Network Watcher Agent for Windows on the virtual machine.
+az vm extension set --name 'NetworkWatcherAgentWindows' --extension-instance-name 'AzureNetworkWatcherExtension' --publisher 'Microsoft.Azure.NetworkWatcher' --enable-auto-upgrade 'true' --version '1.4' --resource-group 'myResourceGroup' --vm-name 'myVM'
+```
+
+# [**Resource Manager**](#tab/arm)
+
+Use the following Azure Resource Manager template (ARM template) to install Network Watcher Agent VM extension on a Windows virtual machine:
+
+```json
+{
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "vmName": {
+ "type": "string"
+ }
+ },
+ "variables": {},
+ "resources": [
+ {
+ "name": "[parameters('vmName')]",
+ "type": "Microsoft.Compute/virtualMachines",
+ "apiVersion": "2023-03-01",
+ "location": "[resourceGroup().location]",
+ "properties": {
+ }
+ },
+ {
+ "name": "[concat(parameters('vmName'), '/AzureNetworkWatcherExtension')]",
+ "type": "Microsoft.Compute/virtualMachines/extensions",
+ "apiVersion": "2023-03-01",
+ "location": "[resourceGroup().location]",
+ "dependsOn": [
+ "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
+ ],
+ "properties": {
+ "autoUpgradeMinorVersion": true,
+ "publisher": "Microsoft.Azure.NetworkWatcher",
+ "type": "NetworkWatcherAgentWindows",
+ "typeHandlerVersion": "1.4"
+ }
+ }
+ ],
+ "outputs": {}
+}
+```
+
+You can use either Azure PowerShell or Azure CLI to deploy the Resource Manager template:
+
+```azurepowershell
+# Deploy the JSON template file using Azure PowerShell.
+New-AzResourceGroupDeployment -ResourceGroupName 'myResourceGroup' -TemplateFile 'agent.json'
+```
+
+```azurecli
+# Deploy the JSON template file using the Azure CLI.
+az deployment group create --resource-group 'myResourceGroup' --template-file 'agent.json'
+```
+++
+## Uninstall Network Watcher Agent VM extension
+
+# [**Portal**](#tab/portal)
+
+From the virtual machine page in the Azure portal, you can uninstall the Network Watcher Agent VM extension by following these steps:
+
+1. Under **Settings**, select **Extensions + applications**.
+
+1. Select **AzureNetworkWatcherExtension** from the list of extensions, and then select **Uninstall**.
+
+ :::image type="content" source="./media/network-watcher-agent-windows/uninstall-extension-windows.png" alt-text="Screenshot that shows how to uninstall Network Watcher Agent for Windows in the Azure portal." lightbox="./media/network-watcher-agent-windows/uninstall-extension-windows.png":::
+
+ > [!NOTE]
+ > You might see Network Watcher Agent VM extension named differently than **AzureNetworkWatcherExtension**.
+
+# [**PowerShell**](#tab/powershell)
+
+Use [Remove-AzVMExtension](/powershell/module/az.compute/remove-azvmextension) cmdlet to remove Network Watcher Agent VM extension from the virtual machine:
+
+```azurepowershell-interactive
+# Uninstall Network Watcher Agent VM extension.
+Remove-AzVMExtension -Name 'AzureNetworkWatcherExtension' -ResourceGroupName 'myResourceGroup' -VMName 'myVM'
+```
+
+# [**Azure CLI**](#tab/cli)
+
+Use [az vm extension delete](/cli/azure/vm/extension#az-vm-extension-delete) command to remove Network Watcher Agent VM extension from the virtual machine:
+
+```azurecli-interactive
+# Uninstall Network Watcher Agent VM extension.
+az vm extension delete --name 'AzureNetworkWatcherExtension' --resource-group 'myResourceGroup' --vm-name 'myVM'
+```
+
+# [**Resource Manager**](#tab/arm)
+
+N/A
+++
+## Frequently asked questions (FAQ)
+
+To get answers to most frequently asked questions about Network Watcher Agent, see [Network Watcher Agent FAQ](frequently-asked-questions.yml#network-watcher-agent).
+
+## Related content
+
+- [Update Azure Network Watcher extension to the latest version](network-watcher-agent-update.md).
+- [Network Watcher documentation](index.yml).
+- [Microsoft Q&A - Network Watcher](/answers/topics/azure-network-watcher.html).
network-watcher Network Watcher Alert Triggered Packet Capture https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/network-watcher-alert-triggered-packet-capture.md
By using Network Watcher alerts and functions from within the Azure ecosystem, y
- The latest version of [Azure PowerShell](/powershell/azure/install-azure-powershell). - An existing instance of Network Watcher. If you don't already have one, [create an instance of Network Watcher](network-watcher-create.md).-- An existing virtual machine in the same region as Network Watcher with the [Windows extension](../virtual-machines/extensions/network-watcher-windows.md) or [Linux virtual machine extension](../virtual-machines/extensions/network-watcher-linux.md).
+- An existing virtual machine in the same region as Network Watcher with the [Windows extension](network-watcher-agent-windows.md) or [Linux virtual machine extension](network-watcher-agent-linux.md).
## Scenario
network-watcher Network Watcher Packet Capture Manage Powershell Vmss https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/network-watcher-packet-capture-manage-powershell-vmss.md
This article assumes you have the following resources:
* An instance of Network Watcher in the region you want to create a packet capture > [!IMPORTANT]
-> Packet capture requires a virtual machine scale set extension `AzureNetworkWatcherExtension`. For installing the extension on a Windows VM visit [Azure Network Watcher Agent virtual machine extension for Windows](../virtual-machines/extensions/network-watcher-windows.md) and for Linux VM visit [Azure Network Watcher Agent virtual machine extension for Linux](../virtual-machines/extensions/network-watcher-linux.md).
+> Packet capture requires a virtual machine scale set extension `AzureNetworkWatcherExtension`. For installing the extension on a Windows VM visit [Azure Network Watcher Agent virtual machine extension for Windows](network-watcher-agent-windows.md) and for Linux VM visit [Azure Network Watcher Agent virtual machine extension for Linux](network-watcher-agent-linux.md).
## Install virtual machine scale set extension
network-watcher Packet Capture Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/packet-capture-overview.md
You can trigger packet captures through the portal, PowerShell, Azure CLI, or RE
> [!IMPORTANT] > Packet capture requires the Network Watcher agent VM extension `AzureNetworkWatcherExtension`. For more information, see:
-> - [Network Watcher Agent VM extension for Windows](../virtual-machines/extensions/network-watcher-windows.md?toc=/azure/network-watcher/toc.json).
-> - [Network Watcher Agent VM extension for Linux](../virtual-machines/extensions/network-watcher-linux.md?toc=/azure/network-watcher/toc.json).
-> - [Update Network Watcher extension to the latest version](../virtual-machines/extensions/network-watcher-update.md?toc=/azure/network-watcher/toc.json).
+> - [Network Watcher Agent VM extension for Windows](network-watcher-agent-windows.md).
+> - [Network Watcher Agent VM extension for Linux](network-watcher-agent-linux.md).
+> - [Update Network Watcher extension to the latest version](network-watcher-agent-update.md).
## Capture configuration
network-watcher Packet Capture Vm Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/network-watcher/packet-capture-vm-portal.md
In this article, you learn how to remotely configure, start, stop, download, and
> [!NOTE] > - Azure creates a Network Watcher instance in the the virtual machine's region if Network Watcher wasn't enabled for that region. For more information, see [Enable or disable Azure Network Watcher](network-watcher-create.md).
-> - Network Watcher packet capture requires Network Watcher agent VM extension to be installed on the target virtual machine. Whenever you use Network Watcher packet capture in the Azure portal, the agent is automatically installed on the target VM or scale set if it wasn't previously installed. To update an already installed agent, see [Update Azure Network Watcher extension to the latest version](../virtual-machines/extensions/network-watcher-update.md?toc=/azure/network-watcher/toc.json). To manually install the agent, see [Network Watcher Agent virtual machine extension for Linux](../virtual-machines/extensions/network-watcher-linux.md) or [Network Watcher Agent virtual machine extension for Windows](../virtual-machines/extensions/network-watcher-windows.md).
+> - Network Watcher packet capture requires Network Watcher agent VM extension to be installed on the target virtual machine. Whenever you use Network Watcher packet capture in the Azure portal, the agent is automatically installed on the target VM or scale set if it wasn't previously installed. To update an already installed agent, see [Update Azure Network Watcher extension to the latest version](network-watcher-agent-update.md). To manually install the agent, see [Network Watcher Agent virtual machine extension for Linux](network-watcher-agent-linux.md) or [Network Watcher Agent virtual machine extension for Windows](network-watcher-agent-windows.md).
> - The last two IP addresses and ports listed in the **Prerequisites** are common across all Network Watcher tools that use the Network Watcher agent and might occasionally change. If a network security group is associated to the network interface, or subnet that the network interface is in, ensure that rules exist to allow outbound connectivity over the previous ports. Similarly, ensure outbound connectivity over the previous ports when adding user-defined routes to your network.
openshift Howto Deploy Java Jboss Enterprise Application Platform App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/openshift/howto-deploy-java-jboss-enterprise-application-platform-app.md
If you're interested in providing feedback or working closely on your migration
- A local developer command line with a UNIX-like command environment - for example, Ubuntu, macOS, or Windows Subsystem for Linux - and Azure CLI installed. To learn how to install the Azure CLI, see [How to install the Azure CLI](/cli/azure/install-azure-cli).
- > [!NOTE]
- > You can also execute this guidance from the [Azure Cloud Shell](../cloud-shell/get-started/classic.md). This approach has all the prerequisite tools pre-installed.
- >
- > :::image type="icon" source="~/reusable-content/ce-skilling/azure/media/cloud-shell/launch-cloud-shell-button.png" alt-text="Button to launch the Azure Cloud Shell." border="false" link="https://shell.azure.com":::
+- The `mysql` CLI. For example, you can install the CLI by using the following commands on Ubuntu or Debian-based systems:
-- The `mysql` CLI. You can install the CLI by using the following commands:-
- ```azurecli-interactive
+ ```bash
sudo apt update sudo apt install mysql-server ```
The sample is a Java application backed by a MySQL database, and is deployed to
Open a shell and set the following environment variables. Replace the substitutions as appropriate.
-```azurecli-interactive
+```bash
RG_NAME=<resource-group-name> SERVER_NAME=<database-server-name> DB_DATABASE_NAME=testdb
Next, use the following steps to create an Azure Database for MySQL - Flexible S
1. Use the following command to create an Azure Database for MySQL - Flexible Server:
- ```azurecli-interactive
+ ```azurecli
az mysql flexible-server create \ --resource-group ${RG_NAME} \ --name ${SERVER_NAME} \
Next, use the following steps to create an Azure Database for MySQL - Flexible S
1. Use the following commands to get the host of the created MySQL server:
- ```azurecli-interactive
+ ```azurecli
DB_HOST=$(az mysql flexible-server show \ --resource-group ${RG_NAME} \ --name ${SERVER_NAME} \
Next, use the following steps to create an Azure Database for MySQL - Flexible S
1. Use the following command to create a temporary firewall rule to allow connection to the MySQL server from the public internet:
- ```azurecli-interactive
+ ```azurecli
az mysql flexible-server firewall-rule create \ --resource-group ${RG_NAME} \ --name ${SERVER_NAME} \
Next, use the following steps to create an Azure Database for MySQL - Flexible S
1. Use the following command to create a new database user with permissions to read and write the specific database. This command is useful to send SQL directly to the database.
- ```azurecli-interactive
+ ```bash
mysql --host ${DB_HOST} --user ${ADMIN_USERNAME} --password=${ADMIN_PASSWORD} << EOF CREATE USER '${DB_USERNAME}'@'%' IDENTIFIED BY '${DB_PASSWORD}'; GRANT ALL PRIVILEGES ON ${DB_DATABASE_NAME} . * TO '${DB_USERNAME}'@'%';
Next, use the following steps to create an Azure Database for MySQL - Flexible S
1. Use the following command to delete the temporary firewall rule:
- ```azurecli-interactive
+ ```azurecli
az mysql flexible-server firewall-rule delete \ --resource-group ${RG_NAME} \ --name ${SERVER_NAME} \
Next, use the following steps to connect to the OpenShift cluster using the Open
1. In the shell, use the following commands to download the latest OpenShift 4 CLI for GNU/Linux. If running on an OS other than GNU/Linux, download the appropriate binary for that OS.
- ```azurecli-interactive
+ ```bash
cd ~ wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz
Next, use the following steps to connect to the OpenShift cluster using the Open
1. Paste the value from the **cmdToLoginWithKubeadmin** field into the shell, and execute it. You should see the `login successful` message and the project you're using. The following content is an example of the command to connect to the OpenShift cluster using the OpenShift CLI.
- ```azurecli-interactive
+ ```azurecli
oc login \ $(az aro show \ --resource-group ${RG_NAME} \
Use the following steps to deploy the app to the cluster. The app is hosted in t
1. In the shell, run the following commands. The commands create a project, apply a permission to enable S2I to work, image the pull secret, and link the secret to the relative service accounts in the project to enable the image pull. Disregard the Git warning about "'detached HEAD' state".
- ```azurecli-interactive
+ ```bash
git clone https://github.com/Azure/rhel-jboss-templates.git cd rhel-jboss-templates git checkout 20230615
Use the following steps to deploy the app to the cluster. The app is hosted in t
Because the next section uses HEREDOC format, it's best to include and execute it in its own code excerpt.
- ```azurecli-interactive
+ ```bash
cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret
Use the following steps to deploy the app to the cluster. The app is hosted in t
You must see `secret/eaparo-sample-pull-secret created` to indicate successful creation of the secret. If you don't see this output, troubleshoot and resolve the problem before proceeding. Finally, link the secret to the default service account for downloading container images so the cluster can run them.
- ```azurecli-interactive
+ ```bash
oc secrets link default ${CON_REG_SECRET_NAME} --for=pull oc secrets link builder ${CON_REG_SECRET_NAME} --for=pull ``` 1. Use the following commands to pull the image stream `jboss-eap74-openjdk11-openshift`. Then, start the source to image process and wait until it completes.
- ```azurecli-interactive
+ ```bash
oc apply -f https://raw.githubusercontent.com/jboss-container-images/jboss-eap-openshift-templates/eap74/eap74-openjdk11-image-stream.json oc new-build --name=${APPLICATION_NAME} --binary --image-stream=jboss-eap74-openjdk11-openshift:7.4.0 -e CUSTOM_INSTALL_DIRECTORIES=extensions oc start-build ${APPLICATION_NAME} --from-dir=rhel-jboss-templates/eap-coffee-app --follow
Next, use the following steps to create a secret:
1. Use the following command to create a secret for holding the password of the database:
- ```azurecli-interactive
+ ```bash
oc create secret generic db-secret --from-literal=password=${DB_PASSWORD} ``` 1. Use the following commands to deploy and run three replicas of the containerized app in the cluster:
- ```azurecli-interactive
+ ```bash
cat <<EOF | oc apply -f - apiVersion: wildfly.org/v1alpha1 kind: WildFlyServer
Next, use the following steps to create a secret:
1. Run the following command to return the URL of the application. You can use this URL to access the deployed sample app. Copy the output to the clipboard.
- ```azurecli-interactive
+ ```bash
echo http://$(oc get route ${APPLICATION_NAME}-route -o=jsonpath='{.spec.host}')/javaee-cafe ```
openshift Howto Deploy Java Jboss Enterprise Application Platform With Auto Redeploy https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/openshift/howto-deploy-java-jboss-enterprise-application-platform-with-auto-redeploy.md
This article uses the Azure Marketplace offer for JBoss EAP to accelerate your j
Use the following steps to create a service principal:
-1. Open the Azure portal and navigate to the Azure Cloud Shell.
1. Create a service principal by using the following command: ```azurecli
If you navigated away from the **Deployment is in progress** page, use the follo
:::image type="content" source="media/howto-deploy-java-jboss-enterprise-application-platform-app/deployment-outputs.png" alt-text="Screenshot of the Azure portal that shows JBoss EAP on Azure Red Hat OpenShift deployment outputs." lightbox="media/howto-deploy-java-jboss-enterprise-application-platform-app/deployment-outputs.png":::
-1. Open the Azure Cloud Shell, paste the value from the **cmdToGetKubeadminCredentials** field, and execute it. You see the admin account and credential for signing in to the OpenShift cluster console portal. The following example shows an admin account:
+1. Open your local terminal, paste the value from the **cmdToGetKubeadminCredentials** field, and execute it. You see the admin account and credential for signing in to the OpenShift cluster console portal. The following example shows an admin account:
```azurecli az aro list-credentials -g eaparo033123rg -n aro-cluster
openshift Howto Deploy Java Liberty App https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/openshift/howto-deploy-java-liberty-app.md
If you're interested in providing feedback or working closely on your migration
- An Azure subscription. [!INCLUDE [quickstarts-free-trial-note](~/reusable-content/ce-skilling/azure/includes/quickstarts-free-trial-note.md)] - A local machine with a Unix-like operating system installed (for example, Ubuntu, macOS, or Windows Subsystem for Linux). - The [Azure CLI](/cli/azure/install-azure-cli). If you're running on Windows or macOS, consider running Azure CLI in a Docker container. For more information, see [How to run the Azure CLI in a Docker container](/cli/azure/run-azure-cli-docker).-- Sign in to the Azure CLI by using the [az login](/cli/azure/reference-index#az-login) command. To finish the authentication process, follow the steps displayed in your terminal. For other sign-in options, see [Sign in with the Azure CLI](/cli/azure/authenticate-azure-cli).-- When you're prompted, install the Azure CLI extension on first use. For more information about extensions, see [Use extensions with the Azure CLI](/cli/azure/azure-cli-extensions-overview).-- Run [az version](/cli/azure/reference-index?#az-version) to find the version and dependent libraries that are installed. To upgrade to the latest version, run [az upgrade](/cli/azure/reference-index?#az-upgrade). This article requires at least version 2.31.0 of Azure CLI.
+ - Sign in to the Azure CLI by using the [az login](/cli/azure/reference-index#az-login) command. To finish the authentication process, follow the steps displayed in your terminal. For other sign-in options, see [Sign into Azure with Azure CLI](/cli/azure/authenticate-azure-cli#sign-into-azure-with-azure-cli).
+ - When you're prompted, install the Azure CLI extension on first use. For more information about extensions, see [Use and manage extensions with the Azure CLI](/cli/azure/azure-cli-extensions-overview).
+ - Run [az version](/cli/azure/reference-index?#az-version) to find the version and dependent libraries that are installed. To upgrade to the latest version, run [az upgrade](/cli/azure/reference-index?#az-upgrade). This article requires at least version 2.31.0 of Azure CLI.
- A Java Standard Edition (SE) implementation, version 17 or later (for example, [Eclipse Open J9](https://www.eclipse.org/openj9/)). - [Maven](https://maven.apache.org/download.cgi) version 3.5.0 or higher. - [Docker](https://docs.docker.com/get-docker/) for your OS. - The Azure identity you use to sign in has either the [Contributor](/azure/role-based-access-control/built-in-roles#contributor) role and the [User Access Administrator](/azure/role-based-access-control/built-in-roles#user-access-administrator) role or the [Owner](/azure/role-based-access-control/built-in-roles#owner) role in the current subscription. For an overview of Azure roles, see [What is Azure role-based access control (Azure RBAC)?](/azure/role-based-access-control/overview)
-> [!NOTE]
-> You can also execute this guidance from the [Azure Cloud Shell](/azure/cloud-shell/quickstart). This approach has all the prerequisite tools pre-installed, with the exception of Docker.
->
-> :::image type="icon" source="~/reusable-content/ce-skilling/azure/media/cloud-shell/launch-cloud-shell-button.png" alt-text="Button to launch the Azure Cloud Shell." border="false" link="https://shell.azure.com":::
- ## Get a Red Hat pull secret The Azure Marketplace offer you're going to use in this article requires a Red Hat pull secret. This section shows you how to get a Red Hat pull secret for Azure Red Hat OpenShift. To learn about what a Red Hat pull secret is and why you need it, see the [Get a Red Hat pull secret](create-cluster.md#get-a-red-hat-pull-secret-optional) section of [Create an Azure Red Hat OpenShift 4 cluster](create-cluster.md). To get the pull secret for use, follow the steps in this section.
operator-nexus Howto Kubernetes Cluster Install Microsoft Defender https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/operator-nexus/howto-kubernetes-cluster-install-microsoft-defender.md
+
+ Title: How to Install Microsoft Defender for Containers on a Nexus Kubernetes Cluster #Required; page title is displayed in search results. Include the brand.
+description: Learn how to install Microsoft Defender for Containers on a Nexus Kubernetes Cluster. #Required; article description that is displayed in search results.
++++ Last updated : 08/01/2024 #Required; mm/dd/yyyy format.+++
+# Install Microsoft Defender for Containers on Azure Operator Nexus Kubernetes Cluster
+
+This article describes how to install Microsoft Defender for Containers inside a Nexus Kubernetes Cluster. [Microsoft Defender](/azure/defender-for-cloud/defender-for-cloud-introduction) can be used to monitor Kubernetes API Server audit logs and trigger alerts when appropriate. The audit logs are sent to the Defender backend and aren't directly accessible. They can't be queried through Kusto or in the Log Analytics Workspace associated with the installed Defender extension. Visit [Alerts for containers - Kubernetes clusters](/azure/defender-for-cloud/alerts-containers) for a list of alerts that are currently defined for Kubernetes Clusters.
+
+## Prerequisites
+
+Before proceeding with this how-to guide, it's recommended that you:
+
+* Refer to the Operator Nexus Kubernetes cluster [QuickStart guide](./quickstarts-kubernetes-cluster-deployment-bicep.md) for a comprehensive overview and steps involved.
+* Ensure that you meet the outlined prerequisites in the quickstart to ensure smooth implementation of the guide.
+
+> [!NOTE]
+> This guide assumes that you already have an existing Operator Nexus Kubernetes cluster that was created using the quickstart guide, and that you have access to the Azure CLI. Additionally, along with the networkcloud Azure CLI extension, the k8s-extension Azure CLI extension needs to be installed:
+
+```
+az extension add --name k8s-extension
+```
+
+## Installing Microsoft Defender for Containers in Nexus Kubernetes Cluster using Azure CLI
+
+Reference the Microsoft Defender for Containers documentation to [install Defender](/azure/defender-for-cloud/defender-for-containers-enable?tabs=aks-deploy-portal%2Ck8s-deploy-cli%2Ck8s-verify-asc%2Ck8s-remove-arc%2Caks-removeprofile-api&pivots=defender-for-container-arc#use-azure-cli-to-deploy-the-defender-sensor) on a Nexus Kubernetes Cluster.
+
+Refer to the Azure CLI command to install the extension in the provided link:
+
+```azurecli
+az k8s-extension create --name microsoft.azuredefender.kubernetes --cluster-type connectedClusters --cluster-name <cluster-name> --resource-group <resource-group> --extension-type microsoft.azuredefender.kubernetes
+```
+
+In the Azure CLI command, the cluster-name refers to the ARC connected cluster, of type Kubernetes - Azure ARC, representing the Nexus Kubernetes Cluster. As mentioned in the Microsoft Defender for Containers documentation, by default the Kubernetes API Server audit logs should exist in ```/var/log/kube-apiserver/audit.log``` otherwise the path to the audit log must be specified when installing Defender for Containers using the ```--auditLogPath``` flag. Reference the Microsoft Defender for Containers documentation previously linked for more detailed installation information and alternative methods of installation.
+
+## Microsoft Defender for Containers Security Alert Simulation
+
+Reference the documentation here on how to [simulate security alerts](/azure/defender-for-cloud/alert-validation#simulate-alerts-on-kubernetes-) for Microsoft Defender for Containers. This simulation has been performed on a Nexus Kubernetes Cluster and the corresponding alert appeared in the Microsoft Defender for Cloud Dashboard in the Azure portal:
+
+[ ![Screenshot of Security Alerts in Microsoft Defender for Cloud Dashboard in the Azure portal.](media/defender-for-cloud-alerts.png)](media/defender-for-cloud-alerts.png#lightbox)
reliability Reliability Hdinsight On Aks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/reliability/reliability-hdinsight-on-aks.md
-+ Last updated 04/15/2024 CustomerIntent: As a cloud architect/engineer, I want to understand reliability support for Azure HDInsight on Azure Kubernetes Service so that I can respond to and/or avoid failures in order to minimize downtime and data loss.
route-server Troubleshoot Route Server https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/route-server/troubleshoot-route-server.md
If you want to inspect your on-premises traffic using a firewall, you can force
Yes, this is expected behavior. User-defined routes with next hop type **Virtual Network Gateway** are not supported for subnets within Route Server's virtual network and peered virtual networks. However, if you want to configure your next hop to be a network virtual appliance (NVA) or the internet, adding a user-defined route with next hop type **VirtualAppliance** or **Internet** is supported.
+### In my VM's network interface's effective routes, why do I have a user-defined route (UDR) with next hop type set to **None**?
+
+If you advertise a route from your NVA to Route Server that is an exact prefix match as another user-defined route, then the advertised route's next hop must be valid. If the advertised next hop is a load balancer without a configured backend pool, then this invalid route will take precedence over the user-defined route. In your network interface's effective routes, the invalid advertised route will be displayed as a user-defined route with next hop type set to **None**.
+ ### Why do I lose connectivity after associating a service endpoint policy to the RouteServerSubnet or GatewaySubnet? If you associate a service endpoint policy to the RouteServerSubnet or GatewaySubnet, then communication may break between Azure's underlying management platform and these respective Azure services (Route Server and VPN/ExpressRoute gateway). This can cause these Azure resources to enter an unhealthy state, resulting in connectivity loss between your on-premises and Azure workloads.
When you advertise the same routes from your on-premises network to Azure over m
To learn how to create and configure Azure Route Server, see: > [!div class="nextstepaction"]
-> [Create and configure Azure Route Server](quickstart-configure-route-server-portal.md)
+> [Create and configure Azure Route Server](quickstart-configure-route-server-portal.md)
search Resource Demo Sites https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/search/resource-demo-sites.md
The Azure AI Search currently builds and hosts the following demos.
| Demo name | Description | Source code | |--| |-| | [Conversational Knowledge Mining](https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services) | Code and docs to create interactive solution to extract conversational insights from post-contact center transcripts in production environment. | [https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services](https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services) |
-| [Build Your Own AI Assistant](https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator) | Code and docs to build your own AI Assistant to accelerates the overall document review and content generation process in production environment. | [https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator](https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator) |
+| [Build your own copilot solution accelerator](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator) | Code and docs to build your own copilot to harness the power of generative AI across both structured and unstructured data for Client Advisor and Research Assistant business use case scenarios. | [https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator) |
| [Chat with your data](https://entgptsearch.azurewebsites.net/) | An Azure web app that uses ChatGPT in Azure OpenAI with fictitious health plan data in a search index. | [https://github.com/Azure-Samples/azure-search-openai-demo/](https://github.com/Azure-Samples/azure-search-openai-demo/) |
-| [Semantic ranking for retail](https://brave-meadow-0f59c9b1e.1.azurestaticapps.net/) | Web app for a fictitious online retailer, "Terra" | Not available |
+| [Semantic ranking for retail](https://brave-meadow-0f59c9b1e.1.azurestaticapps.net/) | Web app for a fictitious online retailer, "Terra" | Not available |
search Retrieval Augmented Generation Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/search/retrieval-augmented-generation-overview.md
Here are some tips for maximizing relevance and recall:
In comparison and benchmark testing, hybrid queries with text and vector fields, supplemented with semantic ranking, produce the most relevant results.
-### Example code of an Azure AI Search query for RAG scenarios
+### Example code for a RAG workflow
The following Python code demonstrates the essential components of a RAG workflow in Azure AI Search. You need to set up the clients, define a system prompt, and provide a query. The prompt tells the LLM to use just the results from the query, and how to return the results. For more steps based on this example, see this [RAG quickstart](search-get-started-rag.md).
search_client = SearchClient(
credential=credential )
-# This prompt provides instructions to the model
+# This prompt provides instructions to the model.
+# The prompt includes the query and the source, which are specified further down in the code.
GROUNDED_PROMPT=""" You are a friendly assistant that recommends hotels based on activities and amenities. Answer the query using only the sources provided below in a friendly and concise bulleted manner.
Query: {query}
Sources:\n{sources} """
-# Query is the question being asked
+# The query is sent to the search engine, but it's also passed in the prompt
query="Can you recommend a few hotels near the ocean with beach access and good views" # Retrieve the selected fields from the search index related to the question
response = openai_client.chat.completions.create(
"content": GROUNDED_PROMPT.format(query=query, sources=sources_formatted) } ],
- model="gpt-4o"
+ model="gpt-35"
) print(response.choices[0].message.content)
A RAG solution that includes Azure AI Search can leverage [built-in data chunkin
+ Start with solution accelerators: + ["Chat with your data" solution accelerator](https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator) helps you create a custom RAG solution over your content.
+
+ ["Conversational Knowledge Mining" solution accelerator](https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services), helps you create an interactive solution to extract actionable insights from post-contact center transcripts.
- + ["Build Your Own AI Assistant" solution accelerator](https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator), helps build your own AI Assistant to identify relevant documents, summarize and categorize vast amounts of unstructured information, and accelerate the overall document review and content generation.
+
+ + ["Build your own copilot" solution accelerator](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator), leverages Azure Open AI Service, Azure AI Search and Microsoft Fabric, to create custom copilot solutions.
+
+ + [Client Advisor](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator/blob/main/ClientAdvisor/README.md) all-in-one custom copilot empowers Client Advisor to harness the power of generative AI across both structured and unstructured data. Help our customers to optimize daily tasks and foster better interactions with more clients
+
+ + [Research Assistant](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator/blob/main/ResearchAssistant/README.md) helps build your own AI Assistant to identify relevant documents, summarize and categorize vast amounts of unstructured information, and accelerate the overall document review and content generation.
+ [Use enterprise chat app templates](https://aka.ms/azai) deploy Azure resources, code, and sample grounding data using fictitious health plan documents for Contoso and Northwind. This end-to-end solution gives you an operational chat app in as little as 15 minutes. Code for these templates is the **azure-search-openai-demo** featured in several presentations. The following links provide language-specific versions:
search Search Get Started Rag https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/search/search-get-started-rag.md
Previously updated : 07/22/2024 Last updated : 08/18/2024 # Quickstart: Generative search (RAG) with grounding data from Azure AI Search
You can also start a new file on your local system and create requests manually
Requests to the search endpoint must be authenticated and authorized. You can use API keys or roles for this task. Keys are easier to start with, but roles are more secure. This quickstart assumes roles.
+You're setting up two clients, so you need permissions on both resources.
+
+Azure AI Search is receiving the query request from your local system. Assign yourself the **Search Index Data Reader** role assignment for that task. If you're also creating and loading the hotel sample index, add **Search Service Contributor** and **Search Index Data Contributor** roles as well.
+
+Azure OpenAI is receiving the (query) "Can you recommend a few hotels" from your local system, plus its receiving the search results (source) from the search service. Assign yourself and the search service the **Cognitive Services OpenAI User** role.
+ 1. Sign in to the [Azure portal](https://portal.azure.com).
-1. Configure Azure OpenAI to use a system-assigned managed identity:
+1. Configure Azure AI Search to use a system-assigned managed identity so that you can you give it role assignments:
- 1. In the Azure portal, find your Azure OpenAI resource.
+ 1. In the Azure portal, [find your search service](https://portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/Microsoft.Search%2FsearchServices).
- 1. On the left menu, select **Resource management** > **Identity**.
+ 1. On the left menu, select **Settings** > **Identity**.
1. On the System assigned tab, set status to **On**.
Requests to the search endpoint must be authenticated and authorized. You can us
1. On the left menu, select **Access control (IAM)**.
- 1. On Azure AI Search, add two role assignments for the Azure OpenAI managed identity:
+ 1. On Azure AI Search, make sure you have permissions to create, load, and query a search index:
- **Search Index Data Reader**
+ - **Search Index Data Contributor**
- **Search Service Contributor**
- 1. On Azure OpenAI, select **Access control (IAM)** to assign yourself to a role. The code for this quickstart runs locally. Requests to Azure OpenAI originate from your system:
+ 1. On Azure OpenAI, select **Access control (IAM)** to assign yourself and the search service identity permissions on Azure OpenAI. The code for this quickstart runs locally. Requests to Azure OpenAI originate from your system. Also, search results from the search engine are passed to Azure OpenAI. For these reasons, both you and the search service need permissions on Azure OpenAI.
- **Cognitive Services OpenAI User**
It can take several minutes for permissions to take effect.
We recommend the hotels-sample-index, which can be created in minutes and runs on any search service tier. This index is created using built-in sample data.
-1. In the Azure portal, find your search service.
+1. In the Azure portal, [find your search service](https://portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/Microsoft.Search%2FsearchServices).
1. On the **Overview** home page, select [**Import data**](search-get-started-portal.md) to start the wizard.
This section uses Visual Studio Code and Python to call the chat completion APIs
! pip install azure-search-documents==11.6.0b4 --quiet ! pip install azure-identity==1.16.0 --quiet ! pip install openai --quiet
+ ! pip intall aiohttp --quiet
``` 1. Set the following variables, substituting placeholders with the endpoints you collected in the previous step.
This section uses Visual Studio Code and Python to call the chat completion APIs
AZURE_DEPLOYMENT_MODEL: str = "gpt-35-turbo" ```
-1. Run the following code to set query parameters. The query is a keyword search using semantic ranking. In a keyword search, the search engine returns up to 50 matches, but only the top 5 are provided to the model. If you can't enable semantic ranking on your search service, set the value to false.
+1. Run the following code to set query parameters. The query is a keyword search using semantic ranking. In a keyword search, the search engine returns up to 50 matches, but only the top 5 are provided to the model. If you can't [enable semantic ranking](semantic-how-to-enable-disable.md) on your search service, set the value to false.
```python # Set query parameters for grounding the conversation on your search index
This section uses Visual Studio Code and Python to call the chat completion APIs
sources_to_include=5 ```
-1. Set up clients, a search functions prompts, and a chat. The function retrieves selected fields from the search index.
+1. Set up clients, the prompt, query, and response.
- ```python
- # Set up the query for generating responses
- from azure.core.credentials_async import AsyncTokenCredential
- from azure.identity.aio import get_bearer_token_provider
- from azure.search.documents.aio import SearchClient
- from openai import AsyncAzureOpenAI
- from enum import Enum
- from typing import List, Optional
-
- def create_openai_client(credential: AsyncTokenCredential) -> AsyncAzureOpenAI:
- token_provider = get_bearer_token_provider(credential, "https://cognitiveservices.azure.com/.default")
- return AsyncAzureOpenAI(
- api_version="2024-04-01-preview",
- azure_endpoint=AZURE_OPENAI_ACCOUNT,
- azure_ad_token_provider=token_provider
- )
-
- def create_search_client(credential: AsyncTokenCredential) -> SearchClient:
- return SearchClient(
- endpoint=AZURE_SEARCH_SERVICE,
- index_name="hotels-sample-index",
- credential=credential
- )
-
- # This quickstart is only using text at the moment
- class SearchType(Enum):
- TEXT = "text"
- VECTOR = "vector"
- HYBRID = "hybrid"
+ ```python
+ # Set up the query for generating responses
+ from azure.identity import DefaultAzureCredential
+ from azure.identity import get_bearer_token_provider
+ from azure.search.documents import SearchClient
+ from openai import AzureOpenAI
- # This function retrieves the selected fields from the search index
- async def get_sources(search_client: SearchClient, query: str, search_type: SearchType, use_semantic_reranker: bool = True, sources_to_include: int = 5) -> List[str]:
- search_type == SearchType.TEXT,
- response = await search_client.search(
- search_text=query,
- query_type="semantic" if use_semantic_reranker else "simple",
- top=sources_to_include,
- select="Description,HotelName,Tags"
- )
+ credential = DefaultAzureCredential()
+ token_provider = get_bearer_token_provider(credential, "https://cognitiveservices.azure.com/.default")
+ openai_client = AzureOpenAI(
+ api_version="2024-06-01",
+ azure_endpoint=AZURE_OPENAI_ACCOUNT,
+ azure_ad_token_provider=token_provider
+ )
- return [ document async for document in response ]
+ search_client = SearchClient(
+ endpoint=AZURE_SEARCH_SERVICE,
+ index_name="hotels-sample-index",
+ credential=credential
+ )
# This prompt provides instructions to the model GROUNDED_PROMPT="""
This section uses Visual Studio Code and Python to call the chat completion APIs
Query: {query} Sources:\n{sources} """-
- # This class instantiates the chat
- class ChatThread:
- def __init__(self):
- self.messages = []
- self.search_results = []
-
- def append_message(self, role: str, message: str):
- self.messages.append({
- "role": role,
- "content": message
- })
-
- async def append_grounded_message(self, search_client: SearchClient, query: str, search_type: SearchType, use_semantic_reranker: bool = True, sources_to_include: int = 5):
- sources = await get_sources(search_client, query, search_type, use_semantic_reranker, sources_to_include)
- sources_formatted = "\n".join([f'{document["HotelName"]}:{document["Description"]}:{document["Tags"]}' for document in sources])
- self.append_message(role="user", message=GROUNDED_PROMPT.format(query=query, sources=sources_formatted))
- self.search_results.append(
- {
- "message_index": len(self.messages) - 1,
- "query": query,
- "sources": sources
- }
- )
- async def get_openai_response(self, openai_client: AsyncAzureOpenAI, model: str):
- response = await openai_client.chat.completions.create(
- messages=self.messages,
- model=model
- )
- self.append_message(role="assistant", message=response.choices[0].message.content)
+ # Query is the question being asked. It's sent to the search engine and the LLM.
+ query="Can you recommend a few hotels near the ocean with beach access and good views"
- def get_last_message(self) -> Optional[object]:
- return self.messages[-1] if len(self.messages) > 0 else None
+ # Set up the search results and the chat thread.
+ # Retrieve the selected fields from the search index related to the question.
+ search_results = search_client.search(
+ search_text=query,
+ top=5,
+ select="Description,HotelName,Tags"
+ )
+ sources_formatted = "\n".join([f'{document["HotelName"]}:{document["Description"]}:{document["Tags"]}' for document in search_results])
- def get_last_message_sources(self) -> Optional[List[object]]:
- return self.search_results[-1]["sources"] if len(self.search_results) > 0 else None
- ```
-
-1. Invoke the chat and call the search function, passing in a query string to search for.
-
- ```python
- import azure.identity.aio
-
- chat_thread = ChatThread()
- chat_deployment = AZURE_DEPLOYMENT_MODEL
-
- async with azure.identity.aio.DefaultAzureCredential() as credential, create_search_client(credential) as search_client, create_openai_client(credential) as openai_client:
- await chat_thread.append_grounded_message(
- search_client=search_client,
- query="Can you recommend a few hotels near the ocean with beach access and good views",
- search_type=SearchType(search_type),
- use_semantic_reranker=use_semantic_reranker,
- sources_to_include=sources_to_include)
- await chat_thread.get_openai_response(openai_client=openai_client, model=chat_deployment)
+ response = openai_client.chat.completions.create(
+ messages=[
+ {
+ "role": "user",
+ "content": GROUNDED_PROMPT.format(query=query, sources=sources_formatted)
+ }
+ ],
+ model=AZURE_DEPLOYMENT_MODEL
+ )
- print(chat_thread.get_last_message()["content"])
+ print(response.choices[0].message.content)
``` Output is from Azure OpenAI, and it consists of recommendations for several hotels. Here's an example of what the output might look like:
This section uses Visual Studio Code and Python to call the chat completion APIs
Several other hotels have views and water features, but do not offer beach access or views of the ocean. ```
- To experiment further, change the query and rerun the last step to better understand how the model works with your data.
+ If you get an authorization error message, wait a few minutes and try again. It can take several minutes for role assignments to become operational.
+
+ To experiment further, change the query and rerun the last step to better understand how the model works with the grounding data.
You can also modify the prompt to change the tone or structure of the output.
+ You might also try the query without semantic ranking by setting `use_semantic_reranker=False` in the query parameters step. Semantic ranking can noticably improve the relevance of query results and the ability of the LLM to return useful information. Experimentation can help you decide whether it makes a difference for your content.
+ ## Clean up When you're working in your own subscription, it's a good idea at the end of a project to identify whether you still need the resources you created. Resources left running can cost you money. You can delete resources individually or delete the resource group to delete the entire set of resources.
You can find and manage resources in the portal by using the **All resources** o
## Next steps
-As a next step, we recommend that you review the demo code for [Python](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-python), [C#](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-dotnet), or [JavaScript](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-javascript).
+As a next step, we recommend that you review the demo code for [Python](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-python), [C#](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-dotnet), or [JavaScript](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-javascript) on the azure-search-vector-samples repository.
search Search Get Started Text https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/search/search-get-started-text.md
- devx-track-dotnet - devx-track-extended-java - devx-track-js
+ - devx-track-ts
- devx-track-python - ignite-2023
Choose a programming language for the next step. The **Azure.Search.Documents**
[!INCLUDE [javascript-sdk-quickstart](includes/quickstarts/javascript.md)]
+## [**TypeScript**](#tab/typescript)
++ ## Clean up resources
search Search What Is Azure Search https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/search/search-what-is-azure-search.md
Or, try solution accelerators:
+ [**Conversational Knowledge Mining** solution accelerator](https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services), helps you create an interactive solution to extract actionable insights from post-contact center transcripts.
-+ [**Build Your Own AI Assistant** solution accelerator](https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator), helps build your own AI Assistant to identify relevant documents, summarize and categorize vast amounts of unstructured information, and accelerate the overall document review and content generation.
++ [**Build your own copilot** solution accelerator](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator), leverages Azure Open AI Service, Azure AI Search and Microsoft Fabric, to create custom copilot solutions.+
+ + [Client Advisor](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator/blob/main/ClientAdvisor/README.md) all-in-one custom copilot empowers Client Advisor to harness the power of generative AI across both structured and unstructured data. Help our customers to optimize daily tasks and foster better interactions with more clients
+
+ + [Research Assistant](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator/blob/main/ResearchAssistant/README.md) helps build your own AI Assistant to identify relevant documents, summarize and categorize vast amounts of unstructured information, and accelerate the overall document review and content generation.
> [!TIP] > For help with complex or custom solutions, [**contact a partner**](resource-partners-knowledge-mining.md) with deep expertise in Azure AI Search technology.
search Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/search/whats-new.md
| Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Type | Description | |--||--|
-[Chat with your data](https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator) | Accelerator| A solution accelerator for the RAG pattern running in Azure, using Azure AI Search for retrieval and Azure OpenAI large language models to create conversational search experiences. The code with sample data is available for use case scenarios such as financial advisor and contract review and summarization.|
-[Conversational Knowledge Mining](https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services) | Accelerator| A solution accelerator built on top of Azure AI Search, Azure Speech and Azure OpenAI services that allows customers to extract actionable insights from post-contact center conversations. |
-[Build Your Own AI Assistant](https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator) | Accelerator| A solution built on Azure Open AI Service, Azure AI Search and Microsoft Fabric, to identify relevant documents, summarize and categorize vast amounts of unstructured information, and accelerate the overall document review and content generation process. |
+| [Chat with your data](https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator) | Accelerator| A solution accelerator for the RAG pattern running in Azure, using Azure AI Search for retrieval and Azure OpenAI large language models to create conversational search experiences. The code with sample data is available for use case scenarios such as financial advisor and contract review and summarization.|
+| [Conversational Knowledge Mining](https://github.com/microsoft/Customer-Service-Conversational-Insights-with-Azure-OpenAI-Services) | Accelerator| A solution accelerator built on top of Azure AI Search, Azure Speech and Azure OpenAI services that allows customers to extract actionable insights from post-contact center conversations. |
+| [Build your own copilot](https://github.com/microsoft/Build-your-own-AI-Assistant-Solution-Accelerator) | Accelerator| Create your own custom copilot solution that empowers [Client Advisor](https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator/blob/main/ClientAdvisor/README.md) to harness the power of generative AI across both structured and unstructured data. Help our customers to optimize daily tasks and foster better interactions with more clients. |
## June 2024
sentinel Create Playbooks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/sentinel/automation/create-playbooks.md
description: Learn how to create and manage Microsoft Sentinel playbooks to auto
Previously updated : 05/30/2024 Last updated : 08/15/2024 appliesto: - Microsoft Sentinel in the Azure portal - Microsoft Sentinel in the Microsoft Defender portal
Playbooks are collections of procedures that can be run from Microsoft Sentinel
This article describes how to create and manage Microsoft Sentinel playbooks. You can later attach these playbooks to analytics rules or automation rules, or run them manually on specific incidents, alerts, or entities. > [!NOTE]
-> Playbooks in Microsoft Sentinel are based on workflows built in [Azure Logic Apps](/azure/logic-apps/logic-apps-overview), which means that you get all the power, customizability, and built-in templates of Logic Apps. Additional charges may apply. Visit the [Azure Logic Apps](https://azure.microsoft.com/pricing/details/logic-apps/) pricing page for more details.
+>
+> Playbooks in Microsoft Sentinel are based on workflows built in [Azure Logic Apps](/azure/logic-apps/logic-apps-overview), which means that you get all the power, customizability, and built-in templates of logic apps. Additional charges may apply. For pricing information, visit the [Azure Logic Apps pricing page](https://azure.microsoft.com/pricing/details/logic-apps/).
[!INCLUDE [unified-soc-preview](../includes/unified-soc-preview.md)] ## Prerequisites
-To create and manage playbooks, you need access to Microsoft Sentinel with one of the following Azure roles:
+- An Azure account and subscription. If you don't have a subscription, [sign up for a free Azure account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
-- **Logic App Contributor**, to edit and manage logic apps-- **Logic App operator**, to read, enable, and disable logic apps
+- To create and manage playbooks, you need access to Microsoft Sentinel with one of the following Azure roles:
-For more information, see [Microsoft Sentinel playbook prerequisites](automate-responses-with-playbooks.md#prerequisites).
+ | Logic app | Azure roles | Description |
+ |--|-|-|
+ | Consumption | **Logic App Contributor** | Edit and manage logic apps. |
+ | Consumption | **Logic App Operator** | Read, enable, and disable logic apps. |
+ | Standard | **Logic Apps Standard Operator** | Enable, resubmit, and disable workflows. |
+ | Standard | **Logic Apps Standard Developer** | Create and edit workflows. |
+ | Standard | **Logic Apps Standard Contributor** | Manage all aspects of a workflow. |
-We recommend that you read [Azure Logic Apps for Microsoft Sentinel playbooks](logic-apps-playbooks.md) before creating your playbook.
+ For more information, see the following documentation:
+
+ - [Access to logic app operations](/azure/logic-apps/logic-apps-securing-a-logic-app#access-to-logic-app-operations)
+ - [Microsoft Sentinel playbook prerequisites](automate-responses-with-playbooks.md#prerequisites).
+
+- Before you create your playbook, we recommend that you read [Azure Logic Apps for Microsoft Sentinel playbooks](../automation/logic-apps-playbooks.md).
## Create a playbook Follow these steps to create a new playbook in Microsoft Sentinel:
-1. For Microsoft Sentinel in the [Azure portal](https://portal.azure.com), select the **Configuration** > **Automation** page. For Microsoft Sentinel in the [Defender portal](https://security.microsoft.com/), select **Microsoft Sentinel** > **Configuration** > **Automation**.
+1. In the [Azure portal](https://portal.azure.com) or in the [Defender portal](https://security.microsoft.com/), go to your Microsoft Sentinel workspace. On the workspace menu, under **Configuration**, select **Automation**.
- #### [Azure portal](#tab/azure-portal)
- :::image type="content" source="../media/tutorial-respond-threats-playbook/add-new-playbook.png" alt-text="Screenshot of the menu selection for adding a new playbook in the Automation screen." lightbox="../media/tutorial-respond-threats-playbook/add-new-playbook.png":::
+ #### [Azure portal](#tab/azure-portal)
+ :::image type="content" source="../media/create-playbooks/add-new-playbook.png" alt-text="Screenshot shows Azure portal and Microsoft Sentinel Automation page with Create selected." lightbox="../media/create-playbooks/add-new-playbook.png":::
- #### [Defender portal](#tab/defender-portal)
- :::image type="content" source="../media/tutorial-respond-threats-playbook/add-new-playbook-defender.png" alt-text="Screenshot of the menu selection for adding a new playbook in the Automation screen." lightbox="../media/tutorial-respond-threats-playbook/add-new-playbook-defender.png":::
+ #### [Defender portal](#tab/defender-portal)
+ :::image type="content" source="../media/create-playbooks/add-new-playbook-defender.png" alt-text="Screenshot shows Defender portal and Microsoft Sentinel Automation page with Create selected." lightbox="../media/create-playbooks/add-new-playbook-defender.png":::
-
+
1. From the top menu, select **Create**, and then select one of the following options:
- 1. If you're creating a **Standard** playbook, select **Blank playbook** and then [follow the steps for the **Standard** logic app type](#prepare-your-playbooks-logic-app).
+ - If you're creating a **Consumption** playbook, select one of the following options, depending on the trigger you want to use, and then follow the [steps for a **Consumption** logic app](create-playbooks.md?tabs=consumption#prepare-playbook-logic-app):
+
+ - **Playbook with incident trigger**
+ - **Playbook with alert trigger**
+ - **Playbook with entity trigger**
+
+ This guide continues with the **Playbook with entity trigger**.
- 1. If you're creating a **Consumption** playbook, select one of the following options, depending on the trigger you want to use, and then follow the steps in the **Logic Apps Consumption** tab below:
+ - If you're creating a **Standard** playbook, select **Blank playbook** and then [follow the steps for the **Standard** logic app type](create-playbooks.md?tabs=standard#prepare-playbook-logic-app).
- - **Playbook with incident trigger**
- - **Playbook with alert trigger**
- - **Playbook with entity trigger**
+ For more information, see [Supported logic app types](../automation/logic-apps-playbooks.md#supported-logic-app-types) and [Supported triggers and actions in Microsoft Sentinel playbooks](playbook-triggers-actions.md).
- For more information, see [Supported logic app types](logic-apps-playbooks.md#supported-logic-app-types) and [Supported triggers and actions in Microsoft Sentinel playbooks](playbook-triggers-actions.md).
+<a name="prepare-playbook-logic-app"></a>
-## Prepare your playbook's Logic App
+## Prepare your playbook's logic app
-Select one of the following tabs for details about how to create a logic app for your playbook, depending on whether you're using a *Consumption* or *Standard* workflow. For more information, see [Supported logic app types](logic-apps-playbooks.md#supported-logic-app-types).
+Select one of the following tabs for details about how to create a logic app for your playbook, depending on whether you're using a Consumption or Standard logic app. For more information, see [Supported logic app types](../automation/logic-apps-playbooks.md#supported-logic-app-types).
+
+> [!TIP]
+>
+> If your playbooks need access to protected resources that are inside or connected to an Azure virtual network,
+> [create a Standard logic app workflow](/azure/logic-apps/create-single-tenant-workflows-azure-portal).
+>
+> Standard workflows run in single-tenant Azure Logic Apps and support using private endpoints for inbound
+> traffic so that your workflows can communicate privately and securely with virtual networks. Standard
+> workflows also support virtual network integration for outbound traffic. For more information, see
+> [Secure traffic between virtual networks and single-tenant Azure Logic Apps using private endpoints](/azure/logic-apps/secure-single-tenant-workflow-virtual-network-private-endpoint).
### [Consumption](#tab/consumption)
-The **Create playbook** wizard appears after selecting the trigger you want to use, including an incident, alert, or entity trigger. For example:
+After you select the trigger, which includes an incident, alert, or entity trigger, the **Create playbook** wizard appears, for example:
++
+Follow these steps to create your playbook:
+
+1. On the **Basics** tab, provide the following information:
+
+ 1. For **Subscription** and **Resource group**, select the values you want from their respective lists.
+
+ The **Region** value is set to the same region as the associated Log Analytics workspace.
+
+ 1. For **Playbook name**, enter a name for your playbook.
+
+ 1. To monitor this playbook's activity for diagnostic purposes, select **Enable diagnostics logs in Log Analytics**, and then select a **Log Analytics workspace** unless you already selected a workspace.
+
+1. Select **Next : Connections >**.
+
+1. On the **Connections** tab, we recommend leaving the default values, which configure a logic app to connect to Microsoft Sentinel with a managed identity.
+
+ For more information, see [Authenticate playbooks to Microsoft Sentinel](authenticate-playbooks-to-sentinel.md).
+1. To continue, select **Next : Review and create >**.
-Do the following to create your playbook:
+1. On the **Review and create** tab, review your configuration choices, and select **Create playbook**.
-1. In the **Basics** tab:
+ Azure takes a few minutes to create and deploy your playbook. After deployment completes, your playbook opens in the Consumption workflow designer for [Azure Logic Apps](/azure/logic-apps/logic-apps-overview). The trigger that you selected earlier automatically appears as the first step in your workflow, so now you can continue building the workflow from here.
- 1. Select the **Subscription**, **Resource group**, and **Region** of your choosing from their respective drop-down lists. The selected region is where your Logic App information is stored.
+ :::image type="content" source="../media/create-playbooks/designer-consumption.png" alt-text="Screenshot shows Consumption workflow designer with selected trigger." lightbox="../media/create-playbooks/designer-consumption.png":::
- 1. Enter a name for your playbook under **Playbook name**.
+1. On the designer, select the Microsoft Sentinel trigger, if not already selected.
- 1. If you want to monitor this playbook's activity for diagnostic purposes, select the **Enable diagnostics logs in Log Analytics** check box, and select your **Log Analytics workspace** from the drop-down list.
+1. On the **Create connection** pane, follow these steps to provide the required information to connect to Microsoft Sentinel.
- 1. If your playbooks need access to protected resources that are inside or connected to an Azure virtual network, [you might need to use an integration service environment (ISE)](/azure/logic-apps/connect-virtual-network-vnet-isolated-environment-overview). If so, select the **Associate with integration service environment** check box, and select the relevant ISE from the drop-down list.
+ 1. For **Authentication**, select from the following methods, which affect subsequent connection parameters:
- 1. Select **Next : Connections >**.
+ | Method | Description |
+ |--|-|
+ | **OAuth** | Open Authorization (OAuth) is a technology standard that lets you authorize an app or service to sign in to another without exposing private information, such as passwords. OAuth 2.0 is the industry protocol for authorization and grants limited access to protected resources. For more information, see the following resources: <br><br>- [What is OAuth](https://www.microsoft.com/security/business/security-101/what-is-oauth)? <br>- [OAuth 2.0 authorization with Microsoft Entra ID](/entra/architecture/auth-oauth2) |
+ | **Service principal** | A service principal represents an entity that requires access to resources that are secured by a Microsoft Entra tenant. For more information, see [Service principal object](/entra/identity-platform/app-objects-and-service-principals). |
+ | **Managed identity** | An identity that is automatically managed in Microsoft Entra ID. Apps can use this identity to access resources that support Microsoft Entra authentication and to obtain Microsoft Entra tokens without having to manage any credentials. <br><br>For optimal security, Microsoft recommends using a managed identity for authentication when possible. This option provides superior security and helps keep authentication information secure so that you don't have to manage this sensitive information. For more information, see the following resources: <br><br>- [What are managed identities for Azure resources](/entra/identity/managed-identities-azure-resources/overview)? <br>- [Authenticate access and connections to Azure resources with managed identities in Azure Logic Apps](/azure/logic-apps/authenticate-with-managed-identity). |
-1. In the **Connections** tab, we recommend leaving the default values, configuring Logic Apps to connect to Microsoft Sentinel with managed identity. For more information, see [Authenticate playbooks to Microsoft Sentinel](authenticate-playbooks-to-sentinel.md).
+ For more information, see [Authentication prompts](#authentication-prompts).
- Select **Next : Review and create >** to continue.
+ 1. Based on your selected authentication option, provide the necessary parameter values for the corresponding option.
-1. In the **Review and create** tab, review the configuration choices you made, and select **Create and continue to designer**.
+ For more information about these parameters, see [Microsoft Sentinel connector reference](/connectors/azuresentinel/).
- Your playbook will take a few minutes to be created and deployed, after which you see the message "Your deployment is complete" and you're taken to your new playbook's [Logic App Designer](/azure/logic-apps/logic-apps-overview). The trigger you chose at the beginning is automatically added as the first step, and you can continue designing the workflow from there.
+ 1. For **Tenant ID**, select your [Microsoft Entra tenant ID](/entra/fundamentals/how-to-find-tenant).
- :::image type="content" source="../media/tutorial-respond-threats-playbook/logic-app-blank.png" alt-text="Screenshot of logic app designer screen with opening trigger." lightbox="../media/tutorial-respond-threats-playbook/logic-app-blank.png":::
+ 1. When you finish, select **Sign in**.
-1. If you chose the **Microsoft Sentinel entity** trigger, select the type of entity you want this playbook to receive as an input.
+1. If you previously chose **Playbook with entity trigger**, select the type of entity you want this playbook to receive as an input.
- :::image type="content" source="../media/tutorial-respond-threats-playbook/entity-trigger-types.png" alt-text="Screenshot of drop-down list of entity types to choose from to set playbook schema.":::
+ :::image type="content" source="../media/create-playbooks/entity-trigger-types.png" alt-text="Screenshot shows Consumption workflow playbook with entity trigger, and available entity types to select for setting the playbook schema." lightbox="../media/create-playbooks/entity-trigger-types.png":::
### [Standard](#tab/standard)
-Since playbooks based on the Standard workflow don't support playbook templates, you need to first create your logic app, then create your playbook, and finally choose the trigger for your playbook.
+Playbooks based on a Standard workflow don't support playbook templates, so you need to first create a Standard logic app, then create your playbook, and finally choose the trigger for your playbook.
+
+After you select **Blank playbook**, a new browser tab opens, and **Create Logic App** wizard appears. The wizard shows the available hosting options where **Standard - Workflow Service Plan** is already selected, for example:
++
+Follow these steps to create your Standard logic app:
+
+#### Create Standard logic app
+
+1. On the **Create Logic App** page, confirm your hosting plan selection, and then select **Select**.
+
+1. On the **Basics** tab, provide the following information:
+
+ 1. For **Subscription** and **Resource Group**, select the values you want from their respective lists.
+
+ 1. For **Logic App name**, enter a name for your logic app.
+
+ 1. For **Region**, select the Azure region for your logic app.
+
+ 1. For **Windows Plan (*selected-region*)**, create or select an existing plan.
+
+ 1. For **Pricing plan**, select the compute resources and their pricing for your logic app.
+
+ 1. Under **Zone redundancy**, you can enable this capability if you selected an Azure region that supports availability zone redundancy.
+
+ For this example, leave the option disabled. For more information, see [Protect logic apps from region failures with zone redundancy and availability zones](/azure/logic-apps/set-up-zone-redundancy-availability-zones).
+
+ 1. Select **Next : Storage >**.
+
+ :::image type="content" source="../media/create-playbooks/create-logic-app-basics-standard.png" alt-text="Screenshot shows Create Logic App wizard and Basics tab for a Standard logic app." lightbox="../media/create-playbooks/create-logic-app-basics-standard.png":::
-After selecting the **Blank playbook** option, a new browser tab opens with the **Create Logic App** wizard. For example:
+1. On the **Storage** tab, provide the following information:
+ 1. For **Storage type**, select **Azure Storage**, and create or select a storage account.
-#### Create a logic app
+ 1. For **Blob service diagnostic settings**, leave the default setting.
-1. In the **Basics** tab, enter the following details:
+1. On the **Networking** tab, you can leave the default options for this example.
- 1. Select the **Subscription** and **Resource Group** of your choosing from their respective drop-down lists.
- 1. Enter a name for your Logic App. For **Publish**, select **Workflow**. Select the **Region** where you wish to deploy the logic app.
- 1. For **Plan type**, select **Standard**.
- 1. Select **Next : Hosting >**.
+ For your specific, real-world, production scenarios, make sure to review and select the appropriate options. You can also change this configuration after you deploy your logic app resource. For more information, see the following documentation:
-1. In the **Hosting** tab:
+ - [Create example Standard workflow - Azure portal](/azure/logic-apps/create-single-tenant-workflows-azure-portal)
- 1. For **Storage type**, select **Azure Storage**, and select or create a **Storage account**.
- 1. Select a **Windows Plan**.
+ - [Secure traffic between Standard logic apps and Azure virtual networks using private endpoints](/azure/logic-apps/secure-single-tenant-workflow-virtual-network-private-endpoint).
-1. In the **Monitoring** tab:
+1. On the **Monitoring** tab, follow these steps:
- 1. If you want to enable performance monitoring in Azure Monitor for this application, leave the toggle on **Yes**. Otherwise, toggle it to **No**.
+ 1. Under **Application Insights**, set **Enable Application Insights** to **No**.
- > [!NOTE]
- > This monitoring is **not required for Microsoft Sentinel** and **will cost you extra**.
+ This setting disables or enables performance monitoring with Application Insights in Azure Monitor. However, for Microsoft Sentinel, this capability isn't required and costs extra.
- 1. Optionally, select **Next : Tags >** to apply tags to this Logic App for resource categorization and billing purposes. Otherwise, select **Review + create**.
+ 1. To apply tags to this logic app for resource categorization and billing purposes, select **Next : Tags >**. Otherwise, select **Review + create**.
-1. In the **Review + create** tab, review the configuration choices you made, and select **Create**.
+1. On the **Review + create** tab, review your configuration choices, and select **Create**.
- Your playbook takes a few minutes to be created and deployed, during which you see some deployment messages. At the end of the process you're taken to the final deployment screen, where you see the message: "Your deployment is complete."
+ Azure takes a few minutes to create and deploy your logic app.
-1. Select **Go to resource**. You're taken to the main page of your new Logic App.
+1. After deployment completes, select **Go to resource**, which opens your logic app resource.
- Unlike with classic Consumption playbooks, you're not done yet. Now you must create a workflow.
+ Unlike with classic Consumption playbooks, you're not done yet. Now you must create a workflow.
#### Create a workflow for your playbook
-1. From your Logic App's details page, select **Workflows > + Add**. It might take a few moments for the **+ Add** button to become active.
+1. On your logic app menu, under **Workflows**, select **Workflows**.
-1. In the **New workflow** pane that appears:
+1. On the **Workflows** page toolbar, select **Add**.
- 1. Enter a meaningful name for your workflow.
- 1. Under **State type**, select **Stateful**. Microsoft Sentinel doesn't support the use of stateless workflows as playbooks.
- 1. Select **Create**.
+1. In the **New workflow** pane, provide the following information:
- Your workflow is saved and appears in the list of workflows in your Logic App.
+ | Property | Description |
+ |-|-|
+ | **Workflow Name** | A meaningful name for your workflow. |
+ | **State type** | Select **Stateful**. Microsoft Sentinel doesn't support the use of stateless workflows as playbooks. |
-1. Select the new workflow to proceed and access your workflow details page. Here you can see all the information about your workflow, including a record of all the times it runs.
+1. When you finish, select **Create**.
-1. From the workflow details page, select **Designer**.
+ After Azure saves your workflow, the **Workflows** page shows your workflow.
-1. The **Designer** page opens and you're prompted to add a trigger and continue designing the workflow. For example:
+1. Select the workflow to open the workflow **Overview** page.
- :::image type="content" source="../media/tutorial-respond-threats-playbook/logic-app-standard-designer.png" alt-text="Screenshot of Logic App Standard designer." lightbox="../media/tutorial-respond-threats-playbook/logic-app-standard-designer.png":::
+ This page shows all the information about your workflow, including the history of all the times that the workflow runs.
-#### Add your trigger
+1. On the workflow menu, under **Developer**, select **Designer**.
-1. In the **Designer** page, select the **Azure** tab and enter *Sentinel* in the Search box. The **Triggers** tab shows the triggers supported by Microsoft Sentinel, including:
+ The workflow designer opens for you to start building your workflow by adding a trigger.
- - **Microsoft Sentinel alert**
- - **Microsoft Sentinel entity**
- - **Microsoft Sentinel incident**
+#### Add the workflow trigger
- For example:
+1. On the designer, select **Add a trigger** to open the **Add a trigger** pane, for example:
- :::image type="content" source="../media/tutorial-respond-threats-playbook/sentinel-triggers.png" alt-text="Screenshot of how to choose a trigger for your playbook.":::
+ :::image type="content" source="../media/create-playbooks/designer-standard.png" alt-text="Screenshot shows designer in Standard logic app workflow." lightbox="../media/create-playbooks/designer-standard.png":::
-1. If you choose the **Microsoft Sentinel entity** trigger, select the type of entity you want this playbook to receive as an input. For example:
+1. [Follow these general steps to find the **Microsoft Sentinel** triggers](../../logic-apps/create-workflow-with-trigger-or-action.md?tabs=standard#add-trigger), which include these triggers:
- :::image type="content" source="../media/tutorial-respond-threats-playbook/entity-trigger-types-standard.png" alt-text="Screenshot of drop-down list of entity types to choose from to set playbook schema.":::
+ - **Microsoft Sentinel entity**
+ - **Microsoft Sentinel alert**
+ - **Microsoft Sentinel incident**
-For more information, see [Supported triggers and actions in Microsoft Sentinel playbooks](playbook-triggers-actions.md).
+ :::image type="content" source="../media/create-playbooks/sentinel-triggers.png" alt-text="Screenshot shows how to select a trigger for your playbook." lightbox="../media/create-playbooks/sentinel-triggers.png":::
-
+1. Select the trigger that you want to use for your playbook.
-### Add actions to your playbook
+ This example continues with the **Microsoft Sentinel entity** trigger.
+
+1. On the designer, select the trigger, if not already selected.
+
+1. On the **Create connection** pane, provide the required information to connect to Microsoft Sentinel.
+
+ 1. For **Authentication**, select from the following methods, which affect subsequent connection parameters:
+
+ | Method | Description |
+ |--|-|
+ | **OAuth** | Open Authorization (OAuth) is a technology standard that lets you authorize an app or service to sign in to another without exposing private information, such as passwords. OAuth 2.0 is the industry protocol for authorization and grants limited access to protected resources. For more information, see the following resources: <br><br>- [What is OAuth](https://www.microsoft.com/security/business/security-101/what-is-oauth)? <br>- [OAuth 2.0 authorization with Microsoft Entra ID](/entra/architecture/auth-oauth2) |
+ | **Service principal** | A service principal represents an entity that requires access to resources that are secured by a Microsoft Entra tenant. For more information, see [Service principal object](/entra/identity-platform/app-objects-and-service-principals). |
+ | **Managed identity** | An identity that is automatically managed in Microsoft Entra ID. Apps can use this identity to access resources that support Microsoft Entra authentication and to obtain Microsoft Entra tokens without having to manage any credentials. <br><br>For optimal security, Microsoft recommends using a managed identity for authentication when possible. This option provides superior security and helps keep authentication information secure so that you don't have to manage this sensitive information. For more information, see the following resources: <br><br>- [What are managed identities for Azure resources](/entra/identity/managed-identities-azure-resources/overview)? <br>- [Authenticate access and connections to Azure resources with managed identities in Azure Logic Apps](/azure/logic-apps/authenticate-with-managed-identity). |
+
+ For more information, see [Authentication prompts](#authentication-prompts).
-Now that you have a logic app, define what happens when you call the playbook. Add actions, logical conditions, loops, or switch case conditions, all by selecting **New step**. This selection opens a new frame in the designer, where you can choose a system or an application to interact with or a condition to set. Enter the name of the system or application in the search bar at the top of the frame, and then choose from the available results.
+ 1. Based on your selected authentication option, provide the necessary parameter values for the corresponding option.
-In every one of these steps, clicking on any field displays a panel with the following menus:
+ For more information about these parameters, see [Microsoft Sentinel connector reference](/connectors/azuresentinel/).
-- **Dynamic content**: Add references to the attributes of the alert or incident that was passed to the playbook, including the values and attributes of all the [mapped entities](../map-data-fields-to-entities.md) and [custom details](../surface-custom-details-in-alerts.md) contained in the alert or incident. For examples of using dynamic content, see:
+ 1. For **Tenant ID**, select your [Microsoft Entra tenant ID](/entra/fundamentals/how-to-find-tenant).
- - [Use entity playbooks with no incident ID](#dynamic-content-use-entity-playbooks-with-no-incident-id)
- - [Work with custom details](#dynamic-content-work-with-custom-details)
+ 1. When you finish, select **Sign in**.
-- **Expression**: Choose from a large library of functions to add more logic to your steps.
+1. If you chose **Playbook with entity trigger**, select the type of entity you want this playbook to receive as an input.
+
+ :::image type="content" source="../media/create-playbooks/entity-trigger-types.png" alt-text="Screenshot shows Standard workflow playbook with entity trigger, and available entity types to select for setting the playbook schema." lightbox="../media/create-playbooks/entity-trigger-types.png":::
For more information, see [Supported triggers and actions in Microsoft Sentinel playbooks](playbook-triggers-actions.md). ++
+<a name="authentication-prompts"></a>
+ ### Authentication prompts
-When you choose a trigger, or any subsequent action, you're prompted to authenticate to whichever resource provider you are interacting with. In this case, the provider is Microsoft Sentinel, and there are a few authentication options. For more information, see:
+When you add a trigger or subsequent action that requires authentication, you might be prompted to choose from the available authentication types supported by the corresponding resource provider. In this example, a Microsoft Sentinel trigger is the first operation that you add to your workflow. So, the resource provider is Microsoft Sentinel, which supports several authentication options. For more information, see the following documentation:
- [**Authenticate playbooks to Microsoft Sentinel**](authenticate-playbooks-to-sentinel.md) - [**Supported triggers and actions in Microsoft Sentinel playbooks**](playbook-triggers-actions.md)
-### Dynamic content: Use entity playbooks with no incident ID
+### Add actions to your playbook
+
+Now that you have a workflow for your playbook, define what happens when you call the playbook. Add actions, logical conditions, loops, or switch case conditions, all by selecting the plus sign (**+**) on the designer. For more information, see [Create a workflow with a trigger or action](../../logic-apps/create-workflow-with-trigger-or-action.md).
+
+This selection opens the **Add an action** pane where you can browse or search for services, applications, systems, control flow actions, and more. After you enter your search terms or select the resource that you want, the results list shows you the available actions.
-Playbooks created with the entity trigger often use the **Incident ARM ID** field, such as to update an incident after taking action on the entity.
+In each action, when you select inside a field, you get the following options:
-If such a playbook is triggered in a context unconnected to an incident, such as when threat hunting, there's no incident whose ID can populate this field. In this case, the field is populated with a null value.
+- **Dynamic content** (lightning icon): Choose from a list of available outputs from the preceding actions in the workflow, including the Microsoft Sentinel trigger. For example, these outputs can include the attributes of an alert or incident that was passed to the playbook, including the values and attributes of all the [mapped entities](../map-data-fields-to-entities.md) and [custom details](../surface-custom-details-in-alerts.md) in the alert or incident. You can add references to the current action by selecting these outputs.
-As a result, the playbook might fail to run to completion. To prevent this failure, we recommend that you create a condition that checks for a value in the incident ID field before taking any actions on it, and prescribe a different set of actions if the field has a null value - that is, if the playbook isn't being run from an incident.
+ For examples that show using dynamic content, see the following sections:
-Do the following steps:
+ - [Use entity playbooks with no incident ID](#dynamic-content-entity-playbooks-with-no-incident-id)
+ - [Work with custom details](#dynamic-content-work-with-custom-details)
-1. Before the first action that refers to the **Incident ARM ID** field, add a **Condition** step.
+- **Expression editor** (function icon): Choose from a large library of functions to add more logic to your workflow.
-1. On the side, select the **Choose a value** field to enter the **Add dynamic content** dialog.
+For more information, see [Supported triggers and actions in Microsoft Sentinel playbooks](playbook-triggers-actions.md).
+
+### Dynamic content: Entity playbooks with no incident ID
+
+Playbooks created with the **Microsoft Sentinel entity** trigger often use the **Incident ARM ID** field, for example, to update an incident after taking action on the entity. If such a playbook is triggered in a scenario that's unconnected to an incident, such as when threat hunting, there's no incident ID to populate this field. Instead, the field is populated with a null value. As a result, the playbook might fail to run to completion.
+
+To prevent this failure, we recommend that you create a condition that checks for a value in the incident ID field before the workflow takes any other actions. You can prescribe a different set of actions to take if the field has a null value, due to the playbook not being run from an incident.
+
+1. In your workflow, preceding the first action that refers to the **Incident ARM ID** field, [follow these general steps to add a **Condition** action](../../logic-apps/create-workflow-with-trigger-or-action.md).
+
+1. In the **Condition** pane, on the condition row, select the left **Choose a value** field, and then select the dynamic content option (lightning icon).
+
+1. From the dynamic content list, under **Microsoft Sentinel incident**, use the search box to find and select **Incident ARM ID**.
+
+ > [!TIP]
+ >
+ > If the output doesn't appear in the list, next to the trigger name, select **See more**.
-1. Select **Incident ARM ID (Optional)**, and the **is not equal to** operator.
+1. In the middle field, from the operator list, select **is not equal to**.
-1. Select **Choose a value** again to enter the **Add dynamic content** dialog.
+1. In the right **Choose a value** field, and select the expression editor option (function icon).
-1. Select the **Expression** tab and **null** function.
+1. In the editor, enter **null**, and select **Add**.
-For example:
+When you finish, your condition looks similar to the following example:
### Dynamic content: Work with custom details
-The **Alert custom details** dynamic field, available in the **incident trigger**, is an array of JSON objects, each of which represents a custom detail of an alert. [Custom details](../surface-custom-details-in-alerts.md) are key-value pairs that allow you to surface information from events in the alert so they can be represented, tracked, and analyzed as part of the incident.
+In the **Microsoft Sentinel incident** trigger, the **Alert custom details** output is an array of JSON objects where each represents a [custom detail from an alert](../surface-custom-details-in-alerts.md). Custom details are key-value pairs that let you surface information from events in the alert so they can be represented, tracked, and analyzed as part of the incident.
+
+This field in the alert is customizable, so its schema depends on the type of event that is surfaced. To generate the schema that determines how to parse the custom details output, provide the data from an instance of this event:
+
+1. On the Microsoft Sentinel workspace menu, under **Configuration**, select **Analytics**.
+
+1. Follow the steps to create or open an existing [scheduled query rule](../create-analytics-rules.md?tabs=azure-portal) or [NRT query rule](../create-nrt-rules.md?tabs=azure-portal).
+
+1. On the **Set rule logic** tab, [expand the **Custom details** section](../surface-custom-details-in-alerts.md?tabs=azure), for example:
+
+ :::image type="content" source="../media/create-playbooks/custom-details-values.png" alt-text="Screenshot shows custom details defined in an analytics rule." lightbox="../media/create-playbooks/custom-details-values.png":::
+
+ The following table provides more information about these key-value pairs:
+
+ | Item | Location | Description |
+ ||-|-|
+ | **Key** | Left column | Represents the custom fields that you create. |
+ | **Value** | Right column | Represents the fields from the event data that populate the custom fields. |
-Since this field in the alert is customizable, its schema depends on the type of event being surfaced. Supply data from an instance of this event to generate the schema that determines how the custom details field is parsed.
+1. To generate the schema, provide the following example JSON code:
-For example:
+ ```json
+ { "FirstCustomField": [ "1", "2" ], "SecondCustomField": [ "a", "b" ] }
+ ```
+ The code shows the key names as arrays, and the values as items in the arrays. Values are shown as the actual values, not the column that contains the values.
-In these key-value pairs:
+To use custom fields for incident triggers, follow these steps for your workflow:
-- The key, in the left column, represents the custom fields you create.-- The value, in the right column, represents the fields from the event data that populate the custom fields.
+1. In the workflow designer, under the **Microsoft Sentinel incident** trigger, add the built-in action named **Parse JSON**.
-Supply the following JSON code to generate the schema. The code shows the key names as arrays, and the values as items in the arrays. Values are shown as the actual values, not the column that contains the values.
+1. Select inside the action's **Content** parameter, and select the dynamic content list option (lightning icon).
-```json
-{ "FirstCustomField": [ "1", "2" ], "SecondCustomField": [ "a", "b" ] }
-```
+1. From the list, in the incident trigger section, find and select **Alert Custom Details**, for example:
-To use custom fields for incident triggers:
+ :::image type="content" source="../media/create-playbooks/custom-details-dynamic-field.png" alt-text="Screenshot shows selected Alert Custom Details in dynamic content list." lightbox="../media/create-playbooks/custom-details-dynamic-field.png":::
-1. Add a new step using the **Parse JSON** built-in action. Enter 'parse json' in the **Search** field to find it if you need to.
+ This selection automatically adds a **For each** loop around **Parse JSON** because an incident contains an array of alerts.
-1. Find and select **Alert Custom Details** in the **Dynamic content** list, under the incident trigger. For example:
+1. In the **Parse JSON** information pane, select **Use sample payload to generate schema**, for example:
- :::image type="content" source="../media/playbook-triggers-actions/custom-details-dynamic-field.png" alt-text="Screenshot of selecting Alert custom details from Dynamic content.":::
+ :::image type="content" source="../media/create-playbooks/generate-schema-link.png" alt-text="Screenshot shows selection for Use sample payload to generate schema link." lightbox="../media/create-playbooks/generate-schema-link.png":::
- This creates a **For each** loop, since an incident contains an array of alerts.
+1. In the **Enter or paste a sample JSON payload** box, provide a sample payload, and select **Done**.
-1. Select the **Use sample payload to generate schema** link. For example:
+ For example, you can find a sample payload by looking in Log Analytics for another instance of this alert, and then copying the custom details object, which you can find under **Extended Properties**. To access Log Analytics data, go either to the **Logs** page in the Azure portal or the **Advanced hunting** page in the Defender portal.
- :::image type="content" source="../media/playbook-triggers-actions/generate-schema-link.png" alt-text="Screenshot of selecting the use sample payload to generate schema link from Dynamic content option.":::
+ The following example shows the earlier sample JSON code:
-1. Supply a sample payload. For example, you can find a sample payload by looking in Log Analytics for another instance of this alert and copying the custom details object, found under **Extended Properties**. Access Log Analytics data either in the **Logs** page in the Azure portal or the **Advanced hunting** page in the Defender portal. In the screenshot below, we used the JSON code shown above.
+ :::image type="content" source="../media/create-playbooks/sample-payload.png" alt-text="Screenshot shows sample JSON payload." lightbox="../media/create-playbooks/sample-payload.png":::
- :::image type="content" source="../media/playbook-triggers-actions/sample-payload.png" alt-text="Screenshot of entering a sample JSON payload.":::
+ When you finish, the **Schema** box now contains the generated schema based on the sample that you provided. The **Parse JSON** action creates custom fields that you can now use as dynamic fields with **Array** type in your workflow's subsequent actions.
-The custom fields are ready to be used as dynamic fields of type **Array**. For example, the following screenshot shows an array and its items, both in the schema and in the list that appears under **Dynamic content**, that we described in this section:
+ The following example shows an array and its items, both in the schema and in the dynamic content list for a subsequent action named **Compose**:
+ :::image type="content" source="../media/create-playbooks/custom-fields-ready-to-use.png" alt-text="Screenshot shows ready to use dynamic fields from the schema." lightbox="../media/create-playbooks/custom-fields-ready-to-use.png":::
## Manage your playbooks Select the **Automation > Active playbooks** tab to view all the playbooks you have access to, filtered by your subscription view.
-After onboarding to the unified security operations platform, by default the **Active playbooks** tab shows a predefined filter with onboarded workspace's subscription. **In the Azure portal**, edit the subscriptions you're showing from the **Directory + subscription** menu in the global Azure page header.
+After you onboard to the unified security operations platform, by default the **Active playbooks** tab shows a predefined filter with onboarded workspace's subscription. **In the Azure portal**, edit the subscriptions you're showing from the **Directory + subscription** menu in the global Azure page header.
While the **Active playbooks** tab displays all the active playbooks available across any selected subscriptions, by default a playbook can be used only within the subscription to which it belongs, unless you specifically grant Microsoft Sentinel permissions to the playbook's resource group.
The **Active playbooks** tab shows your playbooks with the following details:
|Column name |Description | ||| |**Status** | Indicates if the playbook is enabled or disabled. |
-|**Plan** | Indicates whether the playbook uses the *Standard* or *Consumption* Azure Logic Apps resource type. <br><br>Playbooks of the *Standard* type use the `LogicApp/Workflow` naming convention, which reflects how a Standard playbook represents a workflow that exists alongside other workflows in a single Logic App. <br><br>For more information, see [Azure Logic Apps for Microsoft Sentinel playbooks](logic-apps-playbooks.md). |
-|**Trigger kind** | Indicates the Azure Logic Apps trigger that starts this playbook: <br><br>- **Microsoft Sentinel Incident/Alert/Entity**: The playbook is started with one of the Sentinel triggers, including incident, alert, or entity <br>- **Using Microsoft Sentinel Action**: The playbook is started with a non-Microsoft Sentinel trigger but uses a Microsoft Sentinel action <br>- **Other**: The playbook doesn't include any Microsoft Sentinel components <br>- **Not initialized**: The playbook was created, but contains no components, neither triggers no actions. |
+|**Plan** | Indicates whether the playbook uses the *Standard* or *Consumption* Azure Logic Apps resource type. <br><br>Playbooks of the *Standard* type use the `LogicApp/Workflow` naming convention, which reflects how a Standard playbook represents a workflow that exists alongside other workflows in a single logic app. <br><br>For more information, see [Azure Logic Apps for Microsoft Sentinel playbooks](../automation/logic-apps-playbooks.md). |
+|**Trigger kind** | Indicates the trigger in Azure Logic Apps that starts this playbook: <br><br>- **Microsoft Sentinel Incident/Alert/Entity**: The playbook is started with one of the Sentinel triggers, including incident, alert, or entity <br>- **Using Microsoft Sentinel Action**: The playbook is started with a non-Microsoft Sentinel trigger but uses a Microsoft Sentinel action <br>- **Other**: The playbook doesn't include any Microsoft Sentinel components <br>- **Not initialized**: The playbook was created, but contains no components, neither triggers no actions. |
Select a playbook to open its Azure Logic Apps page, which shows more details about the playbook. On the Azure Logic Apps page:
Select a playbook to open its Azure Logic Apps page, which shows more details ab
## Related content
-Once you created your playbook, attach it to rules to be triggered by events in your environment, or run your playbooks manually on specific incidents, alerts, or entities.
+After you create your playbook, attach it to rules to be triggered by events in your environment, or run your playbooks manually on specific incidents, alerts, or entities.
For more information, see:
sentinel Logic Apps Playbooks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/sentinel/automation/logic-apps-playbooks.md
Azure Logic Apps also supports other types of connectors, such as managed connec
## Supported logic app types
-Microsoft Sentinel supports both *consumption* and *standard* Azure Logic Apps resource types:
+Microsoft Sentinel supports both Consumption and Standard logic apps:
-- **Consumption** resources run in multitenant Azure Logic Apps and use the classic, original Azure Logic Apps engine.
+- **Consumption**: Runs in multitenant Azure Logic Apps, and uses the classic, original Azure Logic Apps engine.
-- **Standard** resources run in single-tenant Azure Logic Apps and use a more recently designed Azure Logic Apps engine.
+- **Standard**: Runs in single-tenant Azure Logic Apps, and uses a more recently designed Azure Logic Apps engine.
- Standard resources offer higher performance, fixed pricing, multiple workflow capability, easier API connections management, built-in network capabilities and CI/CD features, and more. However, the following playbook functionality differs for Standard resources in Microsoft Sentinel:
+ Standard resources offer higher performance, fixed pricing, multiple workflow capability, easier API connections management, built-in network capabilities and CI/CD features, and more. However, the following playbook functionality differs for Standard logic apps in Microsoft Sentinel:
- |Feature |Description |
- |||
- |**Creating playbooks** | Playbook templates aren't currently supported for Standard workflows, which means that you can't use a template to create your playbook directly in Microsoft Sentinel. <br><br>Instead, create your workflow manually in Azure Logic Apps to use it as a playbook in Microsoft Sentinel. |
- |**Private endpoints** | If you're using Standard workflows with private endpoints, Microsoft Sentinel requires you to [define an access restriction policy in Logic apps](../define-playbook-access-restrictions.md) to support those private endpoints in any playbooks based on Standard workflows. <br><br> Without an access restriction policy, workflows with private endpoints might still be visible and selectable in Microsoft Sentinel, but running them will fail. |
- |**Stateless workflows** | While Standard workflows support both *stateful* and *stateless* in Azure Logic Apps, Microsoft Sentinel doesn't support stateless workflows. <br><br>For more information, see [Stateful and stateless workflows](/azure/logic-apps/single-tenant-overview-compare#stateful-and-stateless-workflows).
+ | Feature | Description |
+ ||-|
+ | **Creating playbooks** | Playbook templates aren't currently supported for Standard workflows, which means that you can't use a template to create your playbook directly in Microsoft Sentinel. <br><br>Instead, create your workflow manually in Azure Logic Apps to use it as a playbook in Microsoft Sentinel. |
+ | **Private endpoints** | If you're using Standard workflows with private endpoints, Microsoft Sentinel requires you to [define an access restriction policy in Logic apps](../define-playbook-access-restrictions.md) to support those private endpoints in any playbooks based on Standard workflows. <br><br>Without an access restriction policy, workflows with private endpoints might still be visible and selectable in Microsoft Sentinel, but running them will fail. |
+ | **Stateless workflows** | While Standard workflows support both *stateful* and *stateless* in Azure Logic Apps, Microsoft Sentinel doesn't support stateless workflows. <br><br>For more information, see [Stateful and stateless workflows](/azure/logic-apps/single-tenant-overview-compare#stateful-and-stateless-workflows). |
## Playbook authentications to Microsoft Sentinel
-Azure Logic Apps must connect separately and authenticate independently to each resource, of each type, that it interacts with, including to Microsoft Sentinel itself. Logic Apps uses [specialized connectors](/connectors/connector-reference/) for this purpose, with each resource type having its own connector.
+Azure Logic Apps must connect separately and authenticate independently to each resource, of each type, that it interacts with, including to Microsoft Sentinel itself. Azure Logic Apps uses [specialized connectors](/connectors/connector-reference/) for this purpose, with each resource type having its own connector.
For more information, see [Authenticate playbooks to Microsoft Sentinel](../authenticate-playbooks-to-sentinel.md). ## Related content - [Resource type and host environment differences](/azure/logic-apps/logic-apps-overview#resource-environment-differences) in the Azure Logic Apps documentation-- [Microsoft Sentinel Logic Apps connector](/connectors/azuresentinel/) in the Azure Logic Apps documentation
+- [Microsoft Sentinel connector for Azure Logic Apps](/connectors/azuresentinel/) in the Azure Logic Apps documentation
- [Create and manage Microsoft Sentinel playbooks](create-playbooks.md)
sentinel Playbook Recommendations https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/sentinel/automation/playbook-recommendations.md
This section lists recommended playbooks, and other similar playbooks are availa
| Playbook | Folder in<br>GitHub&nbsp;repository |Solution in Content hub/<br>Azure Marketplace | | -- | -- | |
-| **Post a message in a Microsoft Teamschannel** | [Post-Message-Teams](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/Post-Message-Teams) | [Sentinel SOAR Essentialssolution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
-| **Send an Outlook email notification** | [Send-basic-email](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/Send-basic-email) | [Sentinel SOAR Essentialssolution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
-| **Post a message in a Slack channel** | [Post-Message-Slack](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/Post-Message-Slack) | [Sentinel SOAR Essentialssolution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
-| **Send Microsoft Teams adaptive card on incident creation** | [Send-Teams-adaptive-card-on-incident-creation](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Teams/Playbooks/Send-Teams-adaptive-card-on-incident-creation) |[Sentinel SOAR Essentials solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
+| **Post a message in a Microsoft Teams channel** | [Post-Message-Teams](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/Post-Message-Teams) | [Sentinel SOAR Essentials Solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
+| **Send an Outlook email notification** | [Send-basic-email](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/Send-basic-email) | [Sentinel SOAR Essentials Solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
+| **Post a message in a Slack channel** | [Post-Message-Slack](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/Post-Message-Slack) | [Sentinel SOAR Essentials Solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
+| **Send Microsoft Teams adaptive card on incident creation** | [Send-Teams-adaptive-card-on-incident-creation](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Teams/Playbooks/Send-Teams-adaptive-card-on-incident-creation) |[Sentinel SOAR Essentials Solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
### Blocking playbook templates
This section lists recommended playbooks, and other similar playbooks are availa
| -- | -- | | | **Create an incident using Microsoft Forms** | [CreateIncident-MicrosoftForms](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/CreateIncident-MicrosoftForms) | [Sentinel SOAR Essentials solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) | | **Relate alerts to incidents** | [relateAlertsToIncident-basedOnIP](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/SentinelSOARessentials/Playbooks/relateAlertsToIncident-basedOnIP) | [Sentinel SOAR Essentials solution](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azuresentinel.azure-sentinel-solution-sentinelsoaressentials?tab=Overview) |
-| **Create a ServiceNow incident** | [Create-SNOW-record](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Servicenow/Playbooks/Create-SNOW-record) | [ServiceNow solution](https://azuremarketplace.microsoft.com/en-US/marketplace/apps/azuresentinel.azure-sentinel-solution-servicenow?tab=Overview) |
+| **Create a Service Now incident** | [Create-SNOW-record](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Servicenow/Playbooks/Create-SNOW-record) | [ServiceNow solution](https://azuremarketplace.microsoft.com/en-US/marketplace/apps/azuresentinel.azure-sentinel-solution-servicenow?tab=Overview) |
## Commonly used playbook configurations
This section provides sample screenshots of how you might use a playbook to upda
**Update an incident based on a new incident** (incident trigger):
-![Screenshot of an incident trigger simple update flow example.](../media/playbook-triggers-actions/incident-simple-flow.png)
+![Screenshot of an incident trigger simple update flow example.](../media/playbook-recommendations/incident-simple-flow.png)
**Update an incident based on a new alert** (alert trigger):
-![Screenshot of an alert trigger simple update incident flow example.](../media/playbook-triggers-actions/alert-update-flow.png)
+![Screenshot of an alert trigger simple update incident flow example.](../media/playbook-recommendations/alert-update-flow.png)
### Use incident details in your flow
This section provides sample screenshots of how you might use your playbook to u
**Send incident details by mail, using a playbook triggered by a new incident**:
-![Screenshot of an incident trigger simple get flow example.](../media/playbook-triggers-actions/incident-simple-mail-flow.png)
+![Screenshot of an incident trigger simple get flow example.](../media/playbook-recommendations/incident-simple-mail-flow.png)
**Send incident details by mail, using a playbook triggered by a new alert**:
-![Screenshot of an alert trigger simple get incident flow example.](../media/playbook-triggers-actions/alert-simple-mail-flow.png)
+![Screenshot of an alert trigger simple get incident flow example.](../media/playbook-recommendations/alert-simple-mail-flow.png)
### Add a comment to an incident
This section provides sample screenshots of how you might use your playbook to a
**Add a comment to an incident, using a playbook triggered by a new incident**:
-![Screenshot of an incident trigger simple add comment example.](../media/playbook-triggers-actions/incident-comment.png)
+![Screenshot of an incident trigger simple add comment example.](../media/playbook-recommendations/incident-comment.png)
**Add a comment to an incident, using a playbook triggered by a new alert**:
-![Screenshot of an alert trigger simple add comment example.](../media/playbook-triggers-actions/alert-comment.png)
+![Screenshot of an alert trigger simple add comment example.](../media/playbook-recommendations/alert-comment.png)
### Disable a user The following screenshot shows an example of how you might use your playbook to disable a user account, based on a Microsoft Sentinel entity trigger: ## Related content
sentinel Run Playbooks https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/sentinel/automation/run-playbooks.md
In a multitenant deployment, if the playbook you want to run is in a different t
1. Select the **Configure permissions** button to open the **Manage permissions** panel. 1. Mark the check boxes of the resource groups containing the playbooks you want to run, and select **Apply**. For example:
- :::image type="content" source="../media/tutorial-respond-threats-playbook/manage-permissions.png" alt-text="Screenshot that shows the actions section with run playbook selected.":::
+ :::image type="content" source="../media/run-playbooks/manage-permissions.png" alt-text="Screenshot that shows the actions section with run playbook selected.":::
You yourself must have **Owner** permissions on any resource group to which you want to grant Microsoft Sentinel permissions, and you must have the **Microsoft Sentinel Playbook Operator** role on any resource group containing playbooks you want to run.
To respond automatically to entire incidents or individual alerts with a playboo
1. From the **Automation** page in the Microsoft Sentinel navigation menu, select **Create** from the top menu and then **Automation rule**. For example:
- :::image type="content" source="../media/tutorial-respond-threats-playbook/add-new-rule.png" alt-text="Screenshot showing how to add a new automation rule.":::
+ :::image type="content" source="../media/run-playbooks/add-new-rule.png" alt-text="Screenshot showing how to add a new automation rule.":::
1. The **Create new automation rule** panel opens. Enter a name for your rule. Your options differ depending on whether your workspace is onboarded to the unified security operations platform. For example: ### [Onboarded workspaces](#tab/after-onboarding)
- :::image type="content" source="../media/tutorial-respond-threats-playbook/create-automation-rule-onboarded.png" alt-text="Screenshot showing the automation rule creation wizard.":::
+ :::image type="content" source="../media/run-playbooks/create-automation-rule-onboarded.png" alt-text="Screenshot showing the automation rule creation wizard.":::
### [Workspaces that aren't onboarded](#tab/before-onboarding)
- :::image type="content" source="../media/tutorial-respond-threats-playbook/create-automation-rule.png" alt-text="Screenshot showing the automation rule creation wizard.":::
+ :::image type="content" source="../media/run-playbooks/create-automation-rule.png" alt-text="Screenshot showing the automation rule creation wizard.":::
To respond automatically to entire incidents or individual alerts with a playboo
In the **Manage permissions** panel that opens up, mark the check boxes of the resource groups containing the playbooks you want to run, and select **Apply**. For example:
- :::image type="content" source="../media/tutorial-respond-threats-playbook/manage-permissions.png" alt-text="Screenshot that shows the actions section with run playbook selected.":::
+ :::image type="content" source="../media/run-playbooks/manage-permissions.png" alt-text="Screenshot that shows the actions section with run playbook selected.":::
You yourself must have **Owner** permissions on any resource group to which you want to grant Microsoft Sentinel permissions, and you must have the **Microsoft Sentinel Playbook Operator** role on any resource group containing playbooks you want to run.
sentinel Create Manage Use Automation Rules https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/sentinel/create-manage-use-automation-rules.md
This article explains how to create and use automation rules in Microsoft Sentinel to manage and orchestrate threat response, in order to maximize your SOC's efficiency and effectiveness.
-In this article you'll learn how to define the triggers and conditions that will determine when your automation rule will run, the various actions that you can have the rule perform, and the remaining features and functionalities.
+In this article you'll learn how to define the triggers and conditions that determine when your automation rule runs, the various actions that you can have the rule perform, and the remaining features and functionalities.
> [!IMPORTANT] >
In this article you'll learn how to define the triggers and conditions that will
## Design your automation rule
-Before you create your automation rule, we recommend that you determine its scope and design, including the trigger, conditions, and actions that will make up your rule.
+Before you create your automation rule, we recommend that you determine its scope and design, including the trigger, conditions, and actions that make up your rule.
### Determine the scope
-The first step in designing and defining your automation rule is figuring out which incidents or alerts you want it to apply to. This determination will directly impact how you create the rule.
+The first step in designing and defining your automation rule is figuring out which incidents or alerts you want it to apply to. This determination directly impacts how you create the rule.
You also want to determine your use case. What are you trying to accomplish with this automation? Consider the following options:
Do you want this automation to be activated when new incidents or alerts are cre
Automation rules are triggered **when an incident is created or updated** or **when an alert is created**. Recall that incidents include alerts, and that both alerts and incidents can be created by analytics rules, of which there are several types, as explained in [Threat detection in Microsoft Sentinel](threat-detection.md).
-The following table shows the different possible scenarios that will cause an automation rule to run.
+The following table shows the different possible scenarios that cause an automation rule to run.
| Trigger type | Events that cause the rule to run | | | |
From the **Trigger** drop-down, select the appropriate trigger according to the
Use the options in the **Conditions** area to define conditions for your automation rule. -- Rules you create for when an alert is created support only the **If Analytic rule name** property in your condition. Select whether you want the rule to be inclusive (*Contains*) or exclusive (*Does not contain*), and then select the analytic rule name from the drop-down list.
+- Rules you create for when an alert is created support only the **If Analytic rule name** property in your condition. Select whether you want the rule to be inclusive (**Contains**) or exclusive (**Does not contain**), and then select the analytic rule name from the drop-down list.
Analytic rule name values include only analytics rules, and don't include other types of rules, such as threat intelligence or anomaly rules.
Use the options in the **Conditions** area to define conditions for your automat
- **Incident provider**: Incidents can have two possible sources: they can be created inside Microsoft Sentinel, and they can also be [imported from&mdash;and synchronized with&mdash;Microsoft Defender XDR](microsoft-365-defender-sentinel-integration.md).
- If you selected one of the incident triggers and you want the automation rule to take effect only on incidents created in Microsoft Sentinel, or alternatively, only on those imported from Microsoft Defender XDR, specify the source in the **If Incident provider equals** condition. (This condition will be displayed only if an incident trigger is selected.)
+ If you selected one of the incident triggers and you want the automation rule to take effect only on incidents created in Microsoft Sentinel, or alternatively, only on those imported from Microsoft Defender XDR, specify the source in the **If Incident provider equals** condition. (This condition is displayed only if an incident trigger is selected.)
- - **Analytic rule name**: For all trigger types, if you want the automation rule to take effect only on certain analytics rules, specify which ones by modifying the **If Analytics rule name contains** condition. (This condition will *not* be displayed if Microsoft Defender XDR is selected as the incident provider.)
+ - **Analytic rule name**: For all trigger types, if you want the automation rule to take effect only on certain analytics rules, specify which ones by modifying the **If Analytics rule name contains** condition. (This condition isn't displayed if Microsoft Defender XDR is selected as the incident provider.)
Then, continue by selecting one of the following operators:
Use the options in the **Conditions** area to define conditions for your automat
The only condition that can be evaluated by rules based on the alert creation trigger is which Microsoft Sentinel analytics rule created the alert.
- Automation rules based on the alert trigger will therefore only run on alerts created by Microsoft Sentinel.
+ Automation rules that are based on the alert trigger only run on alerts created by Microsoft Sentinel.
1. Enter a value in the field on the right. Depending on the property you chose, this might be either a text box or a drop-down in which you select from a closed list of values. You might also be able to add several values by selecting the dice icon to the right of the text box.
Choose the actions you want this automation rule to take. Available actions incl
For whichever action you choose, fill out the fields that appear for that action according to what you want done.
-If you add a **Run playbook** action, you will be prompted to choose from the drop-down list of available playbooks.
+If you add a **Run playbook** action, you're prompted to choose from the drop-down list of available playbooks.
-- Only playbooks that start with the **incident trigger** can be run from automation rules using one of the incident triggers, so only they will appear in the list. Likewise, only playbooks that start with the **alert trigger** are available in automation rules using the alert trigger.
+- Only playbooks that start with the **incident trigger** can be run from automation rules using one of the incident triggers, so only they appear in the list. Likewise, only playbooks that start with the **alert trigger** are available in automation rules using the alert trigger.
-- <a name="explicit-permissions"></a>Microsoft Sentinel must be granted explicit permissions in order to run playbooks. If a playbook appears "grayed out" in the drop-down list, it means Sentinel does not have permission to that playbook's resource group. Select the **Manage playbook permissions** link to assign permissions.
+- <a name="explicit-permissions"></a>Microsoft Sentinel must be granted explicit permissions in order to run playbooks. If a playbook appears unavailable in the drop-down list, it means that Sentinel doesn't have permissions to access that playbook's resource group. To assign permissions, select the **Manage playbook permissions** link.
In the **Manage permissions** panel that opens up, mark the check boxes of the resource groups containing the playbooks you want to run, and select **Apply**.
- :::image type="content" source="./media/tutorial-respond-threats-playbook/manage-permissions.png" alt-text="Manage permissions":::
+
+ :::image type="content" source="./media/create-manage-use-automation-rules/manage-permissions.png" alt-text="Manage permissions":::
You yourself must have **owner** permissions on any resource group to which you want to grant Microsoft Sentinel permissions, and you must have the **Microsoft Sentinel Automation Contributor** role on any resource group containing playbooks you want to run. -- If you don't yet have a playbook that will take the action you have in mind, [create a new playbook](tutorial-respond-threats-playbook.md). You will have to exit the automation rule creation process and restart it after you have created your playbook.
+- If you don't yet have a playbook that takes the action that you want, [create a new playbook](tutorial-respond-threats-playbook.md). You have to exit the automation rule creation process and restart it after you create your playbook.
#### Move actions around
You can change the order of actions in your rule even after you've added them. S
### Finish creating your rule
-1. Under **Rule expiration**, if you want your automation rule to expire, set an expiration date (and optionally, a time). Otherwise, leave it as *Indefinite*.
+1. Under **Rule expiration**, if you want your automation rule to expire, set an expiration date, and optionally, a time. Otherwise, leave it as *Indefinite*.
-1. The **Order** field is prepopulated with the next available number for your rule's trigger type. This number determines where in the sequence of automation rules (of the same trigger type) this rule will run. You can change the number if you want this rule to run before an existing rule.
+1. The **Order** field is prepopulated with the next available number for your rule's trigger type. This number determines where in the sequence of automation rules (of the same trigger type) that this rule runs. You can change the number if you want this rule to run before an existing rule.
- See [Notes on execution order and priority](automate-incident-handling-with-automation-rules.md#notes-on-execution-order-and-priority) for more information.
+ For more information, see [Notes on execution order and priority](automate-incident-handling-with-automation-rules.md#notes-on-execution-order-and-priority).
1. Select **Apply**. You're done!
SecurityIncident
## Automation rules execution
-Automation rules are run sequentially, according to the order you determine. Each automation rule is executed after the previous one has finished its run. Within an automation rule, all actions are run sequentially in the order in which they are defined. See [Notes on execution order and priority](automate-incident-handling-with-automation-rules.md#notes-on-execution-order-and-priority) for more information.
+Automation rules run sequentially, according to the order that you determine. Each automation rule executes after the previous one finishes its run. Within an automation rule, all actions run sequentially in the order that they're defined. See [Notes on execution order and priority](automate-incident-handling-with-automation-rules.md#notes-on-execution-order-and-priority) for more information.
Playbook actions within an automation rule might be treated differently under some circumstances, according to the following criteria:
trusted-signing How To Change Sku https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/trusted-signing/how-to-change-sku.md
You can change the SKU for a Trusted Signing account at any time by upgrading to
- SKU limitations for updated SKU are enforced after the update is successful. - Downgrade to Basic: - The Basic SKU allows only one certificate profile of each type. For example, if you have two certificate profiles of type Public Trust, you need to delete any one profile to be eligible to downgrade. Same applies for other certificate profile types as well.
+ - In Azure portal on Certificate Profiles page, make sure **Status: All** to view all certificate profiles to help you delete all relevant certificate profiles to meet the criteria to downgrade.
+
+ :::image type="content" source="media/trusted-signing-certificate-profile-deletion-changesku.png" alt-text="Screenshot that shows adding a diagnostic setting." lightbox="media/trusted-signing-certificate-profile-deletion-changesku.png":::
+ - Upgrade to Premium: - There are no limitations when you upgrade to the Premium SKU from Basic SKU. - After changing the SKU, you're required to manually refresh the Account Overview section to see the updated SKU under SKU (Pricing tier). (This limitation is known, and being actively worked on to resolve).
az trustedsigning update -n MyAccount -g MyResourceGroup --sku Premium
View and estimate the cost of your Trusted Signing resource usage. 1. In the Azure portal, search **Subscriptions**. 2. Select the **Subscription**, where you have created Trusted Signing resources.
-3. Select Cost Management from the menu on the left. Learn more about using [Cost Management](/azure/cost-management-billing/costs/).
+3. Select Cost Management from the menu on the left. Learn more about using [Cost Management](https://learn.microsoft.com/azure/cost-management-billing/costs/).
4. For Trusted Signing, you can see costs associated to your Trusted Signing account. **Billing**
View and estimate the cost of your Trusted Signing resource usage.
View Invoice for Trusted Signing service. 1. In the Azure portal, search **Subscriptions**. 2. Select the **Subscription**, where you have created Trusted Signing resources.
-3. Select Billing from the menu on the left. Learn more about [Billing](/azure/cost-management-billing/manage/).
+3. Select Billing from the menu on the left. Learn more about [Billing](https://learn.microsoft.com/azure/cost-management-billing/manage/).
virtual-machine-scale-sets Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-machine-scale-sets/overview.md
Previously updated : 06/14/2024 Last updated : 08/16/2024
Azure Virtual Machine Scale Sets provide the management capabilities for applica
- **Provides high availability and application resiliency** - Scale sets are used to run multiple instances of your application. If one of these VM instances has a problem, customers continue to access your application through one of the other VM instances with minimal interruption.
- - For more availability, you can use [Availability Zones](../availability-zones/az-overview.md) to automatically distribute VM instances in a scale set within a single datacenter or across multiple datacenters.
+ - For more availability, you can use [Availability Zones](../availability-zones/az-overview.md) to automatically distribute VM instances in a scale set within a single datacenter or across multiple datacenters. Deploying VMs across Availability Zones can protect you against data center failure. Note that a scale set can't protect you against data center failures.
- **Allows your application to automatically scale as resource demand changes** - Customer demand for your application may change throughout the day or week. To match customer demand, scale sets can automatically increase the number of VM instances as application demand increases, then reduce the number of VM instances as demand decreases.
virtual-machine-scale-sets Virtual Machine Scale Sets Automatic Upgrade https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade.md
The following platform SKUs are currently supported (and more are added periodic
| MicrosoftWindowsServer | WindowsServer | Datacenter-core-20h2-with-containers-smalldisk-gs | | MicrosoftWindowsServer | WindowsServer | 2022-Datacenter-azure-edition | | MicrosoftWindowsServer | WindowsServer | 2022-Datacenter-azure-edition-smalldisk |
+| Mirantis | Windows_with_Mirantis_Container_Runtime_2019 | win_2019_mcr_23_0 |
+| Mirantis | Windows_with_Mirantis_Container_Runtime_2019 | win_2019_mcr_23_0_gen2 |
## Requirements for configuring automatic OS image upgrade
virtual-machines Enable Infiniband https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-machines/extensions/enable-infiniband.md
To add the VM extension to a VM, you can use [Azure PowerShell](/powershell/azur
### Linux
-The [OFED drivers for Linux](https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed) can be installed with the example below. Though the example here is for RHEL, but the steps are general and can be used for any compatible Linux operating system such as Ubuntu (18.04, 19.04, 20.04) and SLES (12 SP4+ and 15). More examples for other distros are on the [azhpc-images repo](https://github.com/Azure/azhpc-images/blob/master/ubuntu/ubuntu-20.x/ubuntu-20.04-hpc/install_mellanoxofed.sh). The inbox drivers also work as well, but the Mellanox OFED drivers provide more features.
+The [OFED drivers for Linux](https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed) can be installed with the example below. Though the example here is for RHEL, but the steps are general and can be used for any compatible Linux operating system such as Ubuntu (18.04, 19.04, 20.04) and SLES (12 SP4+ and 15). More examples for other distros are on the [azhpc-images repo](https://github.com/Azure/azhpc-images/blob/master/ubuntu/ubuntu-20.x/ubuntu-20.04-hpc/install_prerequisites.sh). The inbox drivers also work as well, but the Mellanox OFED drivers provide more features.
```bash MLNX_OFED_DOWNLOAD_URL=http://content.mellanox.com/ofed/MLNX_OFED-5.0-2.1.8.0/MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.7-x86_64.tgz
virtual-machines Maintenance Notifications Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-machines/maintenance-notifications-portal.md
Once you start maintenance, your virtual machine will be maintained and the main
If you missed the self-service window, you will still be able to see the window when your VM will be maintained by Azure.
+> [!NOTE]
+> In most cases, scheduled maintenance cannot be delayed. If you need a scheduled maintenance to be delayed, contact support and Azure will make a best-effort to postpone.
## Next steps
virtual-network How To Create Encryption Cli https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-network/how-to-create-encryption-cli.md
- Title: Create a virtual network with encryption - Azure CLI-
-description: Learn how to create an encrypted virtual network using the Azure CLI. A virtual network lets Azure resources communicate with each other and with the internet.
---- Previously updated : 08/13/2024---
-# Create a virtual network with encryption using the Azure CLI
-
-Azure Virtual Network encryption is a feature of Azure Virtual Network. Virtual network encryption allows you to seamlessly encrypt and decrypt internal network traffic over the wire, with minimal effect to performance and scale. Azure Virtual Network encryption protects data traversing your virtual network virtual machine to virtual machine and virtual machine to on-premises.
-
-## Prerequisites
--- An Azure account with an active subscription. [Create one for free](https://azure.microsoft.com/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio).---- The how-to article requires version 2.31.0 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed.-
-## Create a resource group
-
-An Azure resource group is a logical container into which Azure resources are deployed and managed.
-
-Create a resource group with [az group create](/cli/azure/group#az-group-create) named **test-rg** in the **eastus2** location.
-
-```azurecli-interactive
- az group create \
- --name test-rg \
- --location eastus2
-```
-
-## Create a virtual network
-
-In this section, you create a virtual network and enable virtual network encryption.
-
-Use [az network vnet create](/cli/azure/network/vnet#az-network-vnet-create) to create a virtual network.
-
-```azurecli-interactive
- az network vnet create \
- --resource-group test-rg \
- --location eastus2 \
- --name vnet-1 \
- --enable-encryption true \
- --encryption-enforcement-policy allowUnencrypted \
- --address-prefixes 10.0.0.0/16 \
- --subnet-name subnet-1 \
- --subnet-prefixes 10.0.0.0/24
-```
-
-## Enable on existing virtual network
-
-You can also enable encryption on an existing virtual network using [az network vnet update](/cli/azure/network/vnet#az-network-vnet-update).
-
-```azurecli-interactive
- az network vnet update \
- --resource-group test-rg \
- --name vnet-1 \
- --enable-encryption true \
- --encryption-enforcement-policy allowUnencrypted
-```
-
-> [!IMPORTANT]
-> Azure Virtual Network encryption requires supported virtual machine SKUs in the virtual network for traffic to be encrypted. For more information, see [Azure Virtual Network encryption requirements](virtual-network-encryption-overview.md#requirements).
-
-## Verify encryption enabled
-
-You can check the encryption parameter in the virtual network to verify that encryption is enabled on the virtual network.
-
-Use [az network vnet show](/cli/azure/network/vnet#az-network-vnet-show) to view the encryption parameter for the virtual network you created previously.
-
-```azurecli-interactive
- az network vnet show \
- --resource-group test-rg \
- --name vnet-1 \
- --query encryption \
- --output tsv
-```
-
-```output
-user@Azure:~$ az network vnet show \
- --resource-group test-rg \
- --name vnet-1 \
- --query encryption \
- --output tsv
-True AllowUnencrypted
-```
-
-## Clean up resources
-
-When you're done with the virtual network, use [az group delete](/cli/azure/group#az-group-delete) to remove the resource group and all its resources.
-
-```azurecli-interactive
-az group delete \
- --name test-rg \
- --yes
-```
-
-## Next steps
--- For more information about Azure Virtual Networks, see [What is Azure Virtual Network?](/azure/virtual-network/virtual-networks-overview).--- For more information about Azure Virtual Network encryption, see [What is Azure Virtual Network encryption?](virtual-network-encryption-overview.md).
virtual-network How To Create Encryption Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-network/how-to-create-encryption-portal.md
- Title: Create a virtual network with encryption - Azure portal-
-description: Learn how to create an encrypted virtual network using the Azure portal. A virtual network lets Azure resources communicate with each other and with the internet.
--- Previously updated : 07/07/2023----
-# Create a virtual network with encryption using the Azure portal
-
-Azure Virtual Network encryption is a feature of Azure Virtual Network. Virtual network encryption allows you to seamlessly encrypt and decrypt internal network traffic over the wire, with minimal effect to performance and scale. Azure Virtual Network encryption protects data traversing your virtual network virtual machine to virtual machine and virtual machine to on-premises.
-
-## Prerequisites
--- An Azure account with an active subscription. [Create one for free](https://azure.microsoft.com/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio).--
-> [!IMPORTANT]
-> Azure Virtual Network encryption requires supported virtual machine SKUs in the virtual network for traffic to be encrypted. The setting **dropUnencrypted** will drop traffic between unsupported virtual machine SKUs if they are deployed in the virtual network. For more information, see [Azure Virtual Network encryption requirements](virtual-network-encryption-overview.md#requirements).
-
-## Enable encryption
-
-Use the following steps to enable encryption for a virtual network.
-
-1. In the search box at the top of the portal, begin typing **Virtual networks**. When **Virtual networks** appears in the search results, select it.
-
-1. Select **vnet-1**.
-
-1. In the **Overview** of **vnet-1**, select the **Properties** tab.
-
-1. Select **Disabled** next to **Encryption**:
-
- :::image type="content" source="./media/how-to-create-encryption-portal/virtual-network-properties.png" alt-text="Screenshot of properties of the virtual network.":::
-
-1. Select the box next to **Virtual network encryption**.
-
-1. Select **Save**.
-
-## Verify encryption enabled
-
-1. In the search box at the top of the portal, begin typing **Virtual networks**. When **Virtual networks** appears in the search results, select it.
-
-1. Select **vnet-1**.
-
-1. In the **Overview** of **vnet-1**, select the **Properties** tab.
-
-1. Verify that **Encryption** is set to **Enabled**.
-
- :::image type="content" source="./media/how-to-create-encryption-portal/virtual-network-properties-encryption-enabled.png" alt-text="Screenshot of properties of the virtual network with encryption enabled.":::
--
-## Next steps
--- For more information about Azure Virtual Networks, see [What is Azure Virtual Network?](/azure/virtual-network/virtual-networks-overview)--- For more information about Azure Virtual Network encryption, see [What is Azure Virtual Network encryption?](virtual-network-encryption-overview.md)
virtual-network How To Create Encryption Powershell https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-network/how-to-create-encryption-powershell.md
- Title: Create a virtual network with encryption - Azure PowerShell-
-description: Learn how to create an encrypted virtual network using Azure PowerShell. A virtual network lets Azure resources communicate with each other and with the internet.
---- Previously updated : 07/07/2023---
-# Create a virtual network with encryption using Azure PowerShell
-
-Azure Virtual Network encryption is a feature of Azure Virtual Network. Virtual network encryption allows you to seamlessly encrypt and decrypt internal network traffic over the wire, with minimal effect to performance and scale. Azure Virtual Network encryption protects data traversing your virtual network virtual machine to virtual machine and virtual machine to on-premises.
-
-## Prerequisites
--- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).--- Azure PowerShell installed locally or Azure Cloud Shell.--- Sign in to Azure PowerShell and ensure you've selected the subscription with which you want to use this feature. For more information, see [Sign in with Azure PowerShell](/powershell/azure/authenticate-azureps).--- Ensure your `Az.Network` module is 4.3.0 or later. To verify the installed module, use the command Get-InstalledModule -Name `Az.Network`. If the module requires an update, use the command Update-Module -Name `Az.Network` if necessary.-
-If you choose to install and use PowerShell locally, this article requires the Azure PowerShell module version 5.4.1 or later. Run `Get-Module -ListAvailable Az` to find the installed version. If you need to upgrade, see [Install Azure PowerShell module](/powershell/azure/install-Az-ps). If you're running PowerShell locally, you also need to run `Connect-AzAccount` to create a connection with Azure.
-
-## Create a resource group
-
-An Azure resource group is a logical container into which Azure resources are deployed and managed.
-
-Create a resource group with [New-AzResourceGroup](/powershell/module/az.resources/new-azresourcegroup) named **test-rg** in the **eastus2** location.
-
-```azurepowershell-interactive
-$rg =@{
- Name = 'test-rg'
- Location = 'eastus2'
-}
-New-AzResourceGroup @rg
-```
-
-## Create a virtual network
-
-In this section, you create a virtual network and enable virtual network encryption.
-
-Use [New-AzVirtualNetwork](/powershell/module/az.network/new-azvirtualnetwork) and [New-AzVirtualNetworkSubnetConfig](/powershell/module/az.network/new-azvirtualnetworksubnetconfig) to create a virtual network.
-
-```azurepowershell-interactive
-## Create backend subnet config ##
-$subnet = @{
- Name = 'subnet-1'
- AddressPrefix = '10.0.0.0/24'
-}
-$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
-
-## Create the virtual network ##
-$net = @{
- Name = 'vnet-1'
- ResourceGroupName = 'test-rg'
- Location = 'eastus2'
- AddressPrefix = '10.0.0.0/16'
- Subnet = $subnetConfig
- EnableEncryption = 'true'
- EncryptionEnforcementPolicy = 'AllowUnencrypted'
-}
-New-AzVirtualNetwork @net
-
-```
-
-## Enable on existing virtual network
-
-You can also enable encryption on an existing virtual network using [Set-AzVirtualNetwork](/powershell/module/az.network/set-azvirtualnetwork).
-
-```azurepowershell-interactive
-## Place the virtual network configuration into a variable. ##
-$net = @{
- Name = 'vnet-1'
- ResourceGroupName = 'test-rg'
-}
-$vnet = Get-AzVirtualNetwork @net
-
-## Enable encryption on the virtual network ##
-$vnet.Encryption = @{
- Enabled = 'true'
- Enforcement = 'allowUnencrypted'
-}
-$vnet | Set-AzVirtualNetwork
-```
-
-> [!IMPORTANT]
-> Azure Virtual Network encryption requires supported virtual machine SKUs in the virtual network for traffic to be encrypted. For more information, see [Azure Virtual Network encryption requirements](virtual-network-encryption-overview.md#requirements).
-
-## Verify encryption enabled
-
-You can check the encryption parameter in the virtual network to verify that encryption is enabled on the virtual network.
-
-Use [Get-AzVirtualNetwork](/powershell/module/az.network/get-azvirtualnetwork) to view the encryption parameter for the virtual network you created previously.
-
-```azurepowershell-interactive
-## Place the virtual network configuration into a variable. ##
-$net = @{
- Name = 'vnet-1'
- ResourceGroupName = 'test-rg'
-}
-$vnet = Get-AzVirtualNetwork @net
-```
-
-To view the parameter for encryption, enter the following information.
-
-```azurepowershell-interactive
-$vnet.Encryption
-```
-
-```output
-Enabled Enforcement
-- --
-True allowUnencrypted
-```
-
-## Clean up resources
-
-When you're done with the virtual network, use [Remove-AzResourceGroup](/powershell/module/az.resources/remove-azresourcegroup) to remove the resource group and all its resources.
-
-```azurepowershell-interactive
-Remove-AzResourceGroup -Name 'test-rg' -Force
-```
-
-## Next steps
--- For more information about Azure Virtual Networks, see [What is Azure Virtual Network?](/azure/virtual-network/virtual-networks-overview).--- For more information about Azure Virtual Network encryption, see [What is Azure Virtual Network encryption?](virtual-network-encryption-overview.md).
virtual-network How To Create Encryption https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-network/how-to-create-encryption.md
+
+ Title: Create a virtual network with encryption - Azure portal
+
+description: Learn how to create an encrypted virtual network using the Azure portal. A virtual network lets Azure resources communicate with each other and with the internet.
+++ Last updated : 08/15/2024++++
+# Create a virtual network with encryption using the Azure portal
+
+Azure Virtual Network encryption is a feature of Azure Virtual Network. Virtual network encryption allows you to seamlessly encrypt and decrypt internal network traffic over the wire, with minimal effect to performance and scale. Azure Virtual Network encryption protects data traversing your virtual network virtual machine to virtual machine and virtual machine to on-premises.
+
+## Prerequisites
+
+### [Portal](#tab/portal)
+
+- An Azure account with an active subscription. [Create one for free](https://azure.microsoft.com/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio).
+
+### [PowerShell](#tab/powershell)
+
+- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+
+- Azure PowerShell installed locally or Azure Cloud Shell.
+
+- Sign in to Azure PowerShell and select the subscription with which you want to use this feature. For more information, see [Sign in with Azure PowerShell](/powershell/azure/authenticate-azureps).
+
+- Ensure your `Az.Network` module is 4.3.0 or later. To verify the installed module, use the command Get-InstalledModule -Name `Az.Network`. If the module requires an update, use the command Update-Module -Name `Az.Network` if necessary.
+
+If you choose to install and use PowerShell locally, this article requires the Azure PowerShell module version 5.4.1 or later. Run `Get-Module -ListAvailable Az` to find the installed version. If you need to upgrade, see [Install Azure PowerShell module](/powershell/azure/install-Az-ps). If you're running PowerShell locally, you also need to run `Connect-AzAccount` to create a connection with Azure.
+
+### [CLI](#tab/cli)
+
+- An Azure account with an active subscription. [Create one for free](https://azure.microsoft.com/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs&utm_campaign=visualstudio).
++
+- The how-to article requires version 2.31.0 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed.
+++
+### [Portal](#tab/portal)
++
+### [PowerShell](#tab/powershell)
+
+Create a resource group with [New-AzResourceGroup](/powershell/module/az.resources/new-azresourcegroup) named **test-rg** in the **eastus2** location.
+
+```azurepowershell-interactive
+$rg =@{
+ Name = 'test-rg'
+ Location = 'eastus2'
+}
+New-AzResourceGroup @rg
+```
+
+Use [New-AzVirtualNetwork](/powershell/module/az.network/new-azvirtualnetwork) and [New-AzVirtualNetworkSubnetConfig](/powershell/module/az.network/new-azvirtualnetworksubnetconfig) to create a virtual network.
+
+```azurepowershell-interactive
+## Create backend subnet config ##
+$subnet = @{
+ Name = 'subnet-1'
+ AddressPrefix = '10.0.0.0/24'
+}
+$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
+
+## Create the virtual network ##
+$net = @{
+ Name = 'vnet-1'
+ ResourceGroupName = 'test-rg'
+ Location = 'eastus2'
+ AddressPrefix = '10.0.0.0/16'
+ Subnet = $subnetConfig
+ EnableEncryption = 'true'
+ EncryptionEnforcementPolicy = 'AllowUnencrypted'
+}
+New-AzVirtualNetwork @net
+```
+
+### [CLI](#tab/cli)
+
+Create a resource group with [az group create](/cli/azure/group#az-group-create) named **test-rg** in the **eastus2** location.
+
+```azurecli-interactive
+ az group create \
+ --name test-rg \
+ --location eastus2
+```
+
+Use [az network vnet create](/cli/azure/network/vnet#az-network-vnet-create) to create a virtual network.
+
+```azurecli-interactive
+ az network vnet create \
+ --resource-group test-rg \
+ --location eastus2 \
+ --name vnet-1 \
+ --enable-encryption true \
+ --encryption-enforcement-policy allowUnencrypted \
+ --address-prefixes 10.0.0.0/16 \
+ --subnet-name subnet-1 \
+ --subnet-prefixes 10.0.0.0/24
+```
+++
+> [!IMPORTANT]
+> Azure Virtual Network encryption requires supported virtual machine SKUs in the virtual network for traffic to be encrypted. The setting **dropUnencrypted** will drop traffic between unsupported virtual machine SKUs if they are deployed in the virtual network. For more information, see [Azure Virtual Network encryption requirements](virtual-network-encryption-overview.md#requirements).
+
+## Enable encryption on a virtual network
+
+### [Portal](#tab/portal)
+
+Use the following steps to enable encryption for a virtual network.
+
+1. In the search box at the top of the portal, begin typing **Virtual networks**. When **Virtual networks** appears in the search results, select it.
+
+1. Select **vnet-1**.
+
+1. In the **Overview** of **vnet-1**, select the **Properties** tab.
+
+1. Select **Disabled** next to **Encryption**:
+
+ :::image type="content" source="./media/how-to-create-encryption-portal/virtual-network-properties.png" alt-text="Screenshot of properties of the virtual network.":::
+
+1. Select the box next to **Virtual network encryption**.
+
+1. Select **Save**.
+
+### [PowerShell](#tab/powershell)
+
+You can also enable encryption on an existing virtual network using [Set-AzVirtualNetwork](/powershell/module/az.network/set-azvirtualnetwork). **This step isn't necessary if you created the virtual network with encryption enabled in the previous steps.**
+
+```azurepowershell-interactive
+## Place the virtual network configuration into a variable. ##
+$net = @{
+ Name = 'vnet-1'
+ ResourceGroupName = 'test-rg'
+}
+$vnet = Get-AzVirtualNetwork @net
+
+## Enable encryption on the virtual network ##
+$vnet.Encryption = @{
+ Enabled = 'true'
+ Enforcement = 'allowUnencrypted'
+}
+$vnet | Set-AzVirtualNetwork
+```
+
+### [CLI](#tab/cli)
+
+You can also enable encryption on an existing virtual network using [az network vnet update](/cli/azure/network/vnet#az-network-vnet-update). **This step isn't necessary if you created the virtual network with encryption enabled in the previous steps.**
+
+```azurecli-interactive
+ az network vnet update \
+ --resource-group test-rg \
+ --name vnet-1 \
+ --enable-encryption true \
+ --encryption-enforcement-policy allowUnencrypted
+```
+++
+## Verify encryption enabled
+
+### [Portal](#tab/portal)
+
+1. In the search box at the top of the portal, begin typing **Virtual networks**. When **Virtual networks** appears in the search results, select it.
+
+1. Select **vnet-1**.
+
+1. In the **Overview** of **vnet-1**, select the **Properties** tab.
+
+1. Verify that **Encryption** is set to **Enabled**.
+
+ :::image type="content" source="./media/how-to-create-encryption-portal/virtual-network-properties-encryption-enabled.png" alt-text="Screenshot of properties of the virtual network with encryption enabled.":::
+
+### [PowerShell](#tab/powershell)
+
+Use [Get-AzVirtualNetwork](/powershell/module/az.network/get-azvirtualnetwork) to view the encryption parameter for the virtual network you created previously.
+
+```azurepowershell-interactive
+## Place the virtual network configuration into a variable. ##
+$net = @{
+ Name = 'vnet-1'
+ ResourceGroupName = 'test-rg'
+}
+$vnet = Get-AzVirtualNetwork @net
+```
+
+To view the parameter for encryption, enter the following information.
+
+```azurepowershell-interactive
+$vnet.Encryption
+```
+
+```output
+Enabled Enforcement
+- --
+True allowUnencrypted
+```
+
+### [CLI](#tab/cli)
+
+Use [az network vnet show](/cli/azure/network/vnet#az-network-vnet-show) to view the encryption parameter for the virtual network you created previously.
+
+```azurecli-interactive
+ az network vnet show \
+ --resource-group test-rg \
+ --name vnet-1 \
+ --query encryption \
+ --output tsv
+```
+
+```output
+user@Azure:~$ az network vnet show \
+ --resource-group test-rg \
+ --name vnet-1 \
+ --query encryption \
+ --output tsv
+True AllowUnencrypted
+```
+++
+### [Portal](#tab/portal)
++
+### [PowerShell](#tab/powershell)
+
+When no longer needed, you can use [Remove-AzResourceGroup](/powershell/module/az.resources/remove-azresourcegroup) to remove the resource group and all of the resources it contains:
+
+```azurepowershell-interactive
+$cleanup = @{
+ Name = "test-rg"
+}
+Remove-AzResourceGroup @cleanup -Force
+```
+
+### [CLI](#tab/cli)
+
+When you're done with the virtual network, use [az group delete](/cli/azure/group#az-group-delete) to remove the resource group and all its resources.
+
+```azurecli-interactive
+az group delete \
+ --name test-rg \
+ --yes
+```
+++
+## Next steps
+
+- For more information about Azure Virtual Networks, see [What is Azure Virtual Network?](/azure/virtual-network/virtual-networks-overview)
+
+- For more information about Azure Virtual Network encryption, see [What is Azure Virtual Network encryption?](virtual-network-encryption-overview.md)
virtual-wan Scenario Bgp Peering Hub https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-wan/scenario-bgp-peering-hub.md
The virtual hub router now also exposes the ability to peer with it, thereby exc
* When configuring BGP peering with the hub, you'll see two IP addresses. Peering with both these addresses is required. Not peering with both addresses can cause routing issues. The same routes must be advertised to both of these addresses. Advertising different routes will cause routing issues.
-* The next hop IP address on the routes being advertised from the NVA to the virtual HUB route server has to be the same as the IP address of the NVA, the IP address configured on the BGP peer. Having a different IP address advertised as next hop IS NOT supported on virtual WAN at the moment.
+* The next hop IP address on the routes being advertised from the NVA to the virtual HUB route server has to be the same as the IP address of the NVA, the IP address configured on the BGP peer. Having a different IP address advertised as next hop IS NOT supported for Virtual WAN at the moment.
## BGP peering scenarios This section describes scenarios where BGP peering feature can be utilized to configure routing.
vpn-gateway Azure Vpn Client Versions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/vpn-gateway/azure-vpn-client-versions.md
Previously updated : 06/13/2024 Last updated : 08/16/2024 # Azure VPN Client versions
This article helps you view each of the versions of the Azure VPN Client. As new
## Azure VPN Client - Windows
-| Version | New in this release |
-|||
-| 3.3.1.0 | - Microsoft-registered App ID Audience support for Microsoft Entra ID authentication <br> - TLS 1.3 support (requires TLS1.3 in Azure VPN Gateway) <br> - Better integrations with Feedback Hub (also valid for previous versions)<br> - Client stability improvements <br>- Minor bug fixes |
-| 3.2.0.0 | - Microsoft Entra authentication is now available from the settings page<br> - Accessibility Improvements<br>- Connection logs in UTCM<br>- Minor bug fixes |
## Azure VPN Client - Linux
-| Version | New in this release |
-|||
-| 3.3.0.0 | - New client for Linux<br> - Microsoft-registered App ID support for Microsoft Entra ID authentication|
## Azure VPN Client - macOS
-| Version | New in this release |
-|||
-| 2.5.3 | - Rebranding of Azure Active Directory to Microsoft Entra |
-| 2.5.0 | - Microsoft-registered App ID support for Microsoft Entra ID authentication Audience<br> - TLSv 1.3 support<br> - version rolled back |
-| 2.4.0 | - Multiple server root certificate feature |
+ ## Next steps
vpn-gateway Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/vpn-gateway/whats-new.md
description: Learn what's new with Azure VPN Gateway such as the latest release
Previously updated : 06/07/2024 Last updated : 08/16/2024
Azure VPN Gateway is updated regularly. Stay up to date with the latest announce
* Previews underway with known limitations (if applicable) * Known issues * Deprecated functionality (if applicable)
+* Azure VPN Client versions
You can also find the latest VPN Gateway updates and subscribe to the RSS feed [here](https://azure.microsoft.com/updates/?category=networking&query=azure%20vpn%20gateway).
You can also find the latest VPN Gateway updates and subscribe to the RSS feed [
| Type | Area | Name | Description | Date added | Limitations | |||||||
-| P2S VPN | P2S | [Azure VPN Client for Linux](azure-vpn-client-versions.md)| [Certificate](point-to-site-certificate-client-linux-azure-vpn-client.md) authentication, [Microsoft Entra ID ](point-to-site-entra-vpn-client-linux.md) authentication.| May 2024 | N/A|
-| P2S VPN | P2S | [Azure VPN Client for macOS](azure-vpn-client-versions.md) | Microsoft Entra ID authentication updates, additional features. | May 2024 | N/A|
-| P2S VPN | P2S | [Azure VPN Client for Windows](azure-vpn-client-versions.md) | Microsoft Entra ID authentication updates, additional features. | May 2024 | N/A|
+| P2S VPN | P2S | [Azure VPN Client for Linux](#linux)| [Certificate](point-to-site-certificate-client-linux-azure-vpn-client.md) authentication, [Microsoft Entra ID ](point-to-site-entra-vpn-client-linux.md) authentication.| May 2024 | N/A|
+| P2S VPN | P2S | [Azure VPN Client for macOS](#macos) | Microsoft Entra ID authentication updates, additional features. | May 2024 | N/A|
+| P2S VPN | P2S | [Azure VPN Client for Windows](#windows) | Microsoft Entra ID authentication updates, additional features. | May 2024 | N/A|
|SKU deprecation | N/A | [Standard/High performance VPN gateway SKU](vpn-gateway-about-skus-legacy.md#sku-deprecation) | Legacy SKUs (Standard and HighPerformance) will be deprecated on 30 Sep 2025. View the announcement [here](https://go.microsoft.com/fwlink/?linkid=2255127). | Nov 2023 | N/A | |Feature | All | [Customer-controlled gateway maintenance](customer-controlled-gateway-maintenance.md) |Customers can schedule maintenance (Guest OS and Service updates) during a time of the day that best suits their business needs. | Nov 2023 (Public preview)| See the [FAQ](vpn-gateway-vpn-faq.md#customer-controlled). | Feature | All | [APIPA for VPN Gateway (General availability)](bgp-howto.md#2-create-testvnet1-gateway-with-bgp) | All SKUs of active-active VPN gateways now support multiple custom BGP APIPA addresses for each instance. | Jan 2022 | N/A |
-|P2S VPN| P2S| Feedback Hub support for Azure VPN Client connections | Customers can use Feedback Hub to file a bug/allow feedback triage for Azure VPN Client connections. | May 2024| Windows 11 only|
+|P2S VPN| P2S| [Feedback Hub support for Azure VPN Client connections](feedback-hub-azure-vpn-client.md) | Customers can use Feedback Hub to file a bug/allow feedback triage for Azure VPN Client connections. | May 2024| Windows 10, Windows 11 only|
+
+### <a name="windows"></a>Azure VPN Client - Windows
++
+### <a name="linux"></a>Azure VPN Client - Linux
++
+### <a name="macos"></a>Azure VPN Client - macOS
+ ## Next steps