Ошибка «HTTP-заголовки не в правильном формате» при создании контейнера Azure с использованием Python SDK

#python #azure #azure-storage #azure-sdk-python

#python #azure #azure-хранилище #azure-sdk-python

Вопрос:

Я пытаюсь создать контейнер Azure blob с использованием Python SDK с помощью приведенного ниже кода. В ответе я получаю «ErrorCode: InvalidHeaderValue».

Я использую строку подключения из раздела «Ключи доступа» на портале Azure учетной записи хранилища. И я не думаю, что проблема в соединении, поскольку эта строка работает нормально blob_service_client = BlobServiceClient.from_connection_string(connection_string) .

Для этого я использовал чистый venv, и ниже приведены версии библиотеки azure-core == 1.10.0 azure-storage-blob == 12.7.1

 import os
import yaml
from azure.storage.blob import ContainerClient, BlobServiceClient

def load_config():
    dir_root = os.path.dirname(os.path.abspath(__file__))
    with open (dir_root   "/config.yaml", "r") as yamlfile:
        return yaml.load(yamlfile, Loader=yaml.FullLoader)

config = load_config()
connection_string = config['azure_storage_connectionstring']

blob_service_client = BlobServiceClient.from_connection_string(connection_string)
blob_service_client.create_container('testing')
 
 Traceback (most recent call last):
  File "/Users/anojshrestha/Documents/codes/gen2lake/project_azure/lib/python3.7/site-packages/azure/storage/blob/_container_client.py", line 292, in create_container
    **kwargs)
  File "/Users/anojshrestha/Documents/codes/gen2lake/project_azure/lib/python3.7/site-packages/azure/storage/blob/_generated/operations/_container_operations.py", line 134, in create
    raise HttpResponseError(response=response, model=error)
azure.core.exceptions.HttpResponseError: Operation returned an invalid status 'The value for one of the HTTP headers is not in the correct format.'

During handling of the above exception, another exception occurred:
.......
azure.core.exceptions.HttpResponseError: The value for one of the HTTP headers is not in the correct format.
RequestId:5X-601e-XXXX00ab-5368-f0c05f000000
Time:2021-01-22T02:43:22.3983063Z
ErrorCode:InvalidHeaderValue
Error:None
HeaderName:x-ms-version
HeaderValue:2020-04-08```
 

Комментарии:

1. Не могли бы вы включить журнал для получения подробного сообщения об ошибке: docs.microsoft.com/en-us/azure/developer/python /… ?

2. Здесь та же история. Похоже на ошибку в azure-storage-blob. Я вернулся к версии 12.6.0, и это устранило проблему.

3. Спасибо @kopaczew. Вы правы! Откат версии исправил мою проблему. Я посмотрю, есть ли существующая ошибка.

Ответ №1:

Вам не нужно переустанавливать. Вы можете обойти эту проблему, установив свою api_version переменную при создании экземпляра любого из клиентов.

Например:

 blob = BlobServiceClient(
    account_url="https://MY_BLOB_STORAGE.blob.core.windows.net",
    credential="MY_PRIMARY_KEY",
    api_version="2019-12-12", #or api_version='2020-02-10'
)
 

https://github.com/Azure/azure-sdk-for-python/issues/16193

Комментарии:

1. Спасибо @Tamer! Похоже, ваш ответ был кем-то проверен. Я выберу ваш ответ.

Ответ №2:

Как упоминалось @kopaczew, возврат azure_storage_blob к версии 12.6.0 устранил мою проблему. Похоже, это какая-то ошибка с последней библиотекой azure-storage-blob. К сожалению, вышеупомянутая проблема не ограничивается вызовом create_container. Отвечая на мой собственный вопрос, если это поможет кому-то другому в подобной ситуации.

Как я исправил свою проблему:

  1. Удалена моя предыдущая среда venv (сама переустановка вызывала некоторые проблемы при импорте библиотеки Azure)
  2. Создан новый venv
  3. pip install azure-storage-bob==12.6.0