这是有效的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类。
答案 0 :(得分:1)
正如您提到的那样,blobService客户端对象不会验证帐户凭据。有关更多信息,我们可以从github获取python source code。
以下代码是源代码的摘录。没有向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存储服务器并检查响应。如果您坚持这样做,我建议您可以编写一个测试方法以自己实现。