從 Azure AI 搜尋建立 SQL 受控執行個體的共用私人連結
本文說明如何在 Azure AI 搜尋中設定索引子,以建立與虛擬網路內所執行 SQL 受控執行個體的私人連線。 私人連線是透過共用私人連結和 Azure Private Link。
在受控執行個體的私人連線上,執行個體的完整網域名稱 (FQDN) 必須包含 DNS 區域。 目前,只有 Azure AI 搜尋服務管理 REST API 提供接受 DNS 區域規格的 dnsZonePrefix
參數。
雖然您可以直接呼叫管理 REST API,但使用 Azure CLI az rest
模組從命令列傳送管理 REST API 呼叫會更簡單。 本文使用 Azure CLI 搭配 REST 來設定私人連結。
注意
本文會參考 Azure 入口網站以取得屬性和確認步驟。 不過,建立 SQL 受控執行個體的共用私人連結時,請確定您使用的是 REST API。 雖然 [網路] 索引標籤會列出 Microsoft.Sql/managedInstances
選項,但入口網站目前不支援 SQL 受控執行個體所使用的擴充 URL 格式。
必要條件
Azure AI 搜尋服務、基本或更新版本。 如果要使用 AI 擴充和技能,請使用標準 2 (S2) 以上的服務層級。 如需詳細資訊,請參閱服務限制。
Azure SQL 受控執行個體,設定為在虛擬網路中執行。
您應該在 Azure AI 搜尋和 SQL 受控執行個體上至少擁有參與者權限。
Azure SQL 受控執行個體連接字串。 受控識別目前不支援搭配共用私人連結使用。 您的連接字串必須包含使用者名稱和密碼。
注意
共用私人連結可透過 Azure Private Link 定價計費,且費用會根據使用量開立發票。
1 - 擷取連線資訊
擷取受控執行個體的 FQDN,包括 DNS 區域。 DNS 區域是 SQL 受控執行個體網域名稱的一部分。 例如,如果 SQL 受控執行個體的 FQDN 為 my-sql-managed-instance.00000000000.database.windows.net
,則 DNS 區域為 00000000000
。
在 Azure 入口網站中,尋找 SQL 受控執行個體物件。
在 [概觀] 索引標籤上,找出 [主機] 屬性。 複製 FQDN 的 DNS 區域部分以用於下一個步驟。
在 [連接字串] 索引 標籤上,複製 ADO.NET 連接字串以供後續步驟使用。 測試私人連線時,資料來源連線需要此資料。
如需連線屬性的詳細資訊,請參閱建立 Azure SQL 受控執行個體。
2 - 建立要求的本文
使用文字編輯器,建立共用私人連結的 JSON。
{ "name": "{{shared-private-link-name}}", "properties": { "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}", "dnsZonePrefix": "a1b22c333d44", "groupId": "managedInstance", "requestMessage": "please approve", } }
為共用私人連結提供有意義的名稱。 共用私人連結會與其他私人端點一同顯示。 「用於搜尋的共用私人連結」這類名稱可協助您識別其功能。
貼上您在先前步驟中擷取的 「dnsZonePrefix」 DNS 區域名稱。
編輯「privateLinkResourceId」以反映受控執行個體的私人端點。 提供受控執行個體的訂用帳戶識別碼、資源群組名稱和物件名稱。
將檔案本機儲存為 create-pe.json (或使用另一個名稱,記得在下一個步驟中更新 Azure CLI 語法)。
在 Azure CLI 中,輸入
dir
以記下檔案的目前位置。
3. 建立共用私人連結
在命令列使用
az login
登入 Azure。如果您有多個訂用帳戶,請確定您是使用所需的訂用帳戶:
az account show
。若要設定訂用帳戶,請使用
az account set --subscription {{subscription ID}}
呼叫
az rest
命令以使用 Azure AI 搜尋服務的管理 REST API。由於 SQL 受控執行個體的共用私人連結支援仍處於預覽狀態,因此您需要預覽版本的 REST API。 針對此步驟,請使用
2021-04-01-preview
或更新版本的預覽 API 版本。 建議使用最新預覽 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
提供 Azure AI 搜尋服務資源的訂用帳戶識別碼、資源群組名稱和服務名稱。
提供您在 JSON 本文中指定的相同共用私人連結名稱。
如果您已離開檔案位置,請提供 create-pe.json 檔案的路徑。 您可以在命令列輸入
dir
以確認檔案位於當前目錄中。按 Enter 鍵,執行此命令。
當您完成這些步驟時,您應該會有以擱置狀態佈建的共用私人連結。 建立連結需要幾分鐘的時間。 連結建立後,資源擁有者需要先核准要求,連結才能運作。
4 - 核准私人端點連線
在 SQL 受控執行個體端,資源擁有者必須核准您建立的私人連線要求。
在 Azure 入口網站中,開啟受控執行個體的 [私人端點連線] 索引標籤。
尋找列出私人端點連線的區段。
選取連線,然後選取 [核准]。 入口網站的狀態可能需要幾分鐘的時間才會更新。
核准私人端點之後,Azure AI 搜尋服務會在為其所建的 DNS 區域中建立必要的 DNS 區域對應。
5 - 檢查共用私人連結狀態
在 Azure AI 搜尋服務端,您可以重新瀏覽搜尋服務 [網路] 頁面的 [共用私人存取] 索引標籤,以確認要求核准。 連線狀態應該為已核准。
6. 設定索引子在私人環境中執行
您現在可以設定索引子及其資料來源,以使用受控執行個體的輸出私人連線。
針對此步驟,您可以使用匯入資料精靈,但產生的索引子無法用於此案例。 您必須按照此步驟描述來修改索引子 JSON 屬性,使其適用於此案例。 接著,您必須重設並重新執行索引子,才能使用更新的索引子來完整測試管線。
本文假設採用 REST 用戶端,並使用 REST API 以便能更輕鬆地查看所有屬性。 如前述,REST API 對索引子和資料來源的呼叫會使用搜尋 REST API,而不是用來建立共用私人連結的管理 REST API。 兩個 REST API 之間的語法和 API 版本不同。
建立資料來源定義,方法與 Azure SQL 的一般流程相同。 受控執行個體的連接字串格式稍有不同,但其他屬性與設定 Azure SQL 資料庫的資料來源連線相同。
提供您稍早使用指定初始目錄複製的 連接字串。
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;Initial Catalog=<your database name>" }, "container" : { "name" : "Name of table or view to index", "query" : null (not supported in the Azure SQL indexer) }, "dataChangeDetectionPolicy": null, "dataDeletionDetectionPolicy": null, "encryptionKey": null }
建立索引子定義,將索引子執行環境設定為「private (私人)」。
索引子執行作業會在搜尋服務專屬的私人環境中執行,或是內部用來卸載多個客戶的昂貴技能處理作業的多租用戶環境中執行。 透過私人端點連線時,索引子執行必須是私人狀態。
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": [] }
執行索引子。 如果索引子執行成功且已填入搜尋索引,共用的私人連結就會正常運作。
您可以在 Azure 入口網站中使用索引子狀態 API 來監視索引子的狀態。
您可以使用 Azure 入口網站中的搜尋總管來檢查索引的內容。
7 - 測試共用私人連結
如果您已在上一個步驟中執行索引子,並成功為受控執行個體的內容編製索引,則表示測試成功。 不過,如果索引子失敗或索引中沒有任何內容,您可以選擇可從索引子叫用輸出要求的任何用戶端,以修改物件並重複測試。
簡單的選項是在 Azure 入口網站中執行索引子,但您也可以嘗試採用 REST 用戶端和 REST API 以獲得更高的精確度。 假設您的搜尋服務並未針對私人連線進行設定,則搜尋的 REST 用戶端連線可透過公用網際網路通訊。
測試的一些提醒如下:
如果您使用 REST 用戶端,請使用管理 REST API 和 2021-04-01-Preview API 版本來建立共用私人連結。 使用搜尋 REST API 和穩定 API 版本來建立及叫用索引子和資料來源。
您可以使用匯入資料精靈來建立索引子、資料來源和索引。 不過,產生的索引子缺少正確的執行環境設定。
您可以在 Azure 入口網站中編輯資料來源和索引子 JSON 以變更屬性,包括執行環境和連接字串。
您可以在 Azure 入口網站中重設並重新執行索引子。 重設對於此案例很至關重要,因為此動作會強制重新處理所有文件。
您可以使用搜尋總管來檢查索引的內容。