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でAPI呼び出す時のヘッダー、ボディの指定方法について

  <目次> (1) PythonでAPI呼び出す時のヘッダー、ボディの指定方法について  (1-1) 記事の概要  (1-2) ①「ヘッダー」の指定方法  (1-3) ②「ボディ」の指定方 …

Python3.5&Anaconda4.2のインストール手順(CentOS6)とHelloWorldの方法

(0)目次&概説 (1) インストール資源の入手  (1-1) ディストリビューション  (1-2) GitHubのpyenvのリポジトリのコピーを取得する (2) インストールの実施  (2-1) …

PythonでHTTP Error 403: Forbiddenエラーが出た時の対処方法とエラーの意味について

(0)目次&概説 (1) エラー:HTTP Error 403: Forbidden  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処方法   (1-3-1) 修正前の …

SlackのAPIでユーザー一覧を取得する方法をご紹介

  <目次> (1) SlackのAPIでユーザー一覧を取得する方法をご紹介  (1-0) やりたいこと  (1-1) STEP1:Slackボットの作成  (1-2) STEP2:サンプル …

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]」が出た時の原因と対処 …

  • English (United States)
  • 日本語
Top