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

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

関連記事

Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)

  <目次> (1) Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)  (1-0) やりたいこと  (1-1) STEP1:Slackボットの開発(所要時間:60分)  ( …

Python環境にpyodbcをインストールしてSQLServerに接続する手順

<目次> (1) PythonにpyodbcをインストールしてSQLServerに接続する手順  (1-1) 手順1:ODBCドライバのインストール  (1-2) 手順2:pythonパッケージの導入 …

CondaHTTPError: HTTP 000 CONNECTION FAILED for url XXXXエラーの対処方法

  <目次> (1) CondaHTTPError: HTTP 000 CONNECTION FAILED for url XXXXエラーの対処方法  (1-1) 事象概要とエラーメッセージ …

「pyenv」の導入後も「System Python」が有効になってしまう事象の原因と対処について

  <目次> (1) 「pyenv」の導入後も「System Python」が有効になってしまう事象の原因と対処について  (1-1) 問題点の整理  (1-2) 原因&対策(1つ目)  ( …

Pythonで画像をcsvに変換する方法について

  <目次> (1) Pythonで画像をcsvに変換する方法について  (1-0) やりたいこと  (1-1) STEP1:前提(Kerasにおける画像データの取り扱い形式)  (1-2) …

  • English (United States)
  • 日本語
Top