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

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

関連記事

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

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

PythonでAPIを呼び出すサンプルプログラムをご紹介

  <目次> (1) PythonでAPIを呼び出すサンプルプログラム  (1-1) 構文  (1-2) STEP1:事前準備  (1-3) STEP2:疎通①(最もシンプルなAPI呼び出し …

no image

Pythonでランダムな座標データを生成する方法

  <目次> (1) Pythonでランダムな座標データを生成する方法  (1-1) 使う構文  (1-2) サンプルプログラム  (1-3) 補足:データの座標を全体的にシフトしたい場合 …

Pythonで「ERROR: Could not install packages due to an OSError: [WinError 2]」が出た時の原因と対処方法について

  <目次> (1) Pythonで「ERROR: Could not install packages due to an OSError: [WinError 2]」が出た時の原因と対処 …

PythonのSQLAlchemyで「ArgumentError : Could not parse rfc1738 URL」エラーや「InvalidRequestError: Could not reflect: requested tables(s)」エラーが出た時の対処について

(0)目次&概説 (1) エラー対応1:sqlalchemy.exc.ArgumentError  (1-1) 発生状況・エラーメッセージ   (1-1-1) エラーメッセージ   (1-1-2) エ …

  • English (United States)
  • 日本語
Top