Skip to content
Latchkey

Azure Functions "AzureWebJobsStorage is missing" in CI

The Functions host needs a storage account connection (AzureWebJobsStorage) for triggers, leases, and singleton locks. When it is missing or empty in CI, non-HTTP triggers fail to start and the host may refuse to run.

What this error means

The host fails at startup with "Value cannot be null. (Parameter 'AzureWebJobsStorage')" or "The 'AzureWebJobsStorage' connection string is missing", especially with timer or queue triggers.

azure
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerTrigger'.
Microsoft.WindowsAzure.Storage: The 'AzureWebJobsStorage' connection string is missing.

Common causes

No AzureWebJobsStorage set in the CI environment

local.settings.json is gitignored and not present in CI, and no app setting or env var supplies the storage connection.

Non-HTTP triggers require storage

Timer, queue, and blob triggers need a storage backend for leases; without it the host cannot index them.

How to fix it

Provide a storage connection in CI

Set AzureWebJobsStorage from a secret, or point it at the Azurite emulator for local/integration runs.

.github/workflows/ci.yml
env:
  AzureWebJobsStorage: ${{ secrets.AZURE_WEBJOBS_STORAGE }}

Use the Azurite emulator for integration tests

Run Azurite and use the well-known development connection string so triggers can bind without a real account.

Terminal
AzureWebJobsStorage=UseDevelopmentStorage=true

How to prevent it

  • Inject AzureWebJobsStorage from a secret in CI.
  • Run Azurite for integration tests that use non-HTTP triggers.
  • Do not rely on gitignored local.settings.json in CI.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →