Deno for Azure Functions
@@@@@@@@@@@,
@@@@@@@@@@@@@@@@@@@ %%%%%%
@@@@@@ @@@@@@@@@@ %%%%%%
@@@@@ @ @ *@@@@@ @ %%%%%% @
@@@ @@@@@ @@ %%%%%% @@
@@@@@ @@@@@ @@@ %%%%%%%%%%% @@@
@@@@@@@@@@@@@@@ @@@@ @@ %%%%%%%%%% @@
@@@@@@@@@@@@@@ @@@@ @@ %%%% @@
@@@@@@@@@@@@@@ @@@ @@ %%% @@
@@@@@@@@@@@@@ @ @@ %% @@
@@@@@@@@@@@ %%
@@@@@@@ %
Overview
This is a worker that lets you run Deno on Azure Functions. It is implemented as an Azure Functions Custom Handler and runs on the Azure Functions Consumption (serverless) plan.
The project includes a CLI denofunc
to make it easy to create, run, and deploy your Deno Azure Functions apps.
3 commands to get started
# initialize function app
denofunc init
# run function app locally
denofunc start
# deploy the app
denofunc publish $functionAppName [--slot $slotName] [--allow-run] [--allow-write]
For more information, try the quickstart below.
Programming model
All Azure Functions triggers and bindings (including custom bindings) are supported.
In this simplified programming model, each function is a single file. Here are a couple of examples:
Check out the new project template for the entire app structure.
Getting started - building a Deno function app
Requirements
- Linux, macOS, Windows
- Deno
- Tested on:
1.16.2
- Tested on:
- Azure Functions Core Tools V3 - needed for running the app locally and deploying it
- Azure CLI - needed to deploy the app
denofunc
CLI - see below
Codespaces
You can also get a preconfigured, cloud-based dev environment from Codespaces:
- Visual Studio Codespaces - click to create
- GitHub Codespaces (private preview) - go to the template repo and create a Codespace
Install the denofunc CLI
To help create, run, and deploy a Deno for Azure Functions app, you need to install the denofunc
CLI. denofunc
wraps the Azure Functions Core Tools (func
) and is used for generating artifacts required to run/deploy the app.
To install the CLI, run the following Deno command.
deno install --allow-run --allow-read --allow-write --allow-net --unstable --force \
--name=denofunc https://raw.githubusercontent.com/anthonychu/azure-functions-deno-worker/v0.9.0/denofunc.ts
Confirm it is installed correctly:
denofunc --help
Create and run an app locally
-
Create and change into an empty folder.
-
Initialize the project:
denofunc init
A few of the files that are important to know about:
functions/hello_world.ts
- a basic HTTP triggered functionworker.ts
- the Deno worker used by Azure Functionshost.json
- configuration of the function host
-
Run the app locally:
denofunc start
The Azure Functions Core Tools (
func
) is then called to run the function app.Note: A folder is automatically generated for the
hello_world
function containing a file namedfunction.json
that is used by the Azure Functions runtime to load the function (they are ignored in.gitnore
). -
Open the URL displayed on the screen (http://localhost:7071/api/hello_world) to run the function.
-
Ctrl-C
to stop the app.
Deploy the app to Azure
Now that you've run the function app locally, it's time to deploy it to Azure!
-
Configure some variables (examples are in bash):
region=centralus # any region where Linux Azure Functions are available resourceGroupName=<resource_group_name> functionAppName=<function_app_name> storageName=<storage_name> # must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.
-
If you are not authenticated with the Azure CLI, log in.
# Log in to the Azure CLI az login
This might not work in some environments (e.g. Codespaces). Try
az login --use-device-code
instead. -
Run these Azure CLI commands to create and configure the function app:
# Create resource group az group create -l $region -n $resourceGroupName # Create storage account needed by function app az storage account create -n $storageName -l $region -g $resourceGroupName --sku Standard_LRS # Create function app (also works on Windows) az functionapp create -n $functionAppName --storage-account $storageName \ --consumption-plan-location $region -g $resourceGroupName \ --functions-version 3 --runtime dotnet --os-type Linux
-
Deploy the app:
denofunc publish $functionAppName
Prior to deployment,
denofunc
tool will download the Deno Linux binary matching your locally installed version of deno that is included with the deployment package. -
The deployment output will print out the URL of the deployed function. Open to the URL to run your function.
🎉 Congratulations!
You've deployed your first Azure Functions app in Deno!
Disclaimer: This is a community open source project. No official support is provided by Microsoft.