Estender um modelo azd adicionando um serviço Azure

Depois de criar um novo modelo da CLI do Desenvolvedor Azure (azd) ou começar a partir de um existente, você poderá estender e evoluir seu aplicativo e infraestrutura à medida que seus requisitos forem alterados. Este tutorial demonstra como adicionar um novo serviço Azure a um modelo sem depender de um módulo que o modelo já fornece.

Você começará com o modelo hello-azd, criará um módulo Bicep que definirá um recurso Tradutor do Azure, fará referência ao módulo direto do ponto de entrada da infraestrutura do modelo e exporá suas respectivas saídas como valores de ambiente azd. O tutorial se concentra na extensão da infraestrutura e não modifica o código do aplicativo.

Note

Você pode fazer as alterações a seguir diretamente ou com a ajuda de um assistente de codificação de IA. Independentemente do método de criação, examine os arquivos resultantes e valide o modelo antes da implantação.

Pré-requisitos

Para concluir este tutorial, você precisará:

Inicializar o modelo

Abra um terminal em um diretório vazio e inicialize o hello-azd modelo nesse diretório:

azd init --template hello-azd .

O modelo inclui:

  • Um aplicativo C# implantado no Aplicativos de Contêiner do Azure como o serviço aca em azure.yaml.
  • Uma identidade gerenciada atribuída pelo usuário para o aplicativo.
  • Uma conta Armazenamento do Azure com um contêiner de blob e uma tabela.
  • Registro de Contêiner do Azure e um ambiente Aplicativos de Contêiner do Azure.
  • Módulos de Bicep reutilizáveis em infra/core.

Para obter diretrizes sobre como selecionar e revisar um modelo antes da inicialização, consulte Iniciar a partir de um modelo existente.

Criar um módulo do Tradutor

Crie um arquivo chamado infra/translator.bicepmanualmente ou com a ajuda de um assistente de codificação de IA. Este novo módulo é autocontido e não depende de 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 usa o TextTranslation tipo de recurso e desabilita a autenticação de chave local. A F0 camada é útil para avaliação, mas permite apenas um recurso gratuito de Tradutor por assinatura. Use S1 se a assinatura já contiver um recurso F0 ou se o projeto exigir um nível pago.

Importante

Este exemplo introdutório habilita o ponto de extremidade público para que você possa provisionar o recurso sem adicionar infraestrutura de rede. Antes de usar esse padrão em produção, avalie pontos de extremidade privados, controles de acesso à rede, monitoramento e os requisitos de segurança da sua organização.

Fazer referência ao módulo a partir de main.bicep

O modelo hello-azd define o grupo de recursos rg, location, tags e os valores resourceToken em infra/main.bicep. Você pode fazer essa edição manualmente ou solicitar a um assistente de IA para adicioná-la. 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 modelo 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 ao 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 registra essas saídas não sigilosas no ambiente ativo. Uma alteração posterior do código do aplicativo pode usar esses valores para localizar o recurso tradutor.

Provisionar e verificar a infraestrutura

Provisione a infraestrutura do modelo sem implantar o código do aplicativo:

azd provision

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

Neste ponto, o modelo provisiona o serviço de IA, mas não conecta o aplicativo de exemplo a ele. Para concluir essa integração, configure o acesso com privilégio mínimo para a identidade gerenciada do aplicativo, passe o endpoint para o aplicativo e adicione um cliente do Translator ao código do aplicativo. Para obter mais informações, consulte a documentação do Tradutor do Azure.

Limpar os recursos

Quando você não precisar mais dos recursos, exclua-os para evitar encargos contínuos:

azd down --purge

Solicitar ajuda

Para obter informações sobre como arquivar um bug, solicitar ajuda ou propor um novo recurso para a CLI do Desenvolvedor do Azure, visite a página troubleshooting e suporte.