PythonでAzureストレージにblobコンテナーを作成しようとしています。 [〜#〜] msdn [〜#〜] で提供されるドキュメントを使用して、Azure Blobストレージをpythonプログラムに統合します。
これがコードです:
_# Quick start code goes here
connectStr = <connString>
blobServiceClient = BlobServiceClient.from_connection_string(connectStr)
containerName = "quickstart-azureStorage"
localFileName = "quickstart-1.txt"
blobClient = blobServiceClient.create_container(containerName)
_
create_container()
は初めてblobコンテナーを作成していますが、2回目にエラーが発生します。
BLOBコンテナーが存在しない場合は作成します。存在する場合は、既存のblobコンテナーを使用します
Azureストレージライブラリバージョン12.0.0を使用しています。つまり、_Azure-storage-blob==12.0.0
_
以下のコードを使用して、コンテナーに存在するblobに対してそれを実行できることはわかっていますが、コンテナー自体を作成するためのものが見つかりませんでした。
Blobが存在するかどうかを確認します。
_blobClient = blobServiceClient.get_blob_client(container=containerName, blob=localFileName)
if blobClient:
print("blob already exists")
else:
print("blob not exists")
_
例外:
_RequestId:<requestId>
Time:2019-12-04T06:59:03.1459600Z
ErrorCode:ContainerAlreadyExists
Error:None
_
ライブラリの12.0.0バージョンでは、可能な解決策はget_container_properties()関数を使用することです。これは、コンテナーが存在しない場合にエラーになります。
container = ContainerClient.from_connection_string(connectStr, 'foo')
try:
container_properties = container.get_container_properties()
# Container foo exists. You can now use it.
except Exception as e:
# Container foo does not exist. You can now create it.
print(e)
コンテナが存在しない場合は、次のメッセージが表示されます。
指定されたコンテナは存在しません。
ErrorCode:ContainerNotFound
エラー:なし
_create_container
_ のドキュメントを見ると、次のように記載されています。
指定されたアカウントで新しいコンテナを作成します。同じ名前のコンテナがすでに存在する場合、操作は失敗します。
これを克服する1つの可能な解決策は、コンテナーを作成してエラーをキャッチすることです。コンテナがすでに存在する場合、Conflict (409)
エラーコードが表示されます。これに基づいて、コンテナが存在するかどうかを判断できます。
SDKのダウングレードがオプションの場合は、_version 2.1
_ of Python Storage SDKを使用できます。デフォルトの動作では、コンテナが存在する場合に例外をスローしません。コードを確認できます_create_container
_の場合: https://github.com/Azure/azure-storage-python/blob/master/Azure-storage-blob/Azure/storage/blob/baseblobservice.py 。