How to configure proxies for the Azure SDK for Python
If your organization requires the use of a proxy server to access internet resources, you'll need to set an environment variable with the proxy server information to use the Azure SDK for Python. Setting the environment variables (HTTP_PROXY and HTTPS_PROXY) causes the Azure SDK for Python to use the proxy server at run time.
A proxy server URL has of the form http[s]://[username:password@]<ip_address_or_domain>:<port>/
where the username and password combination is optional.
You can then configure a proxy globally by using environment variables, or you can specify a proxy by passing an argument named proxies
to an individual client constructor or operation method.
Global configuration
To configure a proxy globally for your script or app, define HTTP_PROXY
or HTTPS_PROXY
environment variables with the server URL. These variables work with any version of the Azure libraries. Note that HTTPS_PROXY
doesn't mean HTTPS
proxy, but the proxy for https://
requests.
These environment variables are ignored if you pass the parameter use_env_settings=False
to a client object constructor or operation method.
Set from the command line
rem Non-authenticated HTTP server:
set HTTP_PROXY=http://10.10.1.10:1180
rem Authenticated HTTP server:
set HTTP_PROXY=http://username:password@10.10.1.10:1180
rem Non-authenticated HTTPS server:
set HTTPS_PROXY=http://10.10.1.10:1180
rem Authenticated HTTPS server:
set HTTPS_PROXY=http://username:password@10.10.1.10:1180
Set in Python code
You can set proxy settings using environment variables, with no custom configuration necessary.
import os
os.environ["HTTP_PROXY"] = "http://10.10.1.10:1180"
# Alternate URL and variable forms:
# os.environ["HTTP_PROXY"] = "http://username:password@10.10.1.10:1180"
# os.environ["HTTPS_PROXY"] = "http://10.10.1.10:1180"
# os.environ["HTTPS_PROXY"] = "http://username:password@10.10.1.10:1180"
Custom configuration
Set in Python code per-client or per-method
For custom configuration, you can specify a proxy for a specific client object or operation method. Specify a proxy server with an argument named proxies
.
For example, the following code from the article Example: use Azure storage specifies an HTTPS proxy with user credentials with the BlobClient
constructor. In this case, the object comes from the azure.storage.blob library, which is based on azure.core.
from azure.identity import DefaultAzureCredential
# Import the client object from the SDK library
from azure.storage.blob import BlobClient
credential = DefaultAzureCredential()
storage_url = "https://<storageaccountname>.blob.core.windows.net"
blob_client = BlobClient(storage_url, container_name="blob-container-01",
blob_name="sample-blob.txt", credential=credential,
proxies={ "https": "https://username:password@10.10.1.10:1180" }
)
# Other forms that the proxy URL might take:
# proxies={ "http": "http://10.10.1.10:1180" }
# proxies={ "http": "http://username:password@10.10.1.10:1180" }
# proxies={ "https": "https://10.10.1.10:1180" }