Compatibilidad de API en Azure Static Web Apps con Azure Functions

Las aplicaciones web front-end suelen llamar a las APIs de back-end para los datos y los servicios. De manera predeterminada, Azure Static Web Apps proporciona puntos de conexión de API sin servidor integrados a través de Azure Functions.

Las APIs de Azure Functions se admiten en dos configuraciones posibles en función del plan de hospedaje:

  • Funciones administradas: de forma predeterminada, la API de una aplicación web estática es una aplicación de Azure Functions administrada e implementada por Azure Static Web Apps y asociada a algunas restricciones.

  • Traiga sus propias funciones: opcionalmente, puede proporcionar una aplicación de Azure Functions existente de cualquier tipo de plan que vaya acompañada de todas las características de Azure Functions. Con esta configuración, es responsable de controlar una implementación independiente para la aplicación de Functions.

En la tabla siguiente se comparan las diferencias entre el uso de funciones administradas y existentes.

Característica Funciones administradas Traiga sus propias funciones
Acceso a desencadenadores y enlaces de Azure Functions Solo HTTP All
Runtimes de Azure Functions compatibles1 Node.js 12
Node.js 14
Node.js 16
Node.js 18 (versión preliminar pública)
.NET Core 3.1
.NET 6.0
.NET 7.0
Python 3.8
Python 3.9
Python 3.10
All
Planes de hospedaje de Azure Functions admitidos Consumo Consumo
Premium
Dedicado
Seguridad integrada con acceso directo a los datos de autenticación y autorización basada en roles del usuario
Integración del enrutamiento que hace que la ruta /api esté disponible para la aplicación web de forma segura sin necesidad de reglas de CORS personalizadas.
Funciones distribuidas (versión preliminar) para la distribución global dinámica del proceso de back-end.
Modelo de programación de Durable Functions
Identidad administrada
Administración de tokens de autenticación y autorización de Azure App Service
Funciones de API disponibles fuera de Azure Static Web Apps
Referencias de Key Vault

1 Para especificar la versión del runtime de las funciones administradas, agregue un archivo de configuración a la aplicación de front-end y establezca la apiRuntimepropiedad . La compatibilidad está sujeta a la directiva de compatibilidad del runtime de idioma de Azure Functions.

Las opciones de API para Static Web Apps incluyen los siguientes servicios de Azure:

Para más información, consulte la Información general de APIs.

Nota:

Funciones distribuidas está disponible con funciones administradas. Las Funciones distribuidas distribuyen automáticamente las funciones administradas a regiones de cargas de solicitudes elevadas.

Configuración

Los puntos de conexión de API están a disposición de la aplicación web a través de la ruta api.

Funciones administradas Traiga sus propias funciones
Aunque la ruta /api es fija, tiene control sobre la ubicación de la carpeta de código fuente de la aplicación de funciones administrada. Para cambiar esta ubicación, edite el archivo YAML del flujo de trabajo, que se encuentra en la carpeta .github/workflows de su repositorio. Las solicitudes a la ruta de /api se envían a la aplicación de Azure Functions existente.

Solución de problemas y registros

Los registros solo están disponibles si agrega Application Insights.

Funciones administradas Traiga sus propias funciones
Para activar el registro, habilite Application Insights en la aplicación web estática. Para activar el registro, habilite Application Insights en la aplicación de Azure Functions.

Restricciones

Además de las restricciones de la API de Static Web Apps, las siguientes restricciones también se aplican a las API de Azure Functions:

Funciones administradas Traiga sus propias funciones
  • Los desencadenadores y enlaces están limitados a HTTP.
  • La aplicación Azure Functions debe estar en Node.js 12, Node.js 14, Node.js 16, Node.js 18 (versión preliminar pública), .NET Core 3.1, .NET 6.0, Python 3.8, Python 3.9 o Python 3.10.
  • El servicio administra algunas configuraciones de la aplicación, por lo que el tiempo de ejecución reserva los siguientes prefijos:
    • APPSETTING_, AZUREBLOBSTORAGE_, AZUREFILESSTORAGE_, AZURE_FUNCTION_, CONTAINER_, DIAGNOSTICS_, DOCKER_, FUNCTIONS_, IDENTITY_, MACHINEKEY_, MAINSITE_, MSDEPLOY_, SCMSITE_, SCM_, WEBSITES_, WEBSITE_, WEBSOCKET_, AzureWeb
  • El servicio usa internamente algunas etiquetas de aplicación. Por lo tanto, se reservan las siguientes etiquetas:
    • AccountId, EnvironmentId, FunctionAppId.
  • Es responsable de administrar la implementación de la aplicación de Azure Functions.

Pasos siguientes