Estenda um modelo azd adicionando um serviço Azure

Depois de criar um novo modelo de CLI (azd) para Desenvolvedores do Azure ou começar a partir de um já existente, pode expandir e evoluir a sua aplicação e infraestrutura conforme as suas necessidades mudam. Este tutorial demonstra como adicionar um novo serviço Azure a um template sem depender de um módulo que o template já fornece.

Começas pelo hello-azd template, crias um módulo Bicep que define um recurso do Azure Translator, referencias o módulo a partir do ponto de entrada da infraestrutura do template e expões as suas saídas como azd valores de ambiente. O tutorial foca-se na expansão da infraestrutura e não modifica o código da aplicação.

Note

Pode fazer as seguintes alterações diretamente ou com a ajuda de um assistente de programação por IA. Independentemente do método de autoria, reveja os ficheiros resultantes e valide o modelo antes da implementação.

Pré-requisitos

Para concluir este tutorial, você precisa:

  • Azure Developer CLI instalado.
  • Uma assinatura do Azure.
  • Permissão para criar recursos do Azure na subscrição.
  • Um diretório vazio para o modelo inicializado.

Inicializar o modelo

Abra um terminal numa pasta vazia e depois inicialize o hello-azd modelo nessa diretoria:

azd init --template hello-azd .

O modelo inclui:

  • Uma aplicação C# implementada no Azure Container Apps como serviço aca em azure.yaml.
  • Uma identidade gerida atribuída pelo utilizador para a aplicação.
  • Uma conta Armazenamento do Azure com um contentor de blobs e uma tabela.
  • Azure Container Registry e um ambiente Azure Container Apps.
  • Módulos Bicep reutilizáveis em infra/core.

Para orientações sobre como selecionar e rever um modelo antes da inicialização, consulte Começar a partir de um modelo existente.

Criar um módulo tradutor

Crie um ficheiro chamado infra/translator.bicep, manualmente ou com a ajuda de um assistente de programação de IA. Este novo módulo é autónomo e não depende dos módulos do modelo inicial:

@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

O módulo utiliza o TextTranslation resource type e desativa a autenticação de chave local. O F0 nível é útil para avaliação, mas permite apenas um recurso gratuito do Tradutor por subscrição. Use S1 se a subscrição já contiver um F0 recurso ou se o projeto exigir um nível pago.

Importante

Este exemplo introdutório permite que o endpoint público permita que possa provisionar o recurso sem adicionar infraestrutura de rede. Antes de usar este padrão em produção, avalie endpoints privados, controlos de acesso à rede, monitorização e os requisitos de segurança da sua organização.

Referenciar o módulo a partir de main.bicep

O hello-azd modelo define o grupo de recursos rg e os valores de location, tags e resourceToken em infra/main.bicep. Podes fazer esta edição manualmente ou pedir a um assistente de IA para a adicionar. Adicione o seguinte módulo após a declaração de rg recurso:

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

A scope propriedade implanta o módulo no grupo de recursos que o template cria. O valor existente resourceToken torna o nome do recurso tradutor distinto para cada ambiente.

Exportar as saídas do tradutor

Adicione as seguintes saídas no final de infra/main.bicep:

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

Após o provisionamento, azd captura estas saídas não secretas no ambiente ativo. Uma alteração posterior no código da aplicação pode usar estes valores para localizar o recurso Tradutor.

Provisionar e verificar a infraestrutura

Providencie a infraestrutura do modelo sem implementar o seu código de aplicação:

azd provision

Execute azd env get-values e confirme que a saída inclui AZURE_TRANSLATOR_NAME e AZURE_TRANSLATOR_ENDPOINT. No portal Azure, verifique se o grupo de recursos contém um recurso do Azure Translator.

Neste ponto, o modelo provisiona o serviço de IA mas não liga a aplicação de exemplo a ele. Para completar essa integração, configure o acesso de privilégio mínimo para a identidade gerida da aplicação, passe o endpoint para a aplicação e adicione um cliente tradutor ao código da aplicação. Para mais informações, consulte a documentação do Azure Translator.

Limpeza de recursos

Quando já não precisar dos recursos, elimine-os para evitar cobranças contínuas:

azd down --purge

Pedir ajuda

Para informações sobre como registar um bug, pedir ajuda ou propor uma nova funcionalidade para a Azure Developer CLI, por favor visite a página troubleshooting and support.