Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Python

PythonでAzure Blob Storageからcsvを取得する方法について

投稿日:2022年4月20日 更新日:

 

<目次>

(1) PythonでAzure Blob Storageからcsvを取得する方法について
 (1-1) STEP1:Pythonの依存性解決
 (1-2) STEP2:AzureストレージアカウントのURL確認
 (1-3) STEP3:Azureストレージアカウント内の「コンテナー」との疎通
 (1-4) (参考)上記以外のやり方のご紹介(APIのURLを直接コールする方法)

(1) PythonでAzure Blob Storageからcsvを取得する方法について

(1-1) STEP1:Pythonの依存性解決

まずはPython側で事前に必要となるパッケージをpipでインストールしておきます。

 

(コマンド)
> pip install azure-identity azure-storage-blob --user

 

(図111①)pipコマンドの実行

(実行結果)一部抜粋
~略~
Successfully installed azure-core-1.21.1 azure-identity-1.7.1 azure-storage-blob-12.9.0 isodate-0.6.1 msal-1.16.0 msal-extensions-0.3.1 msrest-0.6.21 oauthlib-3.1.1 portalocker-2.3.2 requests-oauthlib-1.3.0
~略~

 

(図111②)インストール成功

コマンドの末尾の「–user」については、下記記事で詳しく記載しておりますので、ご興味ある方はご覧下さい。
 
 

(1-2) STEP2:AzureストレージアカウントのURL確認

Azure Portal上で、目的のストレージアカウントに接続するためのURLを確認します。

・①Azure Storageのリソースを開きます。

(図121①)

・②「概要」ブレードで「JSONビュー」を選択します。
(図121②)

・③JSONデータの中で「”primaryEndpoints”」キーの中の「”blob”」キーに対応する値(URL)を控えます(次のSTEPで使います)。
(図121③)

・④「アクセスキー」ブレードを押下し、「key1」の値を控えます(次のSTEPで使います)。
(図121④)

目次にもどる

(1-3) STEP3:Azureストレージアカウント内の「コンテナー」との疎通

先ほど取得したURLを用いて、Azureストレージアカウント内にある「BLOBコンテナー」内にあるBLOBファイル(例:csv)のデータを取得してみます。
 
(図131①)イメージ図

・①テストのため、予め適当なcsvをコンテナーに登録しておきます。

(図131②)

・②VS CodeのPythonモジュールに下記のサンプルプログラムを貼り付けて実行してみます。
※もしAzure AD配下のストレージアカウントに対して試す場合は、変数「creds」にSTEP2④で確認した「key」の値を設定します。
 
(サンプルプログラム)
from azure.storage.blob import BlobClient
account_url = "https://storageaccountrainbow1.blob.core.windows.net/"

# 認証情報(Keyなど)の設定
#  ⇒ Azure AD配下のリソースに対してアクセスする場合
creds = "[※Azure AD配下のコンテナーの場合、ここにKeyを指定]"

# BLOBのURLを定義([ストレージアカウントURL]/[コンテナ名]/[BLOBファイル名]
container_name="test-container"
blob_name = "Test.csv"
blob_url = f"{account_url}/{container_name}/{blob_name}"

blob_client = BlobClient.from_blob_url(
    # BLOBファイルのURL
    blob_url=blob_url,
    # Azure AD配下のリソースの場合はKeyを指定
    credentials= creds
)
# BLOB(csvファイル)をダウンロード
blob_download = blob_client.download_blob()
# ダウンロードしたBLOBのコンテンツを取得
blob_content = blob_download.readall().decode("utf-8")
# コンテンツをコンソールに表示
print(f"{blob_content}")

(図132)

・③実行すると、コンソールにTest.csvの内容が表示されます。
(図133)実行結果

目次にもどる

(1-4) (参考)上記以外のやり方のご紹介(APIのURLを直接コールする方法)

上記はAzureのライブラリを使用したサンプルですが、逆にAzureのライブラリ等は使わずにPythonの標準のライブラリのみで同様の処理を実現したい場合は、対象BLOBのURLを直接コールしてデータをダウンロードする方法が考えられます。
 
(図141)Azure Blob Storageの特定のBLOBへアクセスする為のURL
 
ご興味ある方は、詳しくは下記の記事を参照ください。
 

Adsense審査用広告コード


Adsense審査用広告コード


-Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Azure Machine Learningで「OSError: Could not find kaggle.json」が出た時の原因と対処方法について

  <目次> (1) Azure Machine Learningで「OSError: Could not find kaggle.json」が出た時の原因と対処方法について  (1-1) …

Pythonパッケージインストール(pip install)をオフラインで行う方法

<目次> (1) Pythonパッケージインストール(pip install)をオフラインで行う方法  (1-1) オフラインインストールとは? (2) オフラインインストールの手順(要Cコンパイルの …

pyenvの使い方(基礎編)をご紹介

  <目次> (1) pyenvの使い方(基礎編)をご紹介  (1-1) STEP1:インストール系のコマンド  (1-2) STEP2:バージョンの適用/切り替え系のコマンド  (1-3) …

Azure FunctionsでPythonのライブラリを追加する方法(依存関係解決)

  <目次> (1) Azure FunctionsでPythonのライブラリを追加する方法(依存関係解決)  (1-1) requirement.txtの設定手順  (1-2) 補足事項 …

Python開発環境にPandasライブラリをインストールする手順

(0)目次&概説 (1) Pandasの導入  (1-1) Pandasとは? (2) オフラインインストール  (2-1) インストール資源の入手  (2-2) インストール時の諸注意  (2-3) …

  • English (United States)
  • 日本語
Top