Azure Blob Storage と Python で作業を開始する

この記事では、Python 用 Azure Blob Storage クライアント ライブラリを使用して、Azure Blob Storage に接続する方法について説明します。 接続されると、コードは、Blob Storage サービスのコンテナー、BLOB、機能を使って動作できます。

API リファレンス | パッケージ (PyPi) | ライブラリのソース コード | サンプル | フィードバックを送信する

前提条件

プロジェクトの設定

このセクションでは、Python 用 Azure Blob Storage クライアント ライブラリを操作するためのプロジェクトの準備について説明します。

プロジェクト ディレクトリから、pip install コマンドを使用して、Azure Blob Storage と Azure ID のクライアント ライブラリのパッケージをインストールします。 Azure サービスへのパスワードレス接続には、azure-identity パッケージが必要です。

pip install azure-storage-blob azure-identity

次にコード ファイルを開き、必要な import ステートメントを追加します。 この例では、以下を .py ファイルに追加します。

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

BLOB クライアント ライブラリ情報:

  • azure.storage.blob: サービス、コンテナー、BLOB を操作するために使用できるプライマリ クラス ("クライアント オブジェクト") が含まれています。

Blob Storage へのアクセスを承認して接続する

アプリケーションを Blob Storage に接続するには、BlobServiceClient クラスのインスタンスを作成します。 このオブジェクトは、ストレージ アカウント レベルでデータ リソースを操作するための開始点となります。 それを使って、ストレージ アカウントとそのコンテナーを操作できます。 また、操作する必要があるリソースに応じて、サービス クライアントを使用してコンテナー クライアントまたは BLOB クライアントを作成することもできます。

クライアント オブジェクトの作成と管理の詳細については、「データ リソースを操作するクライアント オブジェクトを作成および管理する」を参照してください。

Azure Active Directory (Azure AD) 承認トークン、アカウント アクセス キー、または Shared Access Signature (SAS) を使用して、BlobServiceClient オブジェクトを承認できます。

Azure AD を使用して承認するには、セキュリティ プリンシパルを使用する必要があります。 必要なセキュリティ プリンシパルの種類は、アプリケーションの実行場所によって異なります。 次の表をガイドとして使用します。

アプリケーションの実行場所 セキュリティ プリンシパル ガイダンス
ローカル コンピューター (開発とテスト) サービス プリンシパル アプリを登録し、Azure AD グループを設定し、ロールを割り当て、環境変数を構成する方法については、開発者サービス プリンシパルを使用してアクセスを承認する方法に関する記事を参照してください
ローカル コンピューター (開発とテスト) ユーザー ID Azure AD グループを設定し、ロールを割り当て、Azure にサインインする方法については、開発者資格情報を使用してアクセスを承認する方法に関する記事を参照してください
Azure でホスト マネージド ID マネージド ID を有効にしてロールを割り当てる方法については、マネージド ID を使用して Azure でホストされるアプリからのアクセスを承認する方法に関する記事を参照してください
Azure の外部でホストされる (オンプレミス アプリなど) サービス プリンシパル アプリを登録し、ロールを割り当て、環境変数を構成する方法については、アプリケーション サービス プリンシパルを使用してオンプレミス アプリからのアクセスを承認する方法に関する記事を参照してください

DefaultAzureCredential を使用してアクセスを承認する

Blob Storage へのアクセスを承認して接続する最も簡単で安全な方法は、DefaultAzureCredential インスタンスを作成して OAuth トークンを取得することです。 その後、その資格情報を使用して BlobServiceClient オブジェクトを作成できます。

この例では、DefaultAzureCredential を使用して BlobServiceClient オブジェクトを作成します。

def get_blob_service_client_token_credential(self):
    # TODO: Replace <storage-account-name> with your actual storage account name
    account_url = "https://<storage-account-name>.blob.core.windows.net"
    credential = DefaultAzureCredential()

    # Create the BlobServiceClient object
    blob_service_client = BlobServiceClient(account_url, credential=credential)

    return blob_service_client

アプリケーションをビルドする

アプリケーションをビルドすると、コードは主に 3 種類のリソースと対話します。

  • ストレージ アカウントは、Azure Storage のデータに対する一意で最上位の名前空間です。
  • コンテナーは、ストレージ アカウント内の BLOB データを整理します。
  • BLOB は、テキストやバイナリ データなどの非構造化データを格納します。

次の図に、これらのリソースの関係を示します。

BLOB ストレージ アーキテクチャの図。

各種類のリソースは、1 つまたは複数の関連付けられた Python クラスによって表されます。 基本的なクラスは次のとおりです。

クラス 説明
BlobServiceClient ストレージ アカウントの Blob Storage エンドポイントを表します。
ContainerClient Azure Storage コンテナーとその BLOB を操作できます。
BlobClient Azure Storage の BLOB を操作できます。

次のガイドでは、これらの各クラスを使ってアプリケーションをビルドする方法を示します。

ガイド 説明
コンテナーの作成 コンテナーを作成します。
コンテナーを削除して復元する コンテナーを削除し、論理的な削除が有効になっている場合は、削除されたコンテナーを復元します。
コンテナーをリストする アカウントのコンテナーの一覧を表示し、さまざまなオプションを使って一覧をカスタマイズします。
プロパティとメタデータの管理 (コンテナー) コンテナーのプロパティとメタデータを取得および設定します。
コンテナーのリースを作成および管理する コンテナーに対するロックを確立して管理します。
BLOB のリースを作成および管理する BLOB に対するロックを確立して管理します。
BLOB をアップロードする 文字列、ストリーム、ファイル パス、その他の方法を使って BLOB をアップロードする方法について説明します。
BLOB をダウンロードする 文字列、ストリーム、ファイル パスを使って BLOB をダウンロードします。
BLOB をコピーする ある場所から別の場所に BLOB をコピーします。
BLOB をリストする さまざまな方法で BLOB の一覧を表示します。
削除と復元 BLOB を削除し、論理的な削除が有効になっている場合は、削除された BLOB を復元します。
タグを使って BLOB を検索する タグの設定と取得を行い、タグを使って BLOB を検索します。
プロパティとメタデータの管理 (BLOB) BLOB のプロパティとメタデータを取得および設定します。