■ はじめに
Azure にファイル転送することになったので、メモ。 また、そもそも Azure (アジュール) が全く分からないので、 そういったことも簡単だが調べてみた。
目次
【1】Azure の ストレージサービス 1)Azure Blob Storage 2)Azure Data Lake Storage Gen2 【2】関連用語 1)コンテナ 【3】PythonでAzureにファイル転送する 1)環境設定 2)サンプル 【4】補足:Azure の勉強について 1)Microsoft Learn
【1】Azure の ストレージサービス
* 代表的なものは以下の通り。 ~~~~~~ 1)Azure Blob Storage 2)Azure Data Lake Storage Gen2 << 今回扱うサービス ~~~~~~ 他にも「Azure File ストレージ」「Azure Queue Storage」 「Azure Table Storage」がある。 (今回は、関係ないので、これ以上の深追いはしない)
1)Azure Blob Storage
* Blob (ブロブ) = Binary Large Objects * Azure の オブジェクトストレージ => AWS で言うと、S3みたいなもの?
2)Azure Data Lake Storage Gen2
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-introduction
より抜粋 ~~~~~~~~~~ * Azure Blob Storage をベースに構築された ビッグ データ分析専用の一連の機能 * Azure Blob Storage と Azure Data Lake Storage Gen1 の機能を集約したもの ~~~~~~~~~~
【2】関連用語
1)コンテナ
* ファイルなどのオブジェクトを格納する入れもの
【3】PythonでAzureにファイル転送する
* 以下が詳しく載っている
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-directory-file-acl-python
1)環境設定
# Python 向けの Azure Data Lake Storage クライアント ライブラリをインストール
pip install azure-storage-file-datalake
2)サンプル
* 大きく分けて、3段階(下記サンプルのStep1~Step3を参照)
例1:既存コンテナにファイルを転送する
from azure.storage.filedatalake import DataLakeServiceClient # Step1: アカウント キーを使用して接続する # Azureストレージ アカウントの名前 storage_account_name = "demo_storege_user" # ストレージ アカウントのアクセス キー storage_account_key = "xxxxxxx" service_client = DataLakeServiceClient( account_url=f"https://{storage_account_name}.dfs.core.windows.net", credential=storage_account_key ) # Step2: 既存コンテナを取得する file_system_client = service_client.get_file_system_client( file_system="my-file-system" ) # コンテナが存在しない場合は、作成する # file_system_client = service_client.create_file_system( # file_system="my-file-system" # ) # Step3: ファイルをディレクトリにアップロードする # => 参考にしたサイトの # 「大きなファイルをディレクトリにアップロードする」参照 directory_client = file_system_client.get_directory_client("my-directory") file_client = directory_client.get_file_client("azure-uploaded-file.txt") # バイナリファイルなら "r" => "rb" に変更 with open("C:\\local-file-to-upload.txt", "r") as local_file: file_contents = local_file.read() # upload_data メソッドを使用して大きなファイルをアップロード file_client.upload_data(file_contents, overwrite=True) # 大きいファイルをサポートしていない場合 # file_client.append_data( # data=file_contents, # offset=0, # length=len(file_contents) # ) # file_client.flush_data(len(file_contents))
【4】補足:Azure の勉強について
* Azure は、AWSと同じで、無料枠でもアカウント作成にはクレジットが必須 * ただし、Microsoft Learnという学習サイトは用意されている
1)Microsoft Learn
* ハンズオン環境としてAzure環境が利用できるオンライン学習サイト => 本格的ではなく、とりあえず教養として勉強したいので、 こういったサイトは、エンジニアとして、ありがたい、、、 => 今回の記事に関わる以下のカリキュラムがある + Azure ストレージ サービスについて + Azure Storage アカウントの作成
公式サイト
https://docs.microsoft.com/ja-jp/learn/
参考文献
Microsoft Learn
https://atmarkit.itmedia.co.jp/ait/articles/1811/07/news015.html
https://www.acrovision.jp/service/azure/?p=1258
関連記事
Azure CLI ~ az storage azcopy blob upload ~
https://dk521123.hatenablog.com/entry/2022/11/11/111614