PythonでAzure Blob Storageにファイルをアップロードする方法

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]

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com