Trabajo con los metadatos de la CLI de Azure para desarrolladores para los parámetros de entrada de Bicep

La interfaz de línea de comandos para desarrolladores de Azure (azd) admite plantillas de Bicep con el decorador @metadata. Agregue metadatos a los parámetros de entrada de Bicep para mejorar la implementación con valores predeterminados inteligentes, generación automática de valores y solicitud de parámetros mejores.

Adición de metadatos

Los parámetros de entrada de Bicep admiten @metadata como un objeto sin esquemas. Agregue azd metadatos incluyendo el campo azd en los metadatos del parámetro:

@metadata({
  azd: {}
})
param someInput <param-type>

Los metadatos de la CLI para desarrolladores de Azure no dependen del tipo del parámetro y puede agregarlos a cualquier parámetro.

Metadatos admitidos

Los campos de configuración admitidos para los metadatos de azd son:

Campo Description
type Define cómo azd solicita este parámetro. Por ejemplo: location.
config Describe la configuración de algunos tipos de metadatos, como generate.
default Defina un valor para azd que se resalte primero durante un mensaje de selección.
usageName Gestiona la comprobación de cuota para la selección de ubicación del modelo de IA.

Cada campo se describe con más detalle en las secciones siguientes.

Tipo

Esta configuración define cómo azd solicita un parámetro de entrada. Los tipos admitidos incluyen:

  • ubicación

    Use el location tipo para indicar azd que un parámetro de entrada controla una ubicación de Azure. Cuando azd encuentra el location tipo en los metadatos, solicita un valor mediante la lista de selección de ubicación. Por ejemplo:

    @metadata({
      azd: {
        type: 'location'
      }
    })
    param someInput string
    

    Flujo de avisos:

    Captura de pantalla que muestra una solicitud de ubicación con metadatos.

    Combine el tipo location con el campo default para controlar cuál ubicación se resalta primero durante el flujo de prompt. Por ejemplo:

    @metadata({
      azd: {
        type: 'location'
        default: 'westus'
      }
    })
    param someInput string
    

    Flujo de indicaciones

    Captura de pantalla que muestra una solicitud de ubicación con metadatos que incluye un valor predeterminado.

    La opción predeterminada resaltada coincide con el default campo de los metadatos. Este enfoque permite a los autores de plantillas recomendar una ubicación mientras los usuarios pueden confirmarla o cambiarla. Si se establece un valor predeterminado para el parámetro de entrada en Bicep, se omite el flujo de solicitud y se usa el valor predeterminado sin confirmación del usuario.

  • generar

    Utilice el generate tipo para indicar a azd que cree automáticamente el valor para el parámetro de entrada. Este tipo se suele usar para generar contraseñas o identificadores únicos:

    @metadata({
      azd: {
        type: 'generate'
        config: {
          length: 10
        }
      }
    })
    param someInput string
    

    Nota:

    El config campo es obligatorio con type: 'generate'.

    Cuando azd se ejecuta, genera un valor de 10 caracteres para el parámetro de entrada sin solicitar la entrada. Consulte la sección config para ver las opciones para configurar valores de generación automática.

  • resourceGroup

    Use el resourceGroup tipo para indicarle azd que solicite un grupo de recursos para esta entrada:

    @metadata({
      azd: {
        type: 'resourceGroup'
      }
    })
    param someInput string
    

    Flujo de prompts:

    Captura de pantalla que muestra un mensaje con el tipo de grupo de recursos.

Config

El config objeto es necesario con el generate tipo . Controla las opciones de generación automática. En la tabla siguiente se describen las opciones de configuración generadas:

Nombre del campo Tipo Description Predeterminado
length int Longitud total del valor generado 0
noLower bool Si es true, excluye letras minúsculas. false
noUpper bool Si es verdadero, excluye letras mayúsculas. false
noNumeric bool Si es verdadero, excluye los números. false
sinEspecial bool Si es verdadero, excluye caracteres especiales. false
minLower int Número mínimo de letras minúsculas requeridas. 0
minUpper int Número mínimo de letras mayúsculas requeridas. 0
minNumeric int Número mínimo de números necesarios. 0
minSpecial int Número mínimo de caracteres especiales necesarios. 0

Importante

La suma de todos los requisitos mínimos (MinLower + MinUpper + MinNumeric + MinSpecial) no puede superar la longitud total. Si alguna "No-" marca es verdadera, establezca el valor "Min-" correspondiente en 0.

Por ejemplo, genere un valor con longitud 10, sin caracteres especiales y sin números:

@metadata({
  azd: {
    type: 'generate'
    config: {
      length: 10
      noNumeric: true
      noSpecial: true
    }
  }
})
param someInput string

Predeterminado

Define el valor inicial de una lista para resaltar. Combínelo con el location tipo o aplíquelo directamente a una entrada con una lista definida de opciones:

@allowed(['foo', 'bar', 'baz'])
@metadata({
  azd: {
    default: 'baz'
  }
})
param someInput string

En este ejemplo se usa la @allowed() anotación de Bicep para definir una lista de valores admitidos para el parámetro de entrada. Cuando azd solicita esta entrada, usa la lista de valores permitidos. El default campo de los metadatos controla qué opción se establece como selección inicial:

Captura de pantalla que muestra el valor predeterminado durante la solicitud de los valores permitidos.

UsageName

El usageName campo filtra la lista de ubicaciones a solo las ubicaciones en las que hay disponible una SKU y capacidad de IA determinada:

@metadata({
  azd: {
    type: 'location'
    usageName: [
      'OpenAI.GlobalStandard.gpt-5-mini,10'
    ]
  }
})
param someInput string

En este ejemplo azd se muestran solo las ubicaciones de Azure en las que el modelo gpt-5-mini de IA tiene suficiente cuota (capacidad de al menos 10).

Flujo de prompts:

Captura de pantalla que muestra la configuración de usageName para solicitar la ubicación de IA.

Nota:

azd devuelve un error si no hay una ubicación con suficiente cuota.