Extensión de una plantilla azd agregando un servicio de Azure

Después de compilar una nueva plantilla de la CLI para desarrolladores de Azure (azd) o empezar a partir de una existente, puede ampliar y evolucionar su aplicación e infraestructura a medida que cambian los requisitos. En este tutorial se muestra cómo agregar un nuevo servicio Azure a una plantilla sin depender de un módulo que la plantilla ya proporciona.

Empezará con la hello-azd plantilla, creará un módulo de Bicep que define un recurso Azure Translator, hará referencia al módulo desde el punto de entrada de la infraestructura de la plantilla y expondrá sus salidas como azd valores de entorno. El tutorial se centra en ampliar la infraestructura y no modifica el código de la aplicación.

Note

Puede realizar los siguientes cambios directamente o con ayuda de un asistente de codificación de IA. Independientemente del método de creación, revise los archivos resultantes y valide la plantilla antes de la implementación.

Prerequisites

Para completar este tutorial, necesita:

Inicialización de la plantilla

Abra un terminal en un directorio vacío e inicialice la hello-azd plantilla en ese directorio:

azd init --template hello-azd .

La plantilla incluye:

  • Una aplicación de C# implementada en Azure Container Apps como servicio aca en azure.yaml.
  • Una identidad administrada asignada por el usuario para la aplicación.
  • Una cuenta de Azure Storage con un contenedor de blobs y una tabla.
  • Azure Container Registry y un entorno de Azure Container Apps.
  • Módulos de Bicep reutilizables en infra/core.

Para obtener instrucciones sobre cómo seleccionar y revisar una plantilla antes de la inicialización, consulte Inicio desde una plantilla existente.

Creación de un módulo de Translator

Cree un archivo denominado infra/translator.bicep, ya sea manualmente o con ayuda de un asistente de codificación de IA. Este nuevo módulo es independiente y no depende de los módulos de la plantilla de inicio:

@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

El módulo utiliza el tipo de recurso TextTranslation y deshabilita la autenticación mediante clave local. El F0 nivel es útil para la evaluación, pero solo permite un recurso gratuito de Translator por suscripción. Use S1 si la suscripción ya contiene un F0 recurso o si el proyecto requiere un nivel de pago.

Importante

En este ejemplo introductorio se habilita el punto de conexión público para que pueda aprovisionar el recurso sin agregar infraestructura de red. Antes de usar este patrón en producción, evalúe los puntos de conexión privados, los controles de acceso a la red, la supervisión y los requisitos de seguridad de la organización.

Hacer referencia al módulo desde main.bicep

La hello-azd plantilla define el rg grupo de recursos, location, tagsy resourceToken los valores de infra/main.bicep. Puede realizar esta edición manualmente o pedir a un asistente de IA que lo agregue. Agregue el siguiente módulo después de la declaración de rg recursos:

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

La scope propiedad implementa el módulo en el grupo de recursos que crea la plantilla. El valor existente resourceToken hace que el nombre de recurso de Translator sea distinto para cada entorno.

Exportación de las salidas de Translator

Agregue las siguientes salidas al final de infra/main.bicep:

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

Después del aprovisionamiento, azd captura estos resultados no secretos en el entorno activo. Un cambio de código de aplicación posterior puede usar estos valores para buscar el recurso translator.

Aprovisionamiento y comprobación de la infraestructura

Aprovisione la infraestructura de la plantilla sin implementar su código de aplicación:

azd provision

Ejecute azd env get-values y confirme que la salida incluye AZURE_TRANSLATOR_NAME y AZURE_TRANSLATOR_ENDPOINT. En el portal de Azure, compruebe que el grupo de recursos contiene un recurso Azure Translator.

En este momento, la plantilla aprovisiona el servicio de IA, pero no conecta la aplicación de ejemplo a ella. Para completar esa integración, configure el acceso con privilegios mínimos para la identidad administrada de la aplicación, pase el punto de conexión a la aplicación y agregue un cliente de Translator al código de la aplicación. Para obtener más información, consulte la documentación de Azure Translator.

Limpieza de recursos

Cuando ya no necesite los recursos, elimínelos para evitar cargos continuos:

azd down --purge

Solicitar ayuda

Para obtener información sobre cómo archivar un error, solicitar ayuda o proponer una nueva característica para la CLI para desarrolladores de Azure, visite la página troubleshooting and support.