Uso de Java y Gradle para crear y publicar una función en Azure

En este artículo se muestra cómo compilar y publicar un proyecto de una función de Java en Azure Functions con la herramienta de línea de comandos de Gradle. Una vez que haya terminado, el código de función se ejecutará en Azure en un plan de hospedaje sin servidor y se desencadenará mediante una solicitud HTTP.

Nota

Si Gradle no es la herramienta de desarrollo preferida, consulte nuestros tutoriales análogos para desarrolladores de Java con Maven, IntelliJ IDEA y VS Code.

Requisitos previos

Para desarrollar funciones con Java, debe tener instalado lo siguiente:

Necesita también una suscripción de Azure activa. Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Importante

La variable de entorno JAVA_HOME se debe establecer en la ubicación de instalación del JDK para completar esta guía de inicio rápido.

Preparación de un proyecto de Functions

Use el comando siguiente para clonar el proyecto de ejemplo:

git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/

Abra build.gradle y cambie el valor de appName en la sección siguiente por un nombre único para evitar conflictos de nombres de dominio al realizar la implementación en Azure.

azurefunctions {
    resourceGroup = 'java-functions-group'
    appName = 'azure-functions-sample-demo'
    pricingTier = 'Consumption'
    region = 'westus'
    runtime {
      os = 'windows'
    }
    localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}

Abra el nuevo archivo Function.java desde la ruta de acceso src/main/java en un editor de texto y revise el código generado. Este código es una función desencadenada por HTTP que devuelve el cuerpo de la solicitud.

Ejecución local de la función

Ejecute el siguiente comando para realizar la compilación y, luego, ejecutar el proyecto de función:

gradle jar --info
gradle azureFunctionsRun

Verá una salida similar a la siguiente desde Azure Functions Core Tools cuando ejecute el proyecto localmente:

...

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
...

Desencadene la función desde la línea de comandos mediante el comando cURL siguiente en una ventana de terminal nueva:

curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions

El resultado esperado es el siguiente:

Hello, AzureFunctions

Nota

Si establece authLevel en FUNCTION o ADMIN, no se requiere la clave de función cuando se ejecuta de manera local.

Use Ctrl+C en el terminal para detener el código de función.

Implementación de la función en Azure

La primera vez que crea una aplicación de funciones, se crea dicha función y los recursos relacionados en Azure. Antes de poder implementar, use el comando az login de la CLI de Azure para iniciar sesión en la suscripción de Azure.

az login

Sugerencia

Si su cuenta puede acceder a varias suscripciones, use az account set para establecer la suscripción predeterminada de esta sesión.

Use el siguiente comando para implementar el proyecto en una nueva aplicación de funciones.

gradle azureFunctionsDeploy

De este modo, se crean los siguientes recursos en Azure, en función de los valores del archivo build.gradle:

  • Un grupo de recursos Se le ha asignado el nombre de resourceGroup que proporcionó anteriormente.
  • Una cuenta de almacenamiento Necesaria con Functions. El nombre se genera aleatoriamente según los requisitos de nombre de la cuenta de almacenamiento.
  • Plan de App Service. El hospedaje del plan de consumo sin servidor de la aplicación de funciones de la región especificada. El nombre se genera aleatoriamente.
  • Aplicación de funciones. Una aplicación de funciones es la unidad de implementación y ejecución de las funciones. El nombre es appName, anexado a un número generado de forma aleatoria.

La implementación también empaqueta los archivos de proyecto y los implementa en la nueva aplicación de funciones mediante la implementación de archivos zip, con el modo de ejecución desde el paquete habilitado.

La propiedad authLevel para el desencadenador HTTP en el proyecto de ejemplo es ANONYMOUS, que omitirá la autenticación. Sin embargo, si usa otra propiedad authLevel como FUNCTION o ADMIN, debe obtener la clave de función para llamar al punto de conexión de la función a través de HTTP. La forma más fácil de obtener la clave de función es desde Azure Portal.

Obtención de la dirección URL del desencadenador HTTP

Puede obtener la dirección URL necesaria para desencadenar la función, con la clave de función, en Azure Portal.

  1. Vaya a Azure Portal, inicie sesión, escriba el nombre de appName para la aplicación de funciones en Buscar en la parte superior de la página y presione Entrar.

  2. En la aplicación de funciones, seleccione Funciones, elija la función y, a continuación, haga clic en Obtener la dirección URL de la función en la parte superior derecha.

    Copy the function URL from the Azure portal

  3. Seleccione valor predeterminado (clave de función) y seleccione Copiar.

Ahora puede usar la dirección URL copiada para acceder a la función.

Comprobación de la función en Azure

Para comprobar la aplicación de funciones que se ejecuta en Azure mediante cURL, reemplace la dirección URL del ejemplo siguiente por la dirección URL que copió del portal.

curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions

Esto envía una solicitud POST al punto de conexión de la función con AzureFunctions en el cuerpo de la solicitud. Puede ver la siguiente respuesta.

Hello, AzureFunctions

Pasos siguientes

Ha creado un proyecto de funciones de Java con una función desencadenada por HTTP, lo ha ejecutado en la máquina local y lo ha implementado en Azure. Ahora, amplíe la función como sigue...