Estendere un modello azd aggiungendo un servizio Azure

Dopo aver creato un nuovo modello dell'interfaccia della riga di comando per sviluppatori (azd) di Azure sviluppatore o iniziare da un modello esistente, è possibile estendere ed evolvere l'applicazione e l'infrastruttura man mano che cambiano i requisiti. Questa esercitazione illustra come aggiungere un nuovo servizio Azure a un modello senza basarsi su un modulo già fornito dal modello.

Inizierai con il hello-azd modello, creerai un modulo Bicep che definisce una risorsa Traduttore di Azure, farai riferimento al modulo dal punto di ingresso dell'infrastruttura del modello e ne esporrai gli output come azd valori di ambiente. Il tutorial si concentra sull'estensione dell'infrastruttura e non modifica il codice dell'applicazione.

Note

È possibile apportare le modifiche seguenti direttamente o con assistenza da un assistente per la codifica di intelligenza artificiale. Indipendentemente dal metodo di creazione, esaminare i file risultanti e convalidare il modello prima della distribuzione.

Prerequisiti

Per completare questa esercitazione è necessario:

Inizializzare il modello

Aprire un terminale in una directory vuota e quindi inizializzare il hello-azd modello in tale directory:

azd init --template hello-azd .

Il modello include:

  • Un'applicazione C# distribuita su App contenitore di Azure come il servizio aca in azure.yaml.
  • Identità gestita assegnata dall'utente per l'applicazione.
  • Un account Archiviazione di Azure con un contenitore BLOB e una tabella.
  • Registro Azure Container e un ambiente App contenitore di Azure.
  • Moduli Bicep riutilizzabili sotto infra/core.

Per indicazioni su come selezionare ed esaminare un modello prima dell'inizializzazione, vedere Iniziare da un modello esistente.

Crea un modulo Traduttore

Creare un file denominato infra/translator.bicep, manualmente o con l'aiuto di un assistente per la codifica di intelligenza artificiale. Questo nuovo modulo è autonomo e non dipende dai moduli del modello iniziale:

@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

Il modulo usa il TextTranslation tipo di risorsa e disabilita l'autenticazione della chiave locale. Il F0 livello è utile per la valutazione, ma consente una sola risorsa Translator gratuita per sottoscrizione. Usare S1 se la sottoscrizione contiene già una F0 risorsa o se il progetto richiede un livello a pagamento.

Importante

Questo esempio introduttivo abilita l'endpoint pubblico in modo da poter effettuare il provisioning della risorsa senza aggiungere l'infrastruttura di rete. Prima di usare questo modello nell'ambiente di produzione, valutare gli endpoint privati, i controlli di accesso alla rete, il monitoraggio e i requisiti di sicurezza dell'organizzazione.

Fare riferimento al modulo da main.bicep

Il hello-azd modello definisce i valori del rg gruppo di risorse, location, tagse resourceToken in infra/main.bicep. È possibile apportare questa modifica a mano o richiedere a un assistente di intelligenza artificiale di aggiungerlo. Aggiungere il modulo seguente dopo la dichiarazione di rg risorsa:

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

La scope proprietà distribuisce il modulo nel gruppo di risorse creato dal modello. Il valore esistente resourceToken rende il nome della risorsa Translator distinto per ogni ambiente.

Esportare gli output di Translator

Aggiungere gli output seguenti alla fine di infra/main.bicep:

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

Dopo il provisioning, azd memorizza questi valori di output non riservati nell'ambiente attivo. Una modifica successiva del codice dell'applicazione può usare questi valori per individuare la risorsa Translator.

Predisporre e verificare l'infrastruttura

Effettuare il provisioning dell'infrastruttura del modello senza distribuire il codice dell'applicazione:

azd provision

Eseguire azd env get-values e verificare che l'output includa AZURE_TRANSLATOR_NAME e AZURE_TRANSLATOR_ENDPOINT. Nel portale di Azure verificare che il gruppo di risorse contenga una risorsa Traduttore di Azure.

A questo punto, il template esegue il provisioning del servizio di intelligenza artificiale, ma non vi connette l'applicazione di esempio. Per completare l'integrazione, configurare l'accesso con privilegi minimi per l'identità gestita dell'applicazione, passare l'endpoint all'applicazione e aggiungere un client Translator al codice dell'applicazione. Per altre informazioni, vedere la documentazione di Traduttore di Azure.

Pulire le risorse

Quando le risorse non sono più necessarie, eliminarle per evitare addebiti continui:

azd down --purge

Richiedere assistenza

Per informazioni su come inviare un bug, richiedere assistenza o proporre una nuova funzionalità per l'interfaccia della riga di comando per sviluppatori di Azure, visitare la pagina troubleshooting e supporto.