透過新增 Azure 服務來擴充 azd 範本

當你建立新的 Azure 開發者 CLI (azd) 範本或從現有範本開始後,你可以隨著需求變化擴充並演進其應用程式與基礎架構。 本教學示範如何在不依賴模板已提供的模組的情況下,新增 Azure 服務到範本中。

你會從hello-azd範本開始,建立一個定義 Azure 翻譯工具 資源的 Bicep 模組,從範本的基礎設施入口點參考該模組,並將輸出顯示為azd環境值。 教學著重於擴充基礎設施,並未修改應用程式程式碼。

Note

你可以直接或在 AI 程式助理的協助下做出以下修改。 不論用哪種製作方式,部署前都要檢視產生的檔案並驗證範本。

先決條件

若要完成本教學課程,您需要:

  • Azure Developer CLI 安裝.
  • Azure 訂用帳戶。
  • 在訂閱中建立 Azure 資源的權限。
  • 一個用於初始化範本的空目錄。

初始化範本

在空目錄中開啟終端機,然後在該目錄中初始化 hello-azd 範本:

azd init --template hello-azd .

該範本包括:

  • 部署至 azure.yaml 中 Azure 容器應用程式 的 C# 應用程式,作為 aca 服務。
  • 應用程式由使用者指派的管理身份。
  • 一個 Azure 儲存體 帳號,裡面有 blob 容器和表格。
  • Azure Container Registry 和 Azure 容器應用程式 環境。
  • 位於 infra/core 下的可重複使用 Bicep 模組。

關於在初始化前選擇與審查範本的指引,請參見「 從現有範本開始」。

建立一個翻譯模組

建立一個名為 infra/translator.bicep的檔案,可以手動或在 AI 程式助理的協助下建立。 這個新模組是自成一體的,且不依賴起始範本中的模組:

@description('Name of the Azure Translator resource.')
param name string

@description('Azure region for the resource.')
param location string

@description('Tags to apply to the resource.')
param tags object = {}

@description('Pricing tier for Azure Translator.')
@allowed([
  'F0'
  'S1'
])
param sku string = 'F0'

resource translator 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
  name: name
  location: location
  kind: 'TextTranslation'
  sku: {
    name: sku
  }
  properties: {
    customSubDomainName: name
    disableLocalAuth: true
    publicNetworkAccess: 'Enabled'
  }
  tags: tags
}

output name string = translator.name
output endpoint string = translator.properties.endpoint

模組使用 resource TextTranslation 類型並關閉本地金鑰驗證。 此 F0 層級對評估有用,但每位訂閱僅允許一個免費翻譯資源。 如果訂閱已經包含資源F0,或專案需要付費層級,就使用S1。

Important

這個入門範例啟用了公共端點,讓你可以在不新增網路基礎設施的情況下配置資源。 在正式環境中使用此模式前,先評估私有端點、網路存取控制、監控及組織的安全需求。

從 main.bicep 引用該模組

該 hello-azd 範本定義 rg 了資源群組、 location、 tags及 resourceToken 中的 infra/main.bicep值。 你可以手動編輯,或是提示 AI 助理加入。 在資源 rg 宣告後加入以下模組:

module translator './translator.bicep' = {
  name: 'translator'
  scope: rg
  params: {
    name: 'translator-${resourceToken}'
    location: location
    tags: tags
  }
}

屬性 scope 將模組部署到範本所建立的資源群組中。 現有 resourceToken 值使得每個環境的轉譯器資源名稱都不同。

匯出翻譯器輸出

在 infra/main.bicep 的末尾加入以下輸出:

output AZURE_TRANSLATOR_NAME string = translator.outputs.name
output AZURE_TRANSLATOR_ENDPOINT string = translator.outputs.endpoint

配置完成後, azd 會擷取這些非秘密輸出於主動環境中。 後續的應用程式代碼變更可利用這些值來定位轉譯器資源。

配置與驗證基礎設施

在不部署其應用程式碼的情況下,配置範本的基礎架構:

azd provision

執行 azd env get-values 並確認輸出包含 AZURE_TRANSLATOR_NAME 和 AZURE_TRANSLATOR_ENDPOINT。 在 Azure 入口網站中,確認資源群組是否包含 Azure 翻譯工具 資源。

此時,範本會配置 AI 服務,但並未將範例應用程式連結到它。 為了完成這項整合,請設定應用程式的管理身份權限最低權限,將端點交給應用程式,並在應用程式程式碼中新增一個翻譯器用戶端。 欲了解更多資訊,請參閱 Azure 翻譯工具 文件。

清理資源

當你不再需要這些資源時,請刪除它們以避免持續收費:

azd down --purge

請求幫助

如需了解如何提出錯誤、請求協助或建議Azure開發者 CLI 新功能,請造訪 troubleshooting and support 頁面。