Azure Blob Storageを最近よく使うので、その辺をまとめていきます。
え?使わない?きっと使う時がくるさ!
何でも入るBlob StorageはAWSもGCPにもあるんだよ?使わなきゃ損!
安いので大容量データの格納だったり、一時的な格納スペースとして活用されているのかな?
個人的なハマりポイントもまとめながら手順を説明してきます。
目次
最終目標
- Pythonを使ってAzure Blob Storageからファイルをダウンロード/アップロードする
この記事でできること
Pythonについては次の投稿でまとめます。
- Azure Blob Storageの作成
環境条件
今回は以下の条件で進めます。
- Python 3.9.1
- Azureのアカウントがあること(無料枠有もしくはクレカ登録済)
Azure Blob Storageを用意しよう
そもそもAzure Blob Storageってなんなん?
一言で言うとストレージです。
尚且つ色々な言語でSDKが用意されているので、アクセスしやすい感じになっています。
普通の共有フォルダに置くより、プログラムから圧倒的にアクセスしやすいです。
データベースを使うほどではなかったり、大容量のデータをやりとりしたいが、コストが…みたいなケースでよく使用される…のかな。
公式はこちら。
今回はMicrosoft(Azure)での紹介でしたが、他のクラウドサービスにも同等のものがあります。
- Google Cloud Platform(GCP):Google Cloud Storage
- Amazon Web Service(AWS):Simple Storage Service (S3)
Azure PortalからBlob Storageを作成
AzureポータルからBlob Storageを作成していきます。
ポータル上部の検索欄で「blob」と検索

「ストレージ アカウント」を選択します

左上の「+新規」を選択します

リソースグループが無い場合は新規作成してください
※リソースグループは各クラウドサービスをグループ化しておいて、このシステムでどれだけコストが掛かっているかを把握するために使ったりします。

ストレージアカウント名を入力、アカウントの種類は「StorageV2」を選択します
StorageV1だとStorage Explore経由での接続が繋がったり、繋がらなかったりします…。

ネットワーク設定はそのままで次へ行きます

データ保護はそのままで次へ行きます

詳細もそのままで次へ行きます

タグもそのままで次へ行きます

最後に確認画面が表示されますので、問題無ければ作成を選択します
これでBlob Storageの作成は完了になります。
次にBlob Storageに接続する接続文字列やBlob Storage内の操作について説明します。

作成ボタンを押すと作成中画面になります
以下の画面が表示されるとBlob Storageの作成は完了になります。
次にBlob Storageに接続する接続文字列やBlob Storage内の操作について説明します。
リソースに移動を選択すると、Blob Storageの画面に移動します。

Blob Storageの接続文字列をコピー(もしくはSAS作成)
接続文字列はクラウド上のBlob Storageにアクセスするためのものなので、絶対に公開しないようにしましょう。これが漏れると自由にBlob Storageにアクセスできてしまうので…。
複数人で共有する場合はSASを作成して権限を絞ってあげるとよいかもしれません。
これがBlob Storageの管理画面です

ちなみにSASを作成する場合はこの画面から行います
使用可能なサービスや作成、更新権限や有効期限など細かく設定ができます。
権限設定が完了したら画面下にあるSASと接続文字列を要求から接続文字列を作成します。
コピーして忘れないようにしてください。

接続文字列を確認します
Key1 / Key2のどちらでも良いです。
接続文字列部分にフォーカスをあてると、右側の方にコピーマークが出てくるのでコピーします。
後ほどPythonのプログラムにこれを記載します。

Blob Storage上に何か作成してみる
今回は以下のような構成にしたいと思います。

作業はこのままAzure Portal上で行っていきます。
他の方法としてはStorage Exploreを使用する方法があります。
接続文字列があれば接続設定してしまえば使用可能なのでこちらでも良いです。
ブラウザ上でもいいですが、意外と使い勝手が悪かったりするので(一括ダウンロードが出来ないとか…)、普段はStorage Exploreを使用しています。
ここからBlobにアクセスできますので、BLOBコンテナーを右クリックします

右クリックするとBLOBコンテナーの作成が出てくるので選択します

画面の右側に新しいコンテナーという画面が表示されるので名前を入力します

名前を入力したら画面したの作成を選択します
ここでは「Storage」という名称のコンテナーを作成しました。

BLOBコンテナーを右クリックし、更新を選択する

更新すると先ほど作成したBLOBコンテナーが表示されます。

「+新しいフォルダー」を選択します

画面右側に新しい仮想ディレクトリの作成画面が表示されるので名前を入力し、画面下にある作成を選択します
ここでは「input」フォルダを作成しました。

フォルダ作成後はすぐにファイルをアップしておきます
フォルダが作成されるとすぐに作成フォルダ内に移動します。(分かりずらいですが…)
アップロードボタンを選択して、適当なファイルをアップロードしておきましょう。
ここでファイルをアップロードしない場合、作成されたフォルダは削除されます。
フォルダの維持目的でとりあえずアップロードする形です。

同様に「output」フォルダを作成します
手順は先ほどと同じなので省略しています。
ファイルのアップロードを忘れずに…。同じファイルでも問題無いです。
最終的にこんな感じになります
フォルダが作成されました。
次の投稿では実際にここのinputフォルダからファイルをダウンロードして、outputフォルダにファイルをアップロードするようなPythonプログラムを書いていきます。

まとめ
- 簡単にBlob Storageを作成できます
- 接続文字列は秘密にしてね
- Storage Exploreが意外と便利です
PythonでAzure Blob Storageにアクセス
こちらにPythonでアクセスする方法を纏めました。