In my Azure Function, I have specified an Environment Variable/App Setting for a database connection string. I can use the Environment Variable when I run the Function locally on my Azure Data Science Virtual Machine using VS Code and Python.
However, when I deploy the Function to Azure, I get an error: KeyValue is None, meaning that it cannot find the Environment Variable for the connection string. See error:
Exception while executing function: Functions.matchmodel Result: Failure
Exception: KeyError: 'CONNECTIONSTRINGS:PDMPDBCONNECTIONSTRING'
Stack: File "/azure-functions
host/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py", line 315, in
_handle__invocation_request self.__run_sync_func, invocation_id, fi.func, args)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/azure-functions-host/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py",
line 434, in __run_sync_func
return func(**params)
File "/home/site/wwwroot/matchmodel/__init__.py", line 116, in main
File "/home/site/wwwroot/matchmodel/production/dataload.py", line 28, in query_dev_database
setting = os.environ["CONNECTIONSTRINGS:PDMPDBCONNECTIONSTRING"]
File "/usr/local/lib/python3.7/os.py", line 679, in __getitem__
raise KeyError(key) from None'
I have tried the following solutions:
Added "CONNECTIONSTRINGS" to specify the Environment Variable in the Python script (which made it work locally)
setting = os.environ["CONNECTIONSTRINGS:PDMPDBCONNECTIONSTRING"]
Used
logging.info(os.environ)
to output my Environment Variables in the console. My connection string is listed.Added the connection string as Application Setting in the Azure Function portal.
- Added the Connection String as Connection Strings in the Azure Function portal.
Does anyone have any other solutions that I can try?
CONNECTIONSTRINGS:
from the name of the environment variable.:
can cause issues, I believe mainly on Linux app service plans. Take care to remove it both in your code and in the application settings of the AppService.CONNECTIONSTRINGS:
in order to get it to run locally. It would not run locally until I added the key name.CONNECTIONSTRINGS:
. I had nested JSON and removed that. Now it runs locally with just"PDMPDBCONNECTIONSTRING"
. Trying to get it to run on Azure as Function still.