AzureBlobStorageをPythonから使う

  • 1
    いいね
  • 0
    コメント

Azure Blob Storageとは

Azure Blob StorageとはAzure Storageのサービスの一つで、バイナリなどのデータを大量に置くことができるストレージサービスです

Blobは1つのファイルやデータを表し、コンテナーによってそれらがまとめられます。
それぞれのコンテナーは1つのstorageアカウントに紐付いています。
よって、下図のような階層構造になります。

blob

https://docs.microsoft.com/ja-jp/azure/storage/storage-python-how-to-use-blob-storage

Azure Storageは.netはもちろん、NodejsやPythonなどにSDKを提供しています。

今回はPythonのsdkを使用してblob storageを使用してみます。

Azure Storageのアカウントを作成する

管理ポータルからAzure Storageのアカウントを作成します。

Screenshot from 2016-12-26 12-51-39.png

Storageアカウントを作成できたらアクセスキーを取得します。
Storageアカウントの管理画面から[アクセスキー]を押し、アクセスキーを取得します。

Screenshot from 2016-12-26 12-53-22.png

今回必要になるのは[ストレージアカウント名]と[アクセスキー]の2つです。

ライブラリのインストール

今回使用するpythonは3.5です。

まず、Azure Storageのpython SDKをpipからインストールします

pip install azure-storage

コンテナーを作る

まず、blobをまとめるフォルダのような役割を果たす、コンテナーを作成します。

from azure.storage.blob import BlockBlobService
from azure.storage.blob import PublicAccess

account_name='{your account name}'
account_key='{your account key}'
container_name='testcontainer'

service = BlockBlobService(account_name=account_name,account_key=account_key)
service.create_container(container_name)

これを実行すると管理画面のblobからコンテナーが作成されたことを確認できます。

Screenshot from 2016-12-26 13-03-49.png

コンテナーにblobを作成する

実際にコンテナーにblobを作成してデータをアップロードしてみます。

from azure.storage.blob import BlockBlobService

account_name='{your account name}'
account_key='{your account key}'
container_name='testcontainer'
file_path='sample1.png'

service = BlockBlobService(account_name=account_name,account_key=account_key)
service.create_blob_from_path(container_name,'sample_blob1',file_path)

blobが作成されたことが確認できます。

Screenshot from 2016-12-26 13-06-23.png

初期設定ではプライベートアクセスなのでコンテナーすべてをパブリック・アクセスに変えてみます。

コンテナーの画面から[アクセス ポリシー]を押し、[コンテナー]を選択します。

Screenshot from 2016-12-26 13-07-42.png

作成したblobをクリックし、URLにブラウザーからアクセスしてみます。

Screenshot from 2016-12-26 13-08-32.png

アップロードしたファイルにブラウザからアクセスできました。

blobのリストを取得する

コンテナーの中に入っているblob一覧は以下のプログラムで取得できます。

from azure.storage.blob import BlockBlobService

account_name='{your account name}'
account_key='{your account key}'
container_name='testcontainer'

service = BlockBlobService(account_name=account_name,account_key=account_key)
blobs = service.list_blobs(container_name)
for blob in blobs:
    print(blob.name)

blobを取得する

blobをプログラムからダウンロードするには以下の処理を実行します。

from azure.storage.blob import BlockBlobService

account_name='{your account name}'
account_key='{your account key}'
container_name='testcontainer'
blob_name='sample_blob1'

service = BlockBlobService(account_name=account_name, account_key=account_key)
service.get_blob_to_path(container_name,blob_name,'download.png')

[download.png]というファイル名でアップロードしたblobを取得できたことを確認します。

blobを削除する

blobを削除するには以下の処理を実行します。

from azure.storage.blob import BlockBlobService

account_name='{your account name}'
account_key='{your account key}'
container_name='testcontainer'
blob_name='sample_blob1'

service = BlockBlobService(account_name=account_name, account_key=account_key)
service.delete_blob(container_name, blob_name)

更新ボタンをおすとblobが消えていることを確認できます。

Screenshot from 2016-12-26 13-15-27.png

参考

サンプルコードはこちらのリポジトリに置いています。
https://github.com/garicchi/azure-blob-python-sample