Comparteix a través de


Creación de un vínculo privado compartido para Azure SQL Managed Instance desde Azure AI Search

En este artículo se explica cómo configurar un indexador en Azure AI Search para una conexión privada a una instancia de Azure SQL Managed Instance que se ejecuta dentro de una red virtual. La conexión privada se realiza a través de un vínculo privado compartido y Azure Private Link.

En una conexión privada a una instancia administrada, el nombre de dominio completo (FQDN) de la instancia debe incluir la zona DNS. Actualmente, solo la API REST de administración de Azure AI Search proporciona un parámetro resourceRegion para aceptar la especificación de zona DNS.

Aunque puede llamar directamente a la API REST de administración, es más fácil usar el módulo az rest de la CLI de Azure para enviar llamadas a la API REST de administración desde una línea de comandos. En este artículo se usa la CLI de Azure con REST para configurar el vínculo privado.

Nota:

En este artículo se hace referencia a Azure Portal para obtener propiedades y confirmar los pasos. Sin embargo, al crear el vínculo privado compartido para SQL Managed Instance, asegúrese de que usa la API REST. Aunque la pestaña Redes muestra Microsoft.Sql/managedInstances como una opción, el portal no admite actualmente el formato de dirección URL extendido usado por SQL Managed Instance.

Requisitos previos

  • CLI de Azure

  • Azure AI Search, Básico o superior. Si usa conjuntos de aptitudes y enriquecimiento con inteligencia artificial, utilice Estándar 2 (S2) o superior. Consulte Límites de servicio para más información.

  • Azure SQL Managed Instance, configurada para ejecutarse en una red virtual.

  • Debe tener un mínimo de permisos de colaborador en Azure AI Search y en SQL Managed Instance.

  • Cadena de conexión de Azure SQL Managed Instance. La identidad administrada no se admite actualmente con un vínculo privado compartido. La cadena de conexión debe incluir un nombre de usuario y una contraseña.

Nota:

Los vínculos privados compartidos son facturables a través de los precios de Azure Private Link y los cargos se facturan en función del uso.

1. Recuperación de información de conexión

Recupere el FQDN de la instancia administrada, incluida la zona DNS. La zona DNS forma parte del nombre de dominio de SQL Managed Instance. Por ejemplo, si el FQDN de SQL Managed Instance es my-sql-managed-instance.00000000000.database.windows.net, la zona DNS es 00000000000.

  1. En Azure Portal, busque el objeto de SQL Managed Instance.

  2. En la pestaña Información general, busque la propiedad Host. Copie la parte de la zona DNS del FQDN para el paso siguiente.

  3. En la pestaña Cadenas de conexión, copie la cadena de conexión ADO.NET para un paso posterior. Es necesario para la conexión del origen de datos al probar la conexión privada.

Para más información sobre las propiedades de conexión, consulte Creación de una instancia de Azure SQL Managed Instance.

2. Establecimiento del cuerpo de la solicitud

  1. Con un editor de texto, cree el JSON para el vínculo privado compartido.

    {
        "name": "{{shared-private-link-name}}",
        "properties": {
            "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}",
            "resourceRegion": "a1b22c333d44",
            "groupId": "managedInstance",
            "requestMessage": "please approve",
        }
    }
    
  2. Proporcione un nombre descriptivo para el vínculo privado compartido. El vínculo privado compartido aparece junto con otros puntos de conexión privados. Un nombre como "shared-private-link-for-search" puede recordarle cómo se usa.

  3. Pegue el nombre de la zona DNS en "resourceRegion" que recuperó en un paso anterior.

  4. Edite "privateLinkResourceId" para reflejar el punto de conexión privado de la instancia administrada. Proporcione el identificador de suscripción, el nombre del grupo de recursos y el nombre del objeto de la instancia administrada.

  5. Guarde el archivo localmente como create-pe.json (o use otro nombre, recuerde actualizar la sintaxis de la CLI de Azure en el paso siguiente).

  6. En la CLI de Azure, escriba dir para anotar la ubicación actual del archivo.

  1. Desde la línea de comandos, inicie sesión en Azure con az login.

  2. Asegúrese de que está usando la suscripción correcta si tiene varias: az account show.

    Para establecer la suscripción, use az account set --subscription {{subscription ID}}

  3. Llame al comando az rest para usar la API REST de administración de Azure AI Search.

    Dado que la compatibilidad de vínculo privado compartido con instancias de SQL Managed Instance todavía está en versión preliminar, necesita una versión preliminar de la API REST. Use 2021-04-01-preview o una versión preliminar posterior de la API para este paso. Se recomienda usar la versión preliminar más reciente de la API.

    az rest --method put --uri https://management.azure.com/subscriptions/{{search-service-subscription-ID}}/resourceGroups/{{search service-resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/sharedPrivateLinkResources/{{shared-private-link-name}}?api-version=2024-06-01-preview --body @create-pe.json
    

    Proporcione el identificador de suscripción, el nombre del grupo de recursos y el nombre del servicio del recurso de Azure AI Search.

    Proporcione el mismo nombre de vínculo privado compartido que especificó en el cuerpo JSON.

    Proporcione una ruta de acceso al archivo create-pe.json si ha navegado fuera de la ubicación del archivo. Puede escribir dir en la línea de comandos para confirmar que el archivo está en el directorio actual.

  4. Presione Entrar para ejecutar el comando.

Cuando complete estos pasos, debe tener un vínculo privado compartido que se aprovisione en un estado pendiente. Se tarda unos minutos en crear el vínculo. Una vez creado, el propietario del recurso debe aprobar la solicitud antes de que esté operativa.

4. Aprobación de la conexión del punto de conexión privado

En SQL Managed Instance, el propietario del recurso debe aprobar la solicitud de conexión privada que creó.

  1. En Azure Portal, abra la pestaña Conexiones de punto de conexión privado de la instancia administrada.

  2. Busque la sección en la que se enumeran las conexiones de punto de conexión privado.

  3. Seleccione la conexión y, después, Aprobar. El estado puede tardar unos minutos en actualizarse.

Después de que se aprueba el punto de conexión privado, Azure AI Search crea las asignaciones de zona DNS necesarias en la zona DNS que se crea para él.

En el lado de Azure AI Search, puede confirmar la aprobación de la solicitud; para ello, vuelva a consultar la pestaña Acceso privado compartido de la página Redes del servicio de búsqueda. El estado de conexión debe aprobarse.

Captura de pantalla de Azure Portal, que muestra un recurso de vínculo privado compartido como

6 - Configuración del indexador para que se ejecute en el entorno privado

Ahora puede configurar un indexador y su origen de datos para usar una conexión privada saliente a la instancia administrada.

Puede usar el asistente para importar datos en este paso, pero el indexador que se genera no será válido para este escenario. Deberá modificar la propiedad JSON del indexador tal como se describe en este paso para que sea compatible con este escenario. A continuación, deberá restablecer y volver a ejecutar el indexador para probar completamente la canalización mediante el indexador actualizado.

En este artículo se da por supuesto que interviene un cliente REST y que se usan las API de REST para facilitar la visualización de todas las propiedades. Recuerde que las llamadas API REST para indexadores y orígenes de datos usan las API REST de búsqueda, no las API REST de administración que se usan para crear el vínculo privado compartido. La sintaxis y las versiones de API son diferentes entre las dos API REST.

  1. Cree la definición del origen de datos como lo haría normalmente para Azure SQL. El formato de la cadena de conexión es ligeramente diferente para una instancia administrada, pero otras propiedades son las mismas que si estuviera configurando una conexión de origen de datos a la base de datos de Azure SQL.

    Proporcione la cadena de conexión de almacenamiento copiada anteriormente.

    POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
     Content-Type: application/json
     api-key: admin-key
     {
         "name" : "my-sql-datasource",
         "description" : "A database for testing Azure AI Search indexes.",
         "type" : "azuresql",
         "credentials" : { 
             "connectionString" : "Server=tcp:contoso.public.0000000000.database.windows.net,1433; Persist Security Info=false; User ID=<your user name>; Password=<your password>;MultipleActiveResultsSets=False; Encrypt=True;Connection Timeout=30;" 
            },
         "container" : { 
             "name" : "Name of table or view to index",
             "query" : null (not supported in the Azure SQL indexer)
             },
         "dataChangeDetectionPolicy": null,
         "dataDeletionDetectionPolicy": null,
         "encryptionKey": null,
         "identity": null
     }
    
  2. Cree la definición del indexador y establezca el entorno de ejecución del indexador en "privado".

    La ejecución del indexador se produce en un entorno privado específico del servicio de búsqueda o en un entorno multiinquilino que se usa internamente para descargar el procesamiento costoso del conjunto de aptitudes para varios clientes. Al conectarse a través de un punto de conexión privado, la ejecución del indexador debe ser privada.

     POST https://myservice.search.windows.net/indexers?api-version=2024-07-01
      Content-Type: application/json
      api-key: admin-key
        {
         "name": "indexer",
         "dataSourceName": "my-sql-datasource",
         "targetIndexName": "my-search-index",
         "parameters": {
             "configuration": {
                 "executionEnvironment": "private"
             }
         },
         "fieldMappings": []
         }
    
  3. Ejecute el indexador. Si la ejecución del indexador se realiza correctamente y el índice de búsqueda se rellena, el vínculo privado compartido funciona.

Puede supervisar el estado del indexador en Azure Portal o mediante la API del estado del indexador.

Puede usar el Explorador de búsqueda en Azure Portal para comprobar el contenido del índice.

Si ejecutó el indexador en el paso anterior e indexó correctamente el contenido de la instancia administrada, la prueba se realizó correctamente. Sin embargo, si se produce un error en el indexador o no hay contenido en el índice, puede modificar los objetos y repetir las pruebas eligiendo cualquier cliente que pueda invocar una solicitud saliente desde un indexador.

Una opción sencilla es ejecutar un indexador en Azure Portal, pero también puede un cliente REST y las API de REST para mayor precisión. Suponiendo que el servicio de búsqueda no esté configurado también para una conexión privada, la conexión del cliente REST a la búsqueda puede realizarse a través de la Internet pública.

Estos son algunos recordatorios para las pruebas:

  • Si usa un cliente REST, utilice la API de REST de administración y la versión de API 2021-04-01-Preview para crear el vínculo privado compartido. Use la API REST de búsqueda y una versión estable de API para crear e invocar indexadores y orígenes de datos.

  • Puede usar el Asistente para importar datos para crear un indexador, un origen de datos y un índice. Sin embargo, el indexador generado no tendrá la configuración correcta del entorno de ejecución.

  • Puede editar el JSON de origen de datos y de indexador en Azure Portal para cambiar las propiedades, incluido el entorno de ejecución y la cadena de conexión.

  • Puede restablecer y volver a ejecutar el indexador en Azure Portal. El restablecimiento es importante para este escenario porque fuerza un reprocesamiento completo de todos los documentos.

  • Puede usar el Explorador de búsqueda para comprobar el contenido del índice.

Consulte también