#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'
)
Комментарии:
1. Спасибо @Tamer! Похоже, ваш ответ был кем-то проверен. Я выберу ваш ответ.
Ответ №2:
Как упоминалось @kopaczew, возврат azure_storage_blob к версии 12.6.0 устранил мою проблему. Похоже, это какая-то ошибка с последней библиотекой azure-storage-blob. К сожалению, вышеупомянутая проблема не ограничивается вызовом create_container. Отвечая на мой собственный вопрос, если это поможет кому-то другому в подобной ситуации.
Как я исправил свою проблему:
- Удалена моя предыдущая среда venv (сама переустановка вызывала некоторые проблемы при импорте библиотеки Azure)
- Создан новый venv
pip install azure-storage-bob==12.6.0