You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/search/search-indexer-howto-access-private.md
+18-35Lines changed: 18 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,9 +14,9 @@ ms.date: 02/14/2023
14
14
15
15
# Make outbound connections through a private endpoint
16
16
17
-
If you have an Azure PaaS resource that has a private connection enabled through [Azure Private Link](azure/private-link/private-link-overview), you'll need to create a *shared private link* to reach those resources from Azure Cognitive Search. This article walks you through the steps for creating, testing, and managing a private link.
17
+
If you have an Azure PaaS resource that has a private connection enabled through [Azure Private Link](/azure/private-link/private-link-overview), you'll need to create a *shared private link* to reach those resources from Azure Cognitive Search. This article walks you through the steps for creating, testing, and managing a private link.
18
18
19
-
## Concepts and terms
19
+
## When to use a shared private link
20
20
21
21
Cognitive Search makes outbound requests to other Azure PaaS resources in the following scenarios:
22
22
@@ -31,7 +31,7 @@ A shared private link is:
31
31
32
32
+ Created by your search service
33
33
+ Approved by the Azure PaaS resource owner
34
-
+ Used internally on a connection in one of the previously listed scenarios
34
+
+ Used internally on a connection to a specific Azure resource
35
35
36
36
Only your search service can use the private links that it creates.
37
37
@@ -40,9 +40,17 @@ Once you set up the private link, it's used automatically whenever search connec
40
40
> [!NOTE]
41
41
> There are two scenarios for using Azure Private Link and Azure Cognitive Search together. Creating a shared private link is one scenario, relevant when an *outbound* connection to Azure PaaS requires a private connection. The second scenario is configuring search for a private *inbound* connection from clients that run run in a virtual network. While both scenarios have a dependency on Azure Private Link, they are independent. You can create a shared private link without having to configure your own search service for a private endpoint.
42
42
43
+
### Limitations
44
+
45
+
+ You can't use Azure portal tools such as **Import data** or **Debug sessions** for private outbound connections to Azure PaaS resources.
46
+
47
+
+ Several of the resource types used in a shared private link are in preview. If you're connecting to a preview resource (Azure Database for MySQL, Azure Functions, or Azure SQL Managed Instance), use a preview version of the Management REST API to create the shared private link. These versions include `2020-08-01-preview` or `2021-04-01-preview`.
48
+
49
+
+ Indexer execution must use the private execution environment that's specific to your search service. Private endpoint connections aren't supported from the multi-tenant environment. The configuration setting for this requirement is covered in this article.
50
+
43
51
## Prerequisites
44
52
45
-
+ An Azure Cognitive Search at the Basic tier or above. If you're using [AI enrichment](cognitive-search-concept-intro.md) and skillsets, the tier must be Standard 2 (S2) or higher. See [Service limits](search-limits-quotas-capacity.md#shared-private-link-resource-limits) for details.
53
+
+ An Azure Cognitive Search at the Basic tier or higher. If you're using [AI enrichment](cognitive-search-concept-intro.md) and skillsets, the tier must be Standard 2 (S2) or higher. See [Service limits](search-limits-quotas-capacity.md#shared-private-link-resource-limits) for details.
46
54
47
55
+ An Azure PaaS resource from the list of supported resource types, configured to run in a virtual network, with a private endpoint created through Azure Private Link.
48
56
@@ -68,7 +76,7 @@ You can create a shared private link for the following resources.
68
76
69
77
<sup>3</sup> The `Microsoft.Web/sites` resource type is used for App service and Azure functions. In the context of Azure Cognitive Search, an Azure function is the more likely scenario. An Azure function is commonly used for hosting the logic of a custom skill. Azure Function has Consumption, Premium and Dedicated [App Service hosting plans](../app-service/overview-hosting-plans.md). The [App Service Environment (ASE)](../app-service/environment/overview.md) and [Azure Kubernetes Service (AKS)](../aks/intro-kubernetes.md) aren't supported at this time.
70
78
71
-
<sup>4</sup> Although `Microsoft.Sql/managedInstances` is listed in the search **Networking** portal page, creating a shared private link to Azure SQL Managed Instance (preview) requires using the Azure CLI. The portal doesn't currently construct a valid fully qualified domain name for SQL Managed instances. Instructions for meeting this requirement can be found in this article, in the Azure CLI section for creating a shared private link.
79
+
<sup>4</sup> Although `Microsoft.Sql/managedInstances` is listed in the search **Networking** portal page, creating a shared private link to Azure SQL Managed Instance (preview) requires using the REST API, Azure PowerShell, or the Azure CLI. The portal doesn't currently construct a valid fully qualified domain name for SQL Managed instances. Instructions for configuring a shared private link to a SQL Managed instance can be found in the Azure CLI section for [creating a shared private link](#1---create-a-shared-private-link).
72
80
73
81
### Private endpoint verification
74
82
@@ -86,14 +94,6 @@ These Private Link tutorials provide steps for creating a private endpoint for A
86
94
87
95
+[Tutorial: Connect to a web app using an Azure Private Endpoint](/azure/private-link/tutorial-private-endpoint-webapp-portal)
88
96
89
-
### Limitations
90
-
91
-
+ You can't use Azure portal tools such as **Import data** or **Debug sessions** for private outbound connections to Azure PaaS resources.
92
-
93
-
+ Several of the resource types used in a shared private link are in preview. If you're connecting to a preview resource (Azure Database for MySQL, Azure Functions, or Azure SQL Managed Instance), use a preview version of the Management REST API to create the shared private link. These versions include `2020-08-01-preview` or `2021-04-01-preview`.
94
-
95
-
+ Indexer execution must use the private execution environment that's specific to your search service. Private endpoint connections aren't supported from the multi-tenant environment. The configuration setting for this requirement is covered in this article.
96
-
97
97
## 1 - Create a shared private link
98
98
99
99
Use the Azure portal, Management REST API, the Azure CLI, or Azure PowerShell to create a shared private link.
Remember to use the preview API version, either 2020-08-01-preview or 2021-04-01-preview, if you're using a group ID that's in preview. The following resource types are in preview and require the preview API: `managedInstance`, `mySqlServer`, `sites`.
181
+
Remember to use the preview API version, either `2020-08-01-preview` or `2021-04-01-preview`, if you're using a group ID that's in preview. The following resource types are in preview and require a preview API: `managedInstance`, `mySqlServer`, `sites`.
182
182
183
183
1. Formulate the request.
184
184
185
-
```dotnetcli
185
+
```azurecli
186
186
az rest --method put --uri https://management.azure.com/subscriptions/<search service subscription ID>/resourceGroups/<search service resource group name>/providers/Microsoft.Search/searchServices/<search service name>/sharedPrivateLinkResources/<shared private endpoint name>?api-version=2020-08-01 --body @create-pe.json
187
187
```
188
188
@@ -207,6 +207,7 @@ You can poll for the status by manually querying the `Azure-AsyncOperationHeader
207
207
208
208
```dotnetcli
209
209
az rest --method get --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe/operationStatuses/08586060559526078782?api-version=2020-08-01
210
+
```
210
211
211
212
A `202 Accepted` response is returned on success. The process of creating an outbound private endpoint is a long-running (asynchronous) operation. It involves deploying the following resources:
212
213
@@ -234,23 +235,6 @@ When you're creating a shared private link to SQL Managed Instance, the `resourc
234
235
235
236
---
236
237
237
-
<aname="check-endpoint-status"></a>
238
-
239
-
## 2 - Check the status of the private endpoint creation
240
-
241
-
In this step, confirm that the provisioning state of the resource changes from "Updating" to "Succeeded".
242
-
243
-
### [**Azure portal**](#tab/portal-status)
244
-
245
-
246
-
247
-
### [**Azure CLI**](#tab/cli-status)
248
-
249
-
250
-
```
251
-
252
-
---
253
-
254
238
## 2 - Approve the private endpoint connection
255
239
256
240
The resource owner must approve the connection request. This section assumes the portal for this step, but you can also use the REST APIs of the Azure PaaS resource. [Private Endpoint Connections (Storage Resource Provider)](/rest/api/storagerp/privateendpointconnections) and [Private Endpoint Connections (Cosmos DB Resource Provider)](/rest/api/cosmos-db-resource-provider/2022-05-15/private-endpoint-connections) are two examples.
@@ -293,7 +277,6 @@ This would return a JSON, where the connection state shows up as "status" under
293
277
"provisioningState": "Succeeded"
294
278
}
295
279
}
296
-
297
280
```
298
281
299
282
If the provisioning state (`properties.provisioningState`) of the resource is "Succeeded" and connection state(`properties.status`) is "Approved", it means that the shared private link resource is functional and the indexer can be configured to communicate over the private endpoint.
@@ -302,7 +285,7 @@ If the provisioning state (`properties.provisioningState`) of the resource is "S
302
285
303
286
[Indexer execution](search-indexer-securing-resources.md#indexer-execution-environment) occurs in either a private environment that's specific to the search service, or a multi-tenant environment that's used internally to offload expensive skillset processing for multiple customers.
304
287
305
-
The execution environment is usually transparent, but once you start building firewall rules or establishing private connections, you'll have to take indexer execution into account. For a private connection, you'll need to ensure that indexer execution always occurs in the private environment.
288
+
The execution environment is usually transparent, but once you start building firewall rules or establishing private connections, you have to take indexer execution into account. For a private connection, configure indexer execution to always run in the private environment.
306
289
307
290
This step shows you how to configure the indexer to run in the private environment using the REST API. You can also set the execution environment using the JSON editor in the portal.
308
291
@@ -377,7 +360,7 @@ After the indexer is created successfully, it should connect to the Azure resour
377
360
378
361
+ If your indexer creation fails with "Data source credentials are invalid," check the approval status of the shared private link before debugging the connection. If the status is `Approved`, check the `properties.provisioningState` property. If it's `Incomplete`, there might be a problem with underlying dependencies. In this case, reissue the `PUT` request to re-create the shared private link. You might also need to repeat the approval step.
379
362
380
-
+ If indexers fail consistently or intermittently, check the [`executionEnvironment` property](/rest/api/searchservice/update-indexer) on the indexer. The value should be set to `private`. If you didn't set this property, and indexer runs succeeded in the past, it's because the search service used a private environment of its own accord. A search service will move processing out of the standard environment if the system is under load.
363
+
+ If indexers fail consistently or intermittently, check the [`executionEnvironment` property](/rest/api/searchservice/update-indexer) on the indexer. The value should be set to `private`. If you didn't set this property, and indexer runs succeeded in the past, it's because the search service used a private environment of its own accord. A search service moves processing out of the standard environment if the system is under load.
381
364
382
365
+ If you get an error when creating a shared private link, check [service limits](search-limits-quotas-capacity.md) to verify that you're under the quota for your tier.
0 commit comments