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-16Lines changed: 18 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ This indexer connection method is subject to the following two requirements:
19
19
20
20
+ The Azure resource that provides content or code must be previously registered with the [Azure Private Link service](https://azure.microsoft.com/services/private-link/).
21
21
22
-
+ The Azure Cognitive Search service must be on the Basic tier or higher (not available on the Free tier). Additionally, if your indexer has a skillset, the tier must be Standard 2 (S2) or higher. For more information, see [Service limits](search-limits-quotas-capacity.md#shared-private-link-resource-limits).
22
+
+ The Azure Cognitive Search service must be on the Basic tier or higher. The service isn't available on the Free tier. Additionally, if your indexer has a skillset, the tier must be Standard 2 (S2) or higher. For more information, see [Service limits](search-limits-quotas-capacity.md#shared-private-link-resource-limits).
23
23
24
24
## Shared Private Link Resources Management APIs
25
25
@@ -29,7 +29,7 @@ Through its Management REST API, Azure Cognitive Search provides a [CreateOrUpda
29
29
30
30
You can create private endpoint connections to some resources only by using the preview version of the Search Management API (version *2020-08-01-preview* or later), which is designated *preview* in the following table. Resources without a *preview* designation can be created with either the preview or generally available API version (*2020-08-01* or later).
31
31
32
-
The following table lists Azure resources in which you can create outbound private endpoints from Azure Cognitive Search. The **Group ID** values must be used exactly as written (case-sensitive) in the API to create a shared private link resource.
32
+
The following table lists Azure resources for which you can create outbound private endpoints from Azure Cognitive Search. To create a shared private link resource, enter the **Group ID** values exactly as they're written in the API. The values are case-sensitive.
33
33
34
34
| Azure resource | Group ID |
35
35
| --- | --- |
@@ -46,15 +46,15 @@ You can also query the Azure resources for which outbound private endpoint conne
46
46
In the remainder of this article, a mix of [ARMClient](https://github.com/projectkudu/ARMClient) and [Postman](https://www.postman.com/) APIs is used to demonstrate the REST API calls.
47
47
48
48
> [!NOTE]
49
-
> Throughout this article, you can assume the following:
49
+
> The examples in this article are based on the following assumptions:
50
50
> * The name of the search service is _contoso-search_, which exists in the _contoso_ resource group of a subscription with subscription ID _00000000-0000-0000-0000-000000000000_.
51
51
> * The resource ID of this search service is _/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search_.
52
52
53
53
The rest of the examples show how the _contoso-search_ service can be configured so that its indexers can access data from the secure storage account _/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage_.
54
54
55
55
## Secure your storage account
56
56
57
-
Configure the storage account to [allow access only from specific subnets](../storage/common/storage-network-security.md#grant-access-from-a-virtual-network). In the Azure portal, if you select this option and leave the set empty, it means that no traffic from any virtual network is allowed.
57
+
Configure the storage account to [allow access only from specific subnets](../storage/common/storage-network-security.md#grant-access-from-a-virtual-network). In the Azure portal, if you select this option and leave the set empty, it means that no traffic from virtual networks is allowed.
58
58
59
59

60
60
@@ -65,9 +65,11 @@ Configure the storage account to [allow access only from specific subnets](../st
65
65
66
66
### Step 1: Create a shared private link resource to the storage account
67
67
68
-
Make the following API call to request Azure Cognitive Search to create an outbound private endpoint connection to the storage account: `armclient PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2020-08-01 create-pe.json`.
68
+
To request Azure Cognitive Search to create an outbound private endpoint connection to the storage account, make the following API call:
69
69
70
-
The contents of the *create-pe.json* file, which represents the request body to the API, are as follows:
70
+
`armclient PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2020-08-01 create-pe.json`
71
+
72
+
The contents of the *create-pe.json* file, which represent the request body to the API, are as follows:
71
73
72
74
```json
73
75
{
@@ -92,7 +94,7 @@ As in all asynchronous Azure operations, the `PUT` call returns an `Azure-AsyncO
You can poll this URI periodically to obtain the status of the operation. Before you proceed, we recommend that you wait until the status of the shared private link resource operation has reached a terminal state (that is, *succeeded*).
97
+
You can poll this URI periodically to obtain the status of the operation. Before you proceed, we recommend that you wait until the status of the shared private link resource operation has reached a terminal state (that is, the operation's status is *succeeded*).
96
98
97
99
`armclient GET 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"`
98
100
@@ -105,29 +107,29 @@ You can poll this URI periodically to obtain the status of the operation. Before
105
107
### Step 2a: Approve the private endpoint connection for the storage account
106
108
107
109
> [!NOTE]
108
-
> In this section, you use the Azure portal to walk through the approval flow for a private endpoint to storage. Alternately, you could use the [REST API](/rest/api/storagerp/privateendpointconnections) that's available via storage resource provider.
110
+
> In this section, you use the Azure portal to walk through the approval flow for a private endpoint to storage. Alternately, you could use the [REST API](/rest/api/storagerp/privateendpointconnections) that's available via the storage resource provider.
109
111
>
110
112
> Other providers, such as Azure Cosmos DB or Azure SQL Server, offer similar storage resource provider APIs for managing private endpoint connections.
111
113
112
114
1. In the Azure portal, select the **Private endpoint connections** tab of your storage account. After the asynchronous operation has succeeded, there should be a request for a private endpoint connection with the request message from the previous API call.
113
115
114
116

115
117
116
-
1. Select the private endpoint that was created by Azure Cognitive Search. In the **Private endpoint** column, identify the private endpoint connection by the name that's specified in the previous API, select **Approve**, and then enter an appropriate message. The message content isn't significant.
118
+
1. Select the private endpoint that Azure Cognitive Search created. In the **Private endpoint** column, identify the private endpoint connection by the name that's specified in the previous API, select **Approve**, and then enter an appropriate message. The message content isn't significant.
117
119
118
120
Make sure that the private endpoint connection appears as shown in the following screenshot. It could take one to two minutes for the status to be updated in the portal.
119
121
120
122

121
123
122
-
After the private endpoint connection request is approved, it means that traffic is *capable* of flowing through the private endpoint. After the private endpoint is approved, Azure Cognitive Search creates the necessary DNS zone mappings in the DNS zone that's created for it.
124
+
After the private endpoint connection request is approved, traffic is *capable* of flowing through the private endpoint. After the private endpoint is approved, Azure Cognitive Search creates the necessary DNS zone mappings in the DNS zone that's created for it.
123
125
124
126
### Step 2b: Query the status of the shared private link resource
125
127
126
128
To confirm that the shared private link resource has been updated after approval, obtain its status by using the [GET API](/rest/api/searchmanagement/sharedprivatelinkresources/get).
127
129
128
130
`armclient GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2020-08-01`
129
131
130
-
If the `properties.provisioningState` of the resource is `Succeeded` and `properties.status` is `Approved`, it means that the shared private link resource is functional and indexers can be configured to communicate over the private endpoint.
132
+
If the `properties.provisioningState` of the resource is `Succeeded` and `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.
131
133
132
134
```json
133
135
{
@@ -144,10 +146,10 @@ If the `properties.provisioningState` of the resource is `Succeeded` and `proper
144
146
145
147
```
146
148
147
-
### Step 3: Configure indexer to run in the private environment
149
+
### Step 3: Configure the indexer to run in the private environment
148
150
149
151
> [!NOTE]
150
-
> You can perform this step even before the private endpoint connection is approved. Until the private endpoint connection is approved, any indexer that tries to communicate with a secure resource (such as the storage account) will end up in a transient failure state. New indexers will fail to be created. As soon as the private endpoint connection is approved, indexers can access the private storage account.
152
+
> You can perform this step before the private endpoint connection is approved. Until the private endpoint connection is approved, any indexer that tries to communicate with a secure resource (such as the storage account) will end up in a transient failure state. New indexers will fail to be created. As soon as the private endpoint connection is approved, indexers can access the private storage account.
151
153
152
154
1.[Create a data source](/rest/api/searchservice/create-data-source) that points to the secure storage account and an appropriate container within the storage account. The following screenshot shows this request in Postman.
153
155
@@ -166,8 +168,8 @@ If the `properties.provisioningState` of the resource is `Succeeded` and `proper
166
168
167
169
## Troubleshooting
168
170
169
-
-When you're creating an indexer, if the creation fails with an error message like "Data source credentials are invalid," it means that either the status of the private endpoint connection is not yet *Approved* or the connection is not functional. To remedy the issue:
170
-
* Obtain the status of the shared private link resource by using the [GET API](/rest/api/searchmanagement/sharedprivatelinkresources/get). If the status is *Approved*, check the `properties.provisioningState` of the resource. If the status here is `Incomplete`, this means that some of the underlying dependencies for the resource failed to be set up. Reissuing the `PUT` request to *re-create* the shared private link resource should fix the issue. A re-approval might be necessary. Check the status of the resource once again to verify.
171
+
-If your indexercreation fails with an error message such as "Data source credentials are invalid," it means that either the status of the private endpoint connection is not yet *Approved* or the connection is not functional. To remedy the issue:
172
+
* Obtain the status of the shared private link resource by using the [GET API](/rest/api/searchmanagement/sharedprivatelinkresources/get). If the status is *Approved*, check the `properties.provisioningState` of the resource. If the status here is `Incomplete`, this means that some of the underlying dependencies for the resource failed to be set up. Reissuing the `PUT` request to re-create the shared private link resource should fix the issue. A reapproval might be necessary. Re-check the status of the resource to verify that the issue is fixed.
171
173
172
174
- If you create the indexer without setting its `executionEnvironment` property, the creation might succeed, but its execution history will show that the indexer runs are unsuccessful. To remedy the issue:
173
175
*[Update the indexer](/rest/api/searchservice/update-indexer) to specify the execution environment.
@@ -182,4 +184,4 @@ If the `properties.provisioningState` of the resource is `Succeeded` and `proper
182
184
Learn more about private endpoints:
183
185
184
186
-[What are private endpoints?](../private-link/private-endpoint-overview.md)
185
-
-[DNS configurations needed for private endpoints](../private-link/private-endpoint-dns.md)
187
+
-[DNS configurations needed for private endpoints](../private-link/private-endpoint-dns.md)
0 commit comments