目次
こんにちは。sinyです。
本記事ではAzure Blob Storageの使い方について紹介します。
Azure Blob Storageとは?
Azure Blob StorageとはAzureが提供しているストレージサービスの1つです。
いわゆる非構造化データと呼ばれるデータモデルに従っていないデータ(テキストデータ、バイナリデータなど)を格納するために最適化されたストレージサービスになっています。
例えば以下のような用途に適しています。
- 静的ファイルの配信(画像、ドキュメントなど)
- ストリーミング配信(動画など)
- ログファイルの書き込み先
- データのアーカイブ先
- 分析データの格納
また、 Azure Storage REST API、Azure PowerShell、Azure CLI等を使ってBLOBストレージにアクセスすることができます。
事前準備
PythonでAzure Blob Storageを利用するには、前提条件としてpythonとAzure Storage SDK for Pythonを導入しておく必要があります。
今回は、python3を使います。
また、Azure SDK for Pythonも導入しておきます。
pythonの仮想環境を作成、アクティベート後に以下のコマンドでSDKをインストールしておきます。
pip install azure-batch pip install azure-mgmt-scheduler pip install --pre azure-mgmt-compute pip install azure-storage-blob pip install azure-storage
ストレージアカウントの作成
Azure Blob StorageはAzureのストレージアカウントリソースに紐づくため、まず最初にストレージアカウントを作成する必要があります。
今回はAzure CLIを使ってローカルPC上からストレージアカウントを作成します。
※Azure CLIの導入方法については下記の関連記事を参照
Azure CLIのaz loginでAzureにサインインしておきます。
今回はAzureStorageResouce01というリソースグループを作成します。
az group create --name AzureStorageResouce01 --location "Japan West"
続いて、作成したAzureStorageResouce01内にストレージアカウント(stracnt01)を作成します。
az storage account create --name stracnt01 --resource-group AzureStorageResouce01 --location "Japan East" --sku Standard_LRS --kind StorageV2
以上でリソースグループ内にストレージアカウントが生成されます。
ストレージ アカウントの資格情報の取得
Azure Blob Storageにアクセスする際に必要となるストレージアカウントの資格情報を控えておきます。
Azureポータル上でストレージアカウントをクリック→設定→アクセスキーをクリックすると以下のようにストレージアカウントのKey情報が表示されるため、Key1かKey2のキー情報を控えておきます。
ストレージ アカウント名と上記のアカウント キーを指定して Azure Blob StorageにアクセスするためのBlockBlobService オブジェクトをpythonで作成していきます。
Azureストレージアカウントにコンテナを作成
Azure Blob Storageを使うためには、まずストレージアカウント内にBlob Serviceのコンテナを作成します。
ストレージアカウントのBlob Serviceにある「コンテナー」をクリック後、コンテナ名を入力してコンテナを作成します。
作成したコンテナ内(Blob Storage)にファイル等を格納していきます。
pythonからAzure Blob Storageを操作
今回はローカルPC上からAzure Blob Storageへファイルの格納、一覧表示、ダウンロード、削除等をpythonコードを使って処理してみます。
実行はPythonインタプリタ上で実行していきます。
Azure Blob Storageを操作するためにはazure.storage.blobにあるBlockBlobServiceクラスを利用します。
以下の通ようにBlockBlobServiceクラスにaccount_nameとaccount_key引数を指定することでBlob Storageを操作することができるインスタンスが生成されます。
account_name = "stracnt01" accountkey = "HqkF4XJA******==" blob_service_client = BlockBlobService(account_name=account_name, account_key=accountkey)
BLOBコンテナの作成
先ほど既にAzureポータル上からBLOBコンテナを作成しましたが、コマンドベースでも作成することができます。
先ほど作成したblob_service_clientインスタンスのcreate_containerメソッドにコンテナ名を指定するだけでBLOBコンテナを作成できます。
例えば、「quickstartblobs」という名前のBLOBコンテナを作成したい場合は以下のコマンドを実行します。
container_name = 'quickstartblobs' blob_service_client.create_container(container_name)
コマンドが正常終了すると戻り値として「True」が返ってきます。
Azureポータル上でストレージアカウント内のBLOBコンテナを見ると上記のように指定したコンテナが生成されていることが確認できます。
BLOBストレージにファイルをアップロード
次にローカルPC上にあるテキストファイルをBLOBストレージにアップロードしてみます。
ファイルアップロードはcreate_blob_from_pathメソッドを使います。
block_blob_service.create_blob_from_path(container_name, local_file_name, full_path_to_file)
- 第1引数:BLOBコンテナ名
- 第2引数:アップロードするファイル名
- 第3引数、アップロード元のファイルの絶対パス
今回は、以下のコマンドでazure_blob_test.txtというファイルをそのままの名称でBlobストレージに格納します。
blob_service_client.create_blob_from_path(container_name, "azure_blob_test.txt", "C:\Users\sinfo\Desktop\Azure\venv\storage\azure_blob_test.txt")
処理が正常終了すると、以下の通りBLOBコンテナ内にファイルが格納されます。
BLOBストレージ内のファイル一覧取得
BLOBコンテナ内にあるファイル一覧を取得するにはlist_blobsメソッドを利用します。
list_blobsメソッドにBLOBコンテナ名を引数に与えて情報を取得した後、ループ処理でname属性を指定することでファイル名を抽出することができます。
generator = blob_service_client.list_blobs(container_name) file_list = [blob.name for blob in generator] >>> file_list ['azure_blob_test.txt', 'azure_blob_test2.txt']
BLOBストレージからファイルダウンロード
BLOBコンテナからファイルをダウンロードするにはget_blob_to_pathメソッドを使います。
- 第1引数:コンテナ名
- 第2引数:コンテナにあるファイル名
- 第3引数:ダウンロード先のファイルパス
以下は、BLOBコンテナ内にあるazure_blob_test.txtをローカルPCのC:\tempにダウンロードするコードです。
blob_service_client.get_blob_to_path(container_name, "azure_blob_test.txt", r"C:\temp\azure_blob_test_download.txt")
BLOGストレージのクリア(削除)
BLOBコンテナを削除するにはdelete_containerメソッドを利用します。
blob_service_client.delete_container(container_name)
以上、「Azure Blob Storageの使い方(初心者向け)」でした。