Creación de la primera función en Azure Arc (versión preliminar)

En este inicio rápido, creará un proyecto de Azure Functions y lo implementará en una aplicación de funciones que se ejecuta en un clúster de Kubernetes habilitado para . Para más información, consulte App Service, Functions y Logic Apps en Azure Arc. Este escenario solo admite aplicaciones de funciones que se ejecutan en Linux.

Nota

La compatibilidad con la ejecución de funciones en un clúster de Kubernetes habilitado para Azure Arc se encuentra actualmente en versión preliminar.

Actualmente no se admite la publicación de proyectos de función de PowerShell en clústeres de Kubernetes habilitados para Azure Arc. Si necesita implementar funciones de PowerShell en clústeres de Kubernetes habilitados para Azure Arc, cree la aplicación de funciones en un contenedor.

Si necesita personalizar el contenedor en el que se ejecuta la aplicación de funciones, consulte Creación de las primeras funciones en contenedor en Azure Arc (versión preliminar).

Requisitos previos

En el equipo local:

Instalación de Azure Functions Core Tools

La manera recomendada de instalar Core Tools depende del sistema operativo del equipo de desarrollo local.

En los pasos siguientes se utiliza Windows Installer (MSI) para instalar Core Tools v4.x. Para más información sobre otros instaladores basados en paquetes, consulte el archivo Léame de Core Tools.

Descargue y ejecute el instalador de Core Tools según su versión de Windows:

Si ha usado previamente Windows Installer (MSI) para instalar Core Tools en Windows, debe desinstalar la versión anterior desde Agregar/Quitar programas antes de instalar la versión más reciente.

Creación de un entorno de Kubernetes de App Service

Antes de comenzar, debe crear un entorno de Kubernetes de App Service para un clúster de Kubernetes habilitado para Azure Arc.

Nota

Al crear el entorno, asegúrese de anotar el nombre de la ubicación personalizada y el nombre del grupo de recursos que la contiene. Puede usarlos para encontrar el identificador de la ubicación personalizada, que necesitará al crear la aplicación de funciones en el entorno.

Si no ha creado el entorno, acuda al administrador del clúster.

Adición de extensiones de la CLI de Azure

Inicie el entorno de Bash en Azure Cloud Shell.

Dado que estos comandos de la CLI aún no forman parte del conjunto de la CLI principal, agréguelos con los siguientes comandos:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Creación del proyecto de función local

En Azure Functions, un proyecto de función es la unidad de implementación y ejecución de una o varias funciones individuales que responden cada una 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.

  1. 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 --dotnet
    
  2. 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. De forma predeterminada, el archivo local.settings.json se ha excluido del control de código fuente en el archivo .gitignore. Esta exclusión se debe a que el archivo puede contener secretos que se descargan de Azure.

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

Ejecución local de la función

  1. Para ejecutar la función, inicie el host en tiempo de ejecución local de Azure Functions desde la carpeta LocalFunctionProj.

    func start
    

    En la parte final de la salida, deberán aparecer las líneas siguientes:

    Screenshot of terminal window output when running function locally.

    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.

  2. Copie la URL de su función HTTP de esta salida a un navegador y agregue la cadena de consulta ?name=<YOUR_NAME>, lo que hace que la URL completa sea como http://localhost:7071/api/HttpExample?name=Functions. El explorador debe mostrar un mensaje de respuesta que devuelve el valor de la cadena de consulta. El terminal en el que inició el proyecto también muestra la salida del registro cuando realiza solicitudes.

  3. Cuando termine, presione Ctrl + C y escriba y para detener el host de Azure Functions.

Obtención de la ubicación personalizada

Para poder crear una aplicación de funciones en una ubicación personalizada, deberá obtener la información sobre el entorno.

Obtenga la siguiente información sobre la ubicación personalizada del administrador del clúster (consulte Creación de una ubicación personalizada).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

Obtenga el identificador de la ubicación personalizada para el paso siguiente.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Creación de recursos de Azure

Para poder implementar el código de función en el nuevo entorno de Kubernetes de App Service, debe crear dos recursos más:

  • Una cuenta de almacenamiento. Aunque en este artículo se crea una cuenta de almacenamiento, es posible que en algunos casos no sea necesaria. Para más información, consulte Clústeres habilitados para Azure Arc en el artículo consideraciones sobre el almacenamiento.
  • Una aplicación de funciones, que proporciona el contexto para ejecutar el código de función. La aplicación de funciones se ejecuta en el entorno de Kubernetes de App Service y se asigna al proyecto de función local. Una aplicación de función permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación y el uso compartido de recursos.

Nota

Las aplicaciones de funciones se ejecutan en un entorno de Kubernetes de App Service en un plan dedicado (App Service). Al crear la aplicación de funciones sin un plan existente, se crea automáticamente el plan correcto.

Crear cuenta de almacenamiento

Use el comando az storage account create para crear una cuenta de almacenamiento de uso general en el grupo de recursos y la región:

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Nota

En algunos casos no se necesita cuenta de almacenamiento. Para más información, consulte Clústeres habilitados para Azure Arc en el artículo consideraciones sobre el 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. El valor --location es una región estándar de Azure.

Crear la aplicación de función

Ejecute el comando az functionapp create para crear una aplicación de funciones en el entorno.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

En este ejemplo, reemplace <CUSTOM_LOCATION_ID> por el identificador de la ubicación personalizada que ha determinado para el entorno de Kubernetes de App Service. También, reemplace <STORAGE_NAME> por el nombre de la cuenta que usó en el paso anterior y <APP_NAME> por un nombre único global que le resulte adecuado.

Implementación del proyecto de función en Azure

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 el ejemplo siguiente, reemplace <APP_NAME> por el nombre de su aplicación.

func azure functionapp publish <APP_NAME>

El comando de publicación muestra un resultado similar a lo que se muestra a continuación (se ha truncado para que resulte más simple):

...

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

Dado que una implementación completa puede tardar algún tiempo en completarse en un clúster de Kubernetes habilitado para Azure Arc, puede que quiera volver a ejecutar el siguiente comando para comprobar las funciones publicadas:

func azure functionapp list-functions

Invocación de la función en Azure

Como la función usa un desencadenador HTTP, para invocarla es preciso realizar una solicitud HTTP a su dirección URL en el explorador o con una herramienta como CURL.

Copie la dirección URL de invocación completa que se muestra en la salida del comando de publicación en una barra de direcciones del explorador, y anexe el parámetro de consulta ?name=Functions. El explorador debe mostrar una salida similar a cuando ejecutó la función localmente.

The output of the function run on Azure in a browser

Pasos siguientes

Ahora que tiene la aplicación de funciones ejecutándose en un contenedor de un entorno de Kubernetes de App Service habilitado para Azure Arc, puede conectarla a Azure Storage agregando un enlace de salida de Queue Storage.