Как проверить аутентификацию учетных записей хранения Microsoft Azure при вызове с Python SDK

Вот рабочий код Python.

from azure.storage.blob import BlockBlobService
accountName, key='stagingData', 'vZfqyMyHT3A=='
blobService=BlockBlobService(account_name=accountName, account_key=key)

Кажется, объект клиента blobService создается, даже если я передаю неверные учетные данные. Он не авторизован, и ошибка появляется только позже, когда я пытаюсь получить доступ к некоторым данным, возможно, из какого-то другого файла или даже когда другие пользователи пытаются использовать его. Есть ли способ assert прямо на месте, были ли предоставлены правильные учетные данные и если нет, остановить выполнение? Для справки я пробовал dir(blobService) и это показало 121 методов и атрибутов. Те, которые казались разумными из названия, показывают аналогичные результаты, независимо от того, была ли учетная запись на самом деле аутентифицирована или нет.

Почти каждый второй вызов API, который использует какой-то токен доступа, позволяет сразу же узнать, является ли токен недействительным, вызывая какое-то исключение. Поэтому я надеюсь, что есть способ проверить это и для класса BlockBlobService.

1 ответ

Как вы упомянули, клиентский объект blobService не проверяет учетные данные учетной записи. Для получения дополнительной информации мы можем получить исходный код python из github.

Следующий код является фрагментом из исходного кода. Нет запроса на стороне сервера хранения Azure. Так что он проверяет учетные данные учетной записи.

def create_block_blob_service(self):
        '''
        Creates a BlockBlobService object with the settings specified in the 
        CloudStorageAccount.
        :return: A service object.
        :rtype: :class:`~azure.storage.blob.blockblobservice.BlockBlobService`
        '''
        try:
            from azure.storage.blob.blockblobservice import BlockBlobService
            return BlockBlobService(self.account_name, self.account_key,
                                    sas_token=self.sas_token,
                                    is_emulated=self.is_emulated,
                                    endpoint_suffix=self.endpoint_suffix)
        except ImportError:
            raise Exception('The package azure-storage-blob is required. '
                            + 'Please install it using "pip install azure-storage-blob"')

Если мы хотим проверить учетные данные учетной записи. Нам нужно отправить запрос на сервер хранения Azure и проверить ответ. Если вы продолжаете делать это, я рекомендую вам написать тестовый метод, чтобы реализовать его самостоятельно.

Другие вопросы по тегам