Azure Blob Storageは、Azureのオブジェクトストレージサービスです。Pythonを使用してAzure Blob Storageにデータをアップロードする方法を解説します。なお、Azure上でのストレージアカウントの作成について説明しませんので、必要な方はこちらのサイトを参考にして下さい。
ストレージ アカウントを作成する - Azure Storage | Microsoft Learn
1. 環境の準備: Azure Storage SDKのインストール
Azure Storage SDKをインストールします。以下のコマンドを使用してインストールできます。
pip install azure-storage-blob
2. Pythonでの実装
1. モジュールのインポート
必要なAzure Blob Storageのクライアントと、ファイル操作のためのPython標準ライブラリであるos
モジュールをインポートします。
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient import os
2. Azure Storageアカウントの接続情報の設定
Azure Blob Storageへの接続に必要な情報を設定します。connection_string
はAzure Storageアカウントの接続文字列です。container_name
はBlobを保存するコンテナの名前、local_file_path
はアップロードするローカルファイルのパス、blob_name
は Azure Blob Storage内でのBlobの名前です。
connection_string = "<your_connection_string>" container_name = "<your_container_name>" local_file_path = "<path_to_local_file>" blob_name = "<name_of_blob_in_storage>"
3. BlobServiceClientの作成
from_connection_string()
メソッドを使用して、指定された接続文字列を使用してBlobServiceClient
オブジェクトを作成します。このオブジェクトを使用してBlob Storageと通信します。
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
4. コンテナーの作成
指定した名前のコンテナがまだ存在しない場合、create_container()
メソッドを使用してコンテナを作成します。
すでにコンテナーを作成している場合はこの処理は必要ありません。
container_client = blob_service_client.get_container_client(container_name) container_client.create_container()
5. Blobのアップロード
get_blob_client()
メソッドを使用して、アップロードするBlobのクライアントを取得します。その後、upload_blob()
メソッドを使用して、指定されたデータをBlobにアップロードします。ここでは、ローカルファイルをバイナリモードで開き、そのデータをアップロードしています。
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name) with open(local_file_path, "rb") as data: blob_client.upload_blob(data)
6. 処理の完了の通知
ファイルのアップロードが完了したことを通知します。ログへの記録やメッセージングサービスの接続など必要に応じて実装して下さい。
print("ファイルがアップロードされました。")
以上がPythonでAzure Blob Storageにファイルをアップロードする実装です。
3. 完成したコード
以下が上記で作成したコードの完成形です。コンテナーの作成は不要な場合は除いて実装して下さい。 また、業務で実際に運用する際は接続情報をコード内に直接書かず、環境変数で設定するなどセキュリティに注意して下さい。
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient import os # Azure Storageアカウントの接続情報 connection_string = "<your_connection_string>" container_name = "<your_container_name>" local_file_path = "<path_to_local_file>" blob_name = "<name_of_blob_in_storage>" # BlobServiceClientの作成 blob_service_client = BlobServiceClient.from_connection_string(connection_string) # コンテナーの作成 container_client = blob_service_client.get_container_client(container_name) container_client.create_container() # Blobのアップロード blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name) with open(local_file_path, "rb") as data: blob_client.upload_blob(data) print("ファイルがアップロードされました。")
まとめ
PythonでAzure Blob Storageにファイルをアップロードする方法を実装を含めて解説しました。定期的なジョブで実行して、ログの転送やファイルのバックアップなどに利用することが可能です。
[PR]