Azure Functions Core Tools reference
This article provides reference documentation for the Azure Functions Core Tools, which lets you develop, manage, and deploy Azure Functions projects from your local computer. To learn more about using Core Tools, see Work with Azure Functions Core Tools.
Core Tools commands are organized into the following contexts, each providing a unique set of actions.
Command context | Description |
---|---|
func |
Commands used to create and run functions on your local computer. |
func azure |
Commands for working with Azure resources, including publishing. |
func azurecontainerapps |
Deploy containerized function app to Azure Container Apps. |
func durable |
Commands for working with Durable Functions. |
func extensions |
Commands for installing and managing extensions. |
func kubernetes |
Commands for working with Kubernetes and Azure Functions. |
func settings |
Commands for managing environment settings for the local Functions host. |
func templates |
Commands for listing available function templates. |
Before using the commands in this article, you must install the Core Tools.
func init
Creates a new Functions project in a specific language.
func init <PROJECT_FOLDER>
When you supply <PROJECT_FOLDER>
, the project is created in a new folder with this name. Otherwise, the current folder is used.
func init
supports the following options, which don't support version 1.x unless otherwise noted:
Option | Description |
---|---|
--csx |
Creates .NET functions as C# script, which is the version 1.x behavior. Valid only with --worker-runtime dotnet . |
--docker |
Creates a Dockerfile for a container using a base image that is based on the chosen --worker-runtime . Use this option when you plan to deploy a containerized function app. |
--docker-only |
Adds a Dockerfile to an existing project. Prompts for the worker-runtime if not specified or set in local.settings.json. Use this option when you plan to deploy a containerized function app and the project already exists. |
--force |
Initialize the project even when there are existing files in the project. This setting overwrites existing files with the same name. Other files in the project folder aren't affected. |
--language |
Initializes a language-specific project. Currently supported when --worker-runtime set to node . Options are typescript and javascript . You can also use --worker-runtime javascript or --worker-runtime typescript . |
--managed-dependencies |
Installs managed dependencies. Currently, only the PowerShell worker runtime supports this functionality. |
--model |
Sets the desired programming model for a target language when more than one model is available. Supported options are V1 and V2 for Python and V3 and V4 for Node.js. For more information, see the Python developer guide and the Node.js developer guide, respectively. |
--source-control |
Controls whether a git repository is created. By default, a repository isn't created. When true , a repository is created. |
--worker-runtime |
Sets the language runtime for the project. Supported values are: csharp , dotnet , dotnet-isolated , javascript ,node (JavaScript), powershell , python , and typescript . For Java, use Maven. To generate a language-agnostic project with just the project files, use custom . When not set, you're prompted to choose your runtime during initialization. |
--target-framework |
Sets the target framework for the function app project. Valid only with --worker-runtime dotnet-isolated . Supported values are: net9.0 (preview), net8.0 (default), net6.0 , and net48 (.NET Framework 4.8). |
Note
When you use either --docker
or --docker-only
options, Core Tools automatically create the Dockerfile for C#, JavaScript, Python, and PowerShell functions. For Java functions, you must manually create the Dockerfile. For more information, see Creating containerized function apps.
func logs
Gets logs for functions running in a Kubernetes cluster.
func logs --platform kubernetes --name <APP_NAME>
The func logs
action supports the following options:
Option | Description |
---|---|
--platform |
Hosting platform for the function app. Supported options: kubernetes . |
--name |
Function app name in Azure. |
To learn more, see Azure Functions on Kubernetes with KEDA.
func new
Creates a new function in the current project based on a template.
func new
When you run func new
without the --template
option, you're prompted to choose a template. In version 1.x, you're also required to choose the language.
The func new
action supports the following options:
Option | Description |
---|---|
--authlevel |
Lets you set the authorization level for an HTTP trigger. Supported values are: function , anonymous , admin . Authorization isn't enforced when running locally. For more information, see Authorization level. |
--csx |
(Version 2.x and later versions.) Generates the same C# script (.csx) templates used in version 1.x and in the portal. |
--language , -l |
The template programming language, such as C#, F#, or JavaScript. This option is required in version 1.x. In version 2.x and later versions, you don't use this option because the language is defined by the worker runtime. |
--name , -n |
The function name. |
--template , -t |
Use the func templates list command to see the complete list of available templates for each supported language. |
To learn more, see Create a function.
func run
Version 1.x only.
Enables you to invoke a function directly, which is similar to running a function using the Test tab in the Azure portal. This action is only supported in version 1.x. For later versions, use func start
and call the function endpoint directly.
func run
The func run
action supports the following options:
Option | Description |
---|---|
--content |
Inline content passed to the function. |
--debug |
Attach a debugger to the host process before running the function. |
--file |
The file name to use as content. |
--no-interactive |
Doesn't prompt for input, which is useful for automation scenarios. |
--timeout |
Time to wait (in seconds) until the local Functions host is ready. |
For example, to call an HTTP-triggered function and pass content body, run the following command:
func run MyHttpTrigger --content '{\"name\": \"Azure\"}'
func start
Starts the local runtime host and loads the function project in the current folder.
The specific command depends on the runtime version.
func start
func start
supports the following options:
Option | Description |
---|---|
--cert |
The path to a .pfx file that contains a private key. Only supported with --useHttps . |
--cors |
A comma-separated list of CORS origins, with no spaces. |
--cors-credentials |
Allow cross-origin authenticated requests using cookies and the Authentication header. |
--dotnet-isolated-debug |
When set to true , pauses the .NET worker process until a debugger is attached from the .NET isolated project being debugged. |
--enable-json-output |
Emits console logs as JSON, when possible. |
--enableAuth |
Enable full authentication handling pipeline, with authorization requirements. |
--functions |
A space-separated list of functions to load. |
--language-worker |
Arguments to configure the language worker. For example, you can enable debugging for language worker by providing debug port and other required arguments. |
--no-build |
Don't build the current project before running. For .NET class projects only. The default is false . |
--password |
Either the password or a file that contains the password for a .pfx file. Only used with --cert . |
--port |
The local port to listen on. Default value: 7071. |
--timeout |
The timeout for the Functions host to start, in seconds. Default: 20 seconds. |
--useHttps |
Bind to https://localhost:{port} rather than to http://localhost:{port} . By default, this option creates a trusted certificate on your computer. |
With the project running, you can verify individual function endpoints.
func azure functionapp fetch-app-settings
Gets settings from a specific function app.
func azure functionapp fetch-app-settings <APP_NAME>
For more information, see Download application settings.
Settings are downloaded into the local.settings.json file for the project. On-screen values are masked for security. You can protect settings in the local.settings.json file by enabling local encryption.
func azure functionapp list-functions
Returns a list of the functions in the specified function app.
func azure functionapp list-functions <APP_NAME>
func azure functionapp logstream
Connects the local command prompt to streaming logs for the function app in Azure.
func azure functionapp logstream <APP_NAME>
The default timeout for the connection is 2 hours. You can change the timeout by adding an app setting named SCM_LOGSTREAM_TIMEOUT, with a timeout value in seconds. Not yet supported for Linux apps in the Consumption plan. For these apps, use the --browser
option to view logs in the portal.
The deploy
action supports the following options:
Option | Description |
---|---|
--browser |
Open Azure Application Insights Live Stream for the function app in the default browser. |
For more information, see Enable streaming execution logs in Azure Functions.
func azure functionapp publish
Deploys a Functions project to an existing function app resource in Azure.
func azure functionapp publish <APP_NAME>
For more information, see Deploy project files.
The following publish options apply, based on version:
Option | Description |
---|---|
--access-token |
Lets you use a specific access token when performing authenticated azure actions. |
--access-token-stdin |
Reads a specific access token from a standard input. Use this when reading the token directly from a previous command such as az account get-access-token . |
--additional-packages |
List of packages to install when building native dependencies. For example: python3-dev libevent-dev . |
--build , -b |
Performs build action when deploying to a Linux function app. Accepts: remote and local . |
--build-native-deps |
Skips generating the .wheels folder when publishing Python function apps. |
--csx |
Publish a C# script (.csx) project. |
--dotnet-cli-params |
When publishing compiled C# (.csproj) functions, the core tools calls dotnet build --output bin/publish . Any parameters passed to this are appended to the command line. |
--force |
Ignore prepublishing verification in certain scenarios. |
--list-ignored-files |
Displays a list of files that are ignored during publishing, which is based on the .funcignore file. |
--list-included-files |
Displays a list of files that are published, which is based on the .funcignore file. |
--management-url |
Sets the management URL for your cloud. Use this when running in a sovereign cloud. |
--no-build |
Project isn't built during publishing. For Python, pip install isn't performed. |
--nozip |
Turns the default Run-From-Package mode off. |
--overwrite-settings -y |
Suppress the prompt to overwrite app settings when --publish-local-settings -i is used. |
--publish-local-settings -i |
Publish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists. If you're using a local storage emulator, first change the app setting to an actual storage connection. |
--publish-settings-only , -o |
Only publish settings and skip the content. Default is prompt. |
--slot |
Optional name of a specific slot to which to publish. |
--subscription |
Sets the default subscription to use. |
func azure storage fetch-connection-string
Gets the connection string for the specified Azure Storage account.
func azure storage fetch-connection-string <STORAGE_ACCOUNT_NAME>
For more information, see Download a storage connection string.
func azurecontainerapps deploy
Deploys a containerized function app to an Azure Container Apps environment. Both the storage account used by the function app and the environment must already exist. For more information, see Azure Container Apps hosting of Azure Functions.
func azurecontainerapps deploy --name <APP_NAME> --environment <ENVIRONMENT_NAME> --storage-account <STORAGE_CONNECTION> --resource-group <RESOURCE_GROUP> --image-name <IMAGE_NAME> --registry-server <REGISTRY_SERVER> --registry-username <USERNAME> --registry-password <PASSWORD>
The following deployment options apply:
Option | Description |
---|---|
--access-token |
Lets you use a specific access token when performing authenticated azure actions. |
--access-token-stdin |
Reads a specific access token from a standard input. Use this when reading the token directly from a previous command such as az account get-access-token . |
--environment |
The name of an existing Container Apps environment. |
--image-build |
When set to true , skips the local Docker build. |
--image-name |
The image name of an existing container in a container registry. The image name includes the tag name. |
--location |
Region for the deployment. Ideally, this is the same region as the environment and storage account resources. |
--management-url |
Sets the management URL for your cloud. Use this when running in sovereign cloud. |
--name |
The name used for the function app deployment in the Container Apps environment. This same name is also used when managing the function app in the portal. The name should be unique in the environment. |
--registry |
When set, a Docker build is run and the image is pushed to the registry set in --registry . You can't use --registry with --image-name . For Docker Hub, also use --registry-username . |
--registry-password |
The password or token used to retrieve the image from a private registry. |
--registry-username |
The username used to retrieve the image from a private registry. |
--resource-group |
The resource group in which to create the functions-related resources. |
--storage-account |
The connection string for the storage account to be used by the function app. |
--subscription |
Sets the default subscription to use. |
--worker-runtime |
Sets the runtime language of the function app. This parameter is only used with --image-name and --image-build , otherwise the language is determined during the local build. Supported values are: dotnet , dotnetIsolated , node , python , powershell , and custom (for customer handlers). |
Important
Storage connection strings and other service credentials are important secrets. Make sure to securely store any script files using func azurecontainerapps deploy
and don't store them in any publicly accessible source control.
func deploy
The func deploy
command is deprecated. Instead use func kubernetes deploy
.
func durable delete-task-hub
Deletes all storage artifacts in the Durable Functions task hub.
func durable delete-task-hub
The delete-task-hub
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--task-hub-name |
Optional name of the Durable Task Hub to use. |
To learn more, see the Durable Functions documentation.
func durable get-history
Returns the history of the specified orchestration instance.
func durable get-history --id <INSTANCE_ID>
The get-history
action supports the following options:
Option | Description |
---|---|
--id |
Specifies the ID of an orchestration instance (required). |
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--task-hub-name |
Optional name of the Durable Task Hub to use. |
To learn more, see the Durable Functions documentation.
func durable get-instances
Returns the status of all orchestration instances. Supports paging using the top
parameter.
func durable get-instances
The get-instances
action supports the following options:
Option | Description |
---|---|
--continuation-token |
Optional token that indicates a specific page/section of the requests to return. |
--connection-string-setting |
Optional name of the app setting that contains the storage connection string to use. |
--created-after |
Optionally, get the instances created after this date/time (UTC). All ISO 8601 formatted datetimes are accepted. |
--created-before |
Optionally, get the instances created before a specific date/time (UTC). All ISO 8601 formatted datetimes are accepted. |
--runtime-status |
Optionally, get the instances whose status match a specific status, including running , completed , and failed . You can provide one or more space-separated statues. |
--top |
Optionally limit the number of records returned in a given request. |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func durable get-runtime-status
Returns the status of the specified orchestration instance.
func durable get-runtime-status --id <INSTANCE_ID>
The get-runtime-status
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--id |
Specifies the ID of an orchestration instance (required). |
--show-input |
When set, the response contains the input of the function. |
--show-output |
When set, the response contains the execution history. |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func durable purge-history
Purge orchestration instance state, history, and blob storage for orchestrations older than the specified threshold.
func durable purge-history
The purge-history
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--created-after |
Optionally delete the history of instances created after this date/time (UTC). All ISO 8601 formatted datetime values are accepted. |
--created-before |
Optionally delete the history of instances created before this date/time (UTC). All ISO 8601 formatted datetime values are accepted. |
--runtime-status |
Optionally delete the history of instances whose status match a specific status, including completd , terminated , canceled , and failed . You can provide one or more space-separated statues. If you don't include --runtime-status , instance history is deleted regardless of status. |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func durable raise-event
Raises an event to the specified orchestration instance.
func durable raise-event --event-name <EVENT_NAME> --event-data <DATA>
The raise-event
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--event-data |
Data to pass to the event, either inline or from a JSON file (required). For files, prefix the path to the file with an ampersand (@ ), such as @path/to/file.json . |
--event-name |
Name of the event to raise (required). |
--id |
Specifies the ID of an orchestration instance (required). |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func durable rewind
Rewinds the specified orchestration instance.
func durable rewind --id <INSTANCE_ID> --reason <REASON>
The rewind
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--id |
Specifies the ID of an orchestration instance (required). |
--reason |
Reason for rewinding the orchestration (required). |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func durable start-new
Starts a new instance of the specified orchestrator function.
func durable start-new --id <INSTANCE_ID> --function-name <FUNCTION_NAME> --input <INPUT>
The start-new
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--function-name |
Name of the orchestrator function to start (required). |
--id |
Specifies the ID of an orchestration instance (required). |
--input |
Input to the orchestrator function, either inline or from a JSON file (required). For files, prefix the path to the file with an ampersand (@ ), such as @path/to/file.json . |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func durable terminate
Stops the specified orchestration instance.
func durable terminate --id <INSTANCE_ID> --reason <REASON>
The terminate
action supports the following options:
Option | Description |
---|---|
--connection-string-setting |
Optional name of the setting containing the storage connection string to use. |
--id |
Specifies the ID of an orchestration instance (required). |
--reason |
Reason for stopping the orchestration (required). |
--task-hub-name |
Optional name of the Durable Functions task hub to use. |
To learn more, see the Durable Functions documentation.
func extensions install
Manually installs Functions extensions in a non-.NET project or in a C# script project.
func extensions install --package Microsoft.Azure.WebJobs.Extensions.<EXTENSION> --version <VERSION>
The install
action supports the following options:
Option | Description |
---|---|
--configPath |
Path of the directory containing extensions.csproj file. |
--csx |
Supports C# scripting (.csx) projects. |
--force |
Update the versions of existing extensions. |
--output |
Output path for the extensions. |
--package |
Identifier for a specific extension package. When not specified, all referenced extensions are installed, as with func extensions sync . |
--source |
NuGet feed source when not using NuGet.org. |
--version |
Extension package version. |
The following example installs version 5.0.1 of the Event Hubs extension in the local project:
func extensions install --package Microsoft.Azure.WebJobs.Extensions.EventHubs --version 5.0.1
The following considerations apply when using func extensions install
:
For compiled C# projects (both in-process and isolated worker process), instead use standard NuGet package installation methods, such as
dotnet add package
.To manually install extensions using Core Tools, you must have the .NET 6.0 SDK installed.
When possible, you should instead use extension bundles. The following are some reasons why you might need to install extensions manually:
- You need to access a specific version of an extension not available in a bundle.
- You need to access a custom extension not available in a bundle.
- You need to access a specific combination of extensions not available in a single bundle.
Before you can manually install extensions, you must first remove the
extensionBundle
object from the host.json file that defines the bundle. No action is taken when an extension bundle is already set in your host.json file.The first time you explicitly install an extension, a .NET project file named extensions.csproj is added to the root of your app project. This file defines the set of NuGet packages required by your functions. While you can work with the NuGet package references in this file, Core Tools lets you install extensions without having to manually edit this C# project file.
func extensions sync
Installs all extensions added to the function app.
The sync
action supports the following options:
Option | Description |
---|---|
--configPath |
Path of the directory containing extensions.csproj file. |
--csx |
Supports C# scripting (.csx) projects. |
--output |
Output path for the extensions. |
Regenerates a missing extensions.csproj file. No action is taken when an extension bundle is defined in your host.json file.
func kubernetes deploy
Deploys a Functions project as a custom docker container to a Kubernetes cluster.
func kubernetes deploy
This command builds your project as a custom container and publishes it to a Kubernetes cluster. Custom containers must have a Dockerfile. To create an app with a Dockerfile, use the --dockerfile
option with the func init
command.
The following Kubernetes deployment options are available:
Option | Description |
---|---|
--dry-run |
Optionally displays the deployment template, without execution. |
--config-map-name |
Optional name of an existing config map with function app settings to use in the deployment. Requires --use-config-map . The default behavior is to create settings based on the Values object in the local.settings.json file. |
--cooldown-period |
The cool-down period (in seconds) after all triggers are no longer active before the deployment scales back down to zero, with a default of 300 s. |
--ignore-errors |
Continues the deployment after a resource returns an error. The default behavior is to stop on error. |
--image-name |
The name of the image to use for the pod deployment and from which to read functions. |
--keda-version |
Sets the version of KEDA to install. Valid options are: v1 and v2 (default). |
--keys-secret-name |
The name of a Kubernetes Secrets collection to use for storing access keys. |
--max-replicas |
Sets the maximum replica count for to which the Horizontal Pod Autoscaler (HPA) scales. |
--min-replicas |
Sets the minimum replica count below which HPA won't scale. |
--mount-funckeys-as-containervolume |
Mounts the access keys as a container volume. |
--name |
The name used for the deployment and other artifacts in Kubernetes. |
--namespace |
Sets the Kubernetes namespace to which to deploy, which defaults to the default namespace. |
--no-docker |
Functions are read from the current directory instead of from an image. Requires mounting the image filesystem. |
--registry |
When set, a Docker build is run and the image is pushed to a registry of that name. You can't use --registry with --image-name . For Docker, use your username. |
--polling-interval |
The polling interval (in seconds) for checking non-HTTP triggers, with a default of 30s. |
--pull-secret |
The secret used to access private registry credentials. |
--secret-name |
The name of an existing Kubernetes Secrets collection that contains function app settings to use in the deployment. The default behavior is to create settings based on the Values object in the local.settings.json file. |
--show-service-fqdn |
Displays the URLs of HTTP triggers with the Kubernetes FQDN instead of the default behavior of using an IP address. |
--service-type |
Sets the type of Kubernetes Service. Supported values are: ClusterIP , NodePort , and LoadBalancer (default). |
--use-config-map |
Use a ConfigMap object (v1) instead of a Secret object (v1) to configure function app settings. The map name is set using --config-map-name . |
Core Tools uses the local Docker CLI to build and publish the image. Make sure your Docker is already installed locally. Run the docker login
command to connect to your account.
To learn more, see Deploying a function app to Kubernetes.
func kubernetes install
Installs KEDA in a Kubernetes cluster.
func kubernetes install
Installs KEDA to the cluster defined in the kubectl config file.
The install
action supports the following options:
Option | Description |
---|---|
--dry-run |
Displays the deployment template, without execution. |
--keda-version |
Sets the version of KEDA to install. Valid options are: v1 and v2 (default). |
--namespace |
Supports installation to a specific Kubernetes namespace. When not set, the default namespace is used. |
To learn more, see Managing KEDA and functions in Kubernetes.
func kubernetes remove
Removes KEDA from the Kubernetes cluster defined in the kubectl config file.
func kubernetes remove
Removes KEDA from the cluster defined in the kubectl config file.
The remove
action supports the following options:
Option | Description |
---|---|
--namespace |
Supports uninstall from a specific Kubernetes namespace. When not set, the default namespace is used. |
To learn more, see Uninstalling KEDA from Kubernetes.
func settings add
Adds a new setting to the Values
collection in the local.settings.json file.
func settings add <SETTING_NAME> <VALUE>
Replace <SETTING_NAME>
with the name of the app setting and <VALUE>
with the value of the setting.
The add
action supports the following option:
Option | Description |
---|---|
--connectionString |
Adds the name-value pair to the ConnectionStrings collection instead of the Values collection. Only use the ConnectionStrings collection when required by certain frameworks. To learn more, see local.settings.json file. |
func settings decrypt
Decrypts previously encrypted values in the Values
collection in the local.settings.json file.
func settings decrypt
Connection string values in the ConnectionStrings
collection are also decrypted. In local.settings.json, IsEncrypted
is also set to false
. Encrypt local settings to reduce the risk of leaking valuable information from local.settings.json. In Azure, application settings are always stored encrypted.
func settings delete
Removes an existing setting from the Values
collection in the local.settings.json file.
func settings delete <SETTING_NAME>
Replace <SETTING_NAME>
with the name of the app setting and <VALUE>
with the value of the setting.
The delete
action supports the following option:
Option | Description |
---|---|
--connectionString |
Removes the name-value pair from the ConnectionStrings collection instead of from the Values collection. |
func settings encrypt
Encrypts the values of individual items in the Values
collection in the local.settings.json file.
func settings encrypt
Connection string values in the ConnectionStrings
collection are also encrypted. In local.settings.json, IsEncrypted
is also set to true
, which specifies that the local runtime decrypts settings before using them. Encrypt local settings to reduce the risk of leaking valuable information from local.settings.json. In Azure, application settings are always stored encrypted.
func settings list
Outputs a list of settings in the Values
collection in the local.settings.json file.
func settings list
Connection strings from the ConnectionStrings
collection are also output. By default, values are masked for security. You can use the --showValue
option to display the actual value.
The list
action supports the following option:
Option | Description |
---|---|
--showValue |
Shows the actual unmasked values in the output. |
func templates list
Lists the available function (trigger) templates.
The list
action supports the following option:
Option | Description |
---|---|
--language |
Language for which to filter returned templates. Default is to return all languages. |