Eventos
Compilación de Intelligent Apps
17 mar, 23 - 21 mar, 23
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
En este artículo, se usan herramientas de la línea de comandos para crear una función de C# que responda a solicitudes HTTP. Después de probar el código localmente, se implementa en el entorno sin servidor de Azure Functions.
En este artículo se crea una función de desencadenador HTTP que se ejecuta en .NET 8 en un proceso de trabajo aislado. Para más información sobre las versiones de .NET compatibles con las funciones de C#, consulte Versiones compatibles. También está disponible una de versión este artículo basada en Visual Studio Code.
Este inicio rápido supone un pequeño costo en su cuenta de Azure.
Antes de empezar, debe disponer de lo siguiente:
Una de las siguientes herramientas para crear recursos de Azure:
CLI de Azure, versión 2.4 o posterior.
El módulo Az de PowerShell, versión 5.9.0 o posterior.
También necesita una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
La manera recomendada de instalar Core Tools depende del sistema operativo del equipo de desarrollo local.
Los siguientes pasos usan APT para instalar Core Tools en la distribución de Ubuntu/Debian Linux. Para otras distribuciones de Linux, consulte el archivo Léame de Core Tools.
Instale la clave GPG del repositorio de paquetes de Microsoft para validar la integridad del paquete:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
Configure la lista de origen de APT antes de actualizar APT.
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs 2>/dev/null)-prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs 2>/dev/null | cut -d'.' -f 1)/prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
Compruebe el archivo /etc/apt/sources.list.d/dotnetdev.list
en busca de una de las cadenas de la versión Linux adecuada en la siguiente tabla:
Distribución de Linux | Versión |
---|---|
Debian 12 | bookworm |
Debian 11 | bullseye |
Debian 10 | buster |
Debian 9 | stretch |
Ubuntu 22.04 | jammy |
Ubuntu 20.04 | focal |
Ubuntu 19.04 | disco |
Ubuntu 18.10 | cosmic |
Ubuntu 18.04 | bionic |
Ubuntu 17.04 | zesty |
Ubuntu 16.04/Linux Mint 18 | xenial |
Inicie la actualización del origen de APT:
sudo apt-get update
Instale el paquete de Core Tools:
sudo apt-get install azure-functions-core-tools-4
En Azure Functions, un proyecto de función es un contenedor para una o varias funciones individuales que responden a un desencadenador específico. Todas las funciones de un proyecto comparten las mismas configuraciones locales y de hospedaje. En esta sección, se crea un proyecto de función que contiene una sola función.
Ejecute el comando func init
, de la manera siguiente, para crear un proyecto de funciones en una carpeta llamada LocalFunctionProj con el entorno de ejecución especificado:
func init LocalFunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
Vaya a la carpeta del proyecto:
cd LocalFunctionProj
Esta carpeta contiene varios archivos del proyecto, incluidos los archivos de configuración local.settings.json y host.json. Como local.settings.json puede contener secretos descargados de Azure, el archivo se excluye del control de código fuente de forma predeterminada en el archivo .gitignore.
Agregue una función al proyecto mediante el comando siguiente, donde el argumento --name
es el nombre único de la función (HttpExample) y el argumento --template
especifica el desencadenador de esta (HTTP).
func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
crea un archivo de código HttpExample.cs.
Si lo desea, puede ir a Ejecución local de la función y examine el contenido del archivo posteriormente.
HttpExample.cs contiene un método Run
que recibe datos de solicitud en la variable req
como objeto HttpRequest. Ese parámetro está decorado con HttpTriggerAttribute para definir el comportamiento del desencadenador.
using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Company.Function
{
public class HttpExample
{
private readonly ILogger<HttpExample> _logger;
public HttpExample(ILogger<HttpExample> logger)
{
_logger = logger;
}
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Welcome to Azure Functions!");
}
}
}
El objeto devuelto es un objeto IActionResult que contiene los datos que se devuelven a la respuesta HTTP.
Para más información, vea Enlaces y desencadenadores HTTP de Azure Functions.
Para ejecutar una función, inicie el host en tiempo de ejecución local de Azure Functions desde la carpeta LocalFunctionProj:
func start
Hacia el final de la salida, deberían aparecer las líneas siguientes:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
Nota
Si HttpExample no aparece como se ha mostrado arriba, es probable que haya iniciado el host desde fuera de la carpeta raíz del proyecto. En ese caso, use Ctrl+C para detener el host, vaya a la carpeta raíz del proyecto y vuelva a ejecutar el comando anterior.
Copie la dirección URL de la función HttpExample
de esta salida en un explorador y vaya a la dirección URL de la función; recibirá un mensaje de Bienvenida a Azure Functions.
Cuando termine, presione Ctrl+C y seleccione y
para detener el host de Functions.
Antes de poder implementar el código de la función en Azure, debe crear tres recursos:
Utilice los comandos siguientes para crear los elementos. Se admiten las CLI de Azure y de PowerShell.
Si todavía no lo ha hecho, inicie sesión en Azure:
az login
El comando az login inicia sesión en su cuenta de Azure.
Cree un grupo de recursos denominado AzureFunctionsQuickstart-rg
en la región elegida:
az group create --name AzureFunctionsQuickstart-rg --location <REGION>
El comando az group create crea un grupo de recursos. En el comando anterior, reemplace <REGION>
por una región cercana mediante un código de región disponible devuelto por el comando az account list-locations.
Cree una cuenta de almacenamiento de uso general en su grupo de recursos y región:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
El comando az storage account create crea la cuenta de almacenamiento.
En el ejemplo anterior, reemplace <STORAGE_NAME>
por un nombre que sea apropiado para usted y único en Azure Storage. Los nombres deben contener entre 3 y 24 caracteres y solo letras minúsculas. Standard_LRS
especifica una cuenta de uso general, que es compatible con Functions.
Importante
La cuenta de almacenamiento se usa para almacenar datos importantes de la aplicación, a veces incluido el propio código de la aplicación. Debe limitar el acceso desde otras aplicaciones y usuarios a la cuenta de almacenamiento.
Cree la aplicación de funciones en Azure:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
El comando az functionapp create crea la aplicación de funciones en Azure.
En el ejemplo anterior, reemplace <STORAGE_NAME>
por el nombre de la cuenta que usó en el paso anterior y reemplace <APP_NAME>
por un nombre único global que le resulte adecuado. <APP_NAME>
también es el dominio DNS predeterminado de la aplicación de función.
Este comando crea una aplicación de funciones que se ejecuta en el entorno de ejecución del lenguaje especificado en el plan de consumo de Azure Functions, que es gratuito para la cantidad de uso que se realiza aquí. El comando también crea una instancia asociada de Application Insights de Azure en el mismo grupo de recursos con la que puede supervisar la aplicación de funciones y ver registros. Para más información, consulte Supervisión de Azure Functions. La instancia no incurrirá en ningún costo hasta que se active.
Después de haber creado correctamente su aplicación de funciones en Azure, estará listo para implementar el proyecto de funciones local mediante el comando func azure functionapp publish
.
En la carpeta del proyecto raíz, ejecute este comando func azure functionapp publish
:
func azure functionapp publish <APP_NAME>
En este ejemplo, reemplace <APP_NAME>
por el nombre de la aplicación. Una implementación correcta muestra resultados similares a la salida siguiente (truncada por motivos de simplicidad):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
Como la función usa un desencadenador HTTP y admite solicitudes GET, realice una solicitud HTTP a su dirección URL para invocarla. Es más fácil hacerlo en un explorador.
Copie el valor completo de la dirección URL de invocación que se muestra en la salida del comando de publicación en una barra de direcciones del explorador. Cuando vaya a esta dirección URL, el explorador debe mostrar una salida similar a cuando ejecutó la función localmente.
Ejecute el siguiente comando para ver registros de streaming casi en tiempo real:
func azure functionapp logstream <APP_NAME>
En una ventana de terminal independiente o en el explorador, vuelva a llamar a la función remota. En la ventana de terminal, se mostrará un registro detallado de la ejecución de la función en Azure.
Si continúa con el paso siguiente y agrega un enlace de salida de la cola de Azure Storage, conserve todos los recursos intactos, ya que va a crear a partir de lo que ya ha hecho.
De lo contrario, use el siguiente comando para eliminar el grupo de recursos y todos los recursos que contiene para evitar incurrir en costos adicionales.
az group delete --name AzureFunctionsQuickstart-rg
Eventos
Compilación de Intelligent Apps
17 mar, 23 - 21 mar, 23
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahora