Gestire il servizio Azure AI Search con API REST
In questo articolo viene illustrato come creare e configurare un servizio Azure AI Search tramite le API REST di Gestione. Solo le API REST di Gestione garantiscono l'accesso anticipato alle funzionalità di anteprima.
L'API REST di Gestione è disponibile nelle versioni stabile e di anteprima. Se si accede a funzionalità di anteprima, assicurarsi di impostare una versione API di anteprima.
- Creare o aggiornare un servizio
- Abilitare il controllo degli accessi in base al ruolo di Azure per il piano dati
- Applicare un criterio della chiave gestita dal cliente
- Disabilitare il classificatore semantico
- Disabilitare i carichi di lavoro che eseguono il push dei dati alla risorse esterne
- Creare anche una chiave di query
- Rigenerare una chiave amministratore
- Elencare le connessioni all’endpoint privato
- Elencare le operazioni di ricerca
- Eliminare un servizio di ricerca
Tutte le API REST di Gestione dispongono di esempi. Se un'attività non viene trattata in questo articolo, vedere la documentazione di riferimento dell'API.
Prerequisiti
Una sottoscrizione di Azure: crearne una gratuitamente.
Visual Studio Code con un client REST.
L’interfaccia della riga di comando di Azureviene usata per ottenere un token di accesso. Per farlo, si deve essere proprietari o amministratori della sottoscrizione di Azure.
Ottenere un token di accesso
Le chiamate API REST di gestione vengono autenticate tramite Microsoft Entra ID. Nella richiesta, è necessario fornire un token di accesso, insieme alle autorizzazioni per creare e configurare una risorsa.
È possibile usare l’interfaccia della riga di comando di Azure o Azure PowerShell per creare un token di accesso.
Aprire una shell di comando per l’interfaccia della riga di comando di Azure.
Accedere alla sottoscrizione di Azure.
az login
Ottenere l'ID tenant e l'ID sottoscrizione. Se si dispone di più tenant o sottoscrizioni, assicurarsi di usare quella corretta.
az account show
Ottenere un token di accesso.
az account get-access-token --query accessToken --output tsv
È necessario disporre di un ID tenant, di un ID sottoscrizione e di un token di connessione. Questi valori dovranno essere incollati nel file .rest
o .http
che si creerà nel passaggio successivo.
Configurare Visual Studio Code
Se non si ha familiarità con il client REST per Visual Studio Code, questa sezione include la configurazione in modo da poter completare le attività in questa guida introduttiva.
Avviare Visual Studio Code e selezionare il riquadro Estensioni.
Cercare il client REST e selezionare Installa.
Aprire o creare un nuovo file denominato con un'estensione del file
.rest
o.http
.Fornire le variabili per i valori recuperati nel passaggio precedente.
@tenantId = PASTE-YOUR-TENANT-ID-HERE @subscriptionId = PASTE-YOUR-SUBSCRIPTION-ID-HERE @token = PASTE-YOUR-TOKEN-HERE
Verificare che la sessione sia operativa elencando i servizi di ricerca presenti nella sottoscrizione.
### List search services GET https://management.azure.com/subscriptions/{{subscriptionId}}/providers/Microsoft.Search/searchServices?api-version=2023-11-01 Content-type: application/json Authorization: Bearer {{token}}
Selezionare Invia richiesta. Una risposta dovrebbe essere visualizzata in un riquadro adiacente. Se sono presenti servizi di ricerca esistenti, vengono elencati. In caso contrario, l'elenco risulta vuoto, ma se il codice HTTP è 200 OK, si è pronti per i passaggi successivi.
HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Length: 22068 Content-Type: application/json; charset=utf-8 Expires: -1 x-ms-ratelimit-remaining-subscription-reads: 11999 x-ms-request-id: f47d3562-a409-49d2-b9cd-6a108e07304c x-ms-correlation-request-id: f47d3562-a409-49d2-b9cd-6a108e07304c x-ms-routing-request-id: WESTUS2:20240314T012052Z:f47d3562-a409-49d2-b9cd-6a108e07304c Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff X-Cache: CONFIG_NOCACHE X-MSEdge-Ref: Ref A: 12401F1160FE4A3A8BB54D99D1FDEE4E Ref B: CO6AA3150217011 Ref C: 2024-03-14T01:20:52Z Date: Thu, 14 Mar 2024 01:20:52 GMT Connection: close { "value": [ . . . ] }
Creare o aggiornare un servizio
Crea o aggiorna un servizio di ricerca nell'ambito della sottoscrizione corrente. In questo esempio vengono usate le variabili per il nome del servizio di ricerca e l'area geografica, che non sono ancora state definite. Fornire direttamente i nomi, oppure aggiungere nuove variabili alla raccolta.
### Create a search service (provide an existing resource group)
@resource-group = my-rg
@search-service-name = my-search
PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"location": "North Central US",
"sku": {
"name": "basic"
},
"properties": {
"replicaCount": 1,
"partitionCount": 1,
"hostingMode": "default"
}
}
Creare un servizio S3HD
Per creare un servizio S3HD usare una combinazione delle proprietà sku
e hostingMode
. Impostare sku
su standard3
e "hostingMode" su HighDensity
.
@resource-group = my-rg
@search-service-name = my-search
PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"location": "{{region}}",
"sku": {
"name": "standard3"
},
"properties": {
"replicaCount": 1,
"partitionCount": 1,
"hostingMode": "HighDensity"
}
}
Configurare il controllo degli accessi in base al ruolo per il piano dati
Si applica a: Collaboratore ai dati dell'indice di ricerca, Lettore di dati dell'indice di ricerca, Collaboratore Servizio di ricerca
In questo passaggio configurare il servizio di ricerca in modo da riconoscere un'intestazione dell'autorizzazione nelle richieste di dati che forniscono un token di accesso OAuth2.
Per usare il controllo degli accessi in base al ruolo per le operazioni del piano dati, impostare authOptions
su aadOrApiKey
e quindi inviare la richiesta.
Per usare esclusivamente il controllo degli accessi in base al ruolo, disattivare l'autenticazione della chiave API eseguendo una seconda richiesta, questa volta impostando disableLocalAuth
su true.
PATCH https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"properties": {
"disableLocalAuth": false,
"authOptions": {
"aadOrApiKey": {
"aadAuthFailureMode": "http401WithBearerChallenge"
}
}
}
}
Applicare un criterio della chiave gestita dal cliente
Se si usa la crittografia gestita dal cliente, è possibile abilitare "encryptionWithCMK" con "tutela" impostato su "Abilitato", se si vuole che il servizio di ricerca riporti il relativo stato di conformità.
Quando si abilita questo criterio, qualsiasi chiamata REST che crea oggetti contenenti dati sensibili, ad esempio la stringa di connessione all'interno di un'origine dati, non riuscirà se non viene fornita una chiave di crittografia: "Error creating Data Source: "CannotCreateNonEncryptedResource: The creation of non-encrypted DataSources is not allowed when encryption policy is enforced."
PATCH https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"properties": {
"encryptionWithCmk": {
"enforcement": "Enabled"
}
}
}
Disabilitare il classificatore semantico
Sebbene il classificatore semantico non sia abilitato per impostazione predefinita, è possibile bloccare la funzionalità a livello di servizio per assicurarsi che non venga utilizzato.
### disable semantic ranker
PATCH https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"properties": {
"semanticSearch": "Disabled"
}
}
Disabilitare i carichi di lavoro che eseguono il push dei dati alla risorse esterne
Azure AI Search scrive in origini dati esterne durante l'aggiornamento di un archivio conoscenze, il salvataggio dello stato della sessione di debug o la memorizzazione nella cache degli arricchimenti. Nell’esempio seguente vengono disabilitati questi carichi di lavoro a livello di servizio.
### disable-external-access
PATCH https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
{
"properties": {
"publicNetworkAccess": "Disabled"
}
}
Eliminare un servizio di ricerca
### delete a search service
DELETE https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
Elencare le chiave API di amministrazione
### List admin keys
POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/listAdminKeys?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
Rigenerare le chiavi API di amministrazione
È possibile rigenerare solo una chiave API di amministrazione alla volta.
### Regnerate admin keys
POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/regenerateAdminKey/primary?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
Creare chiavi API di query
### Create a query key
@query-key-name = myQueryKey
POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/createQueryKey/{name}?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
Elencare le connessioni all’endpoint privato
### List private endpoint connections
GET https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/privateEndpointConnections?api-version=2023-11-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
Elencare le operazioni di ricerca
### List search operations
GET https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups?api-version=2021-04-01 HTTP/1.1
Content-type: application/json
Authorization: Bearer {{token}}
Passaggi successivi
Dopo aver configurato un servizio di ricerca, i passaggi successivi includono la creazione di un indice o l'esecuzione di una query su un indice tramite il portale, le API REST o un SDK di Azure.