LinuxでAzure Blob Storageをマウント — Ubuntu版NetDrive

読了目安 8 分 provider-guide azure linux
Casey
CaseyProduct Manager
NetDriveの実験的なUbuntuビルドを使い、Azure Blob StorageコンテナをLinuxのマウントポイントとして設定・認証・確認する手順を解説します。

あるデータエンジニアリングチームは、Azure Blob Storageコンテナへ毎晩レポートファイルをエクスポートしており、それらを再処理するUbuntuマシンには、ファイルを読むためだけにAzure SDKをすべてのスクリプトへ組み込む必要はありません。このチームはすでに cpfind、そしてローカルパスに対して問題なく動くシェルパイプライン一式を持っています。NetDriveのLinuxビルドはそのコンテナをローカルパスの一つとしてマウントするため、既存のスクリプトはそのまま動き続けます。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

Ubuntu上でAzure Blob Storageをマウント

NetDrive を使えば Google Drive、OneDrive、S3、SFTP、WebDAV などが Windows と macOS でネイティブドライブとして表示されます — 同期も、まるごとダウンロードも不要です。

  • NetDriveの実験的なUbuntuビルド上で動作
  • 既存のシェルスクリプトが通常のマウントポイント経由で読み書き可能
  • バックグラウンドアップロードにより大きなファイルが呼び出し元プロセスをブロックしない
WindowsmacOS
Linux版NetDriveをダウンロード →

無料トライアル。永久ライセンスとサブスクリプションプランあり。

Blob APIに対してスクリプトを書く代わりにマウントする理由

Azure Blob Storageと直接やり取りするには、Azure SDKや az storage blob CLIコマンドを取り込み、SASトークンの失効を処理し、使用する言語ごとにリトライロジックを書く必要があります。1本のスクリプトだけならまだ管理できますが、十数個のcronジョブやCIステップがそれぞれ同じ仕組みのコピーを必要とするようになると、積み重なっていきます。コンテナをマウントすればその層が不要になります——すでにローカルパスの読み書きに対応しているものであれば、何でも同じようにマウントポイントに触れられます。

NetDriveはバージョン3.11.204(2020-07-22)でAzure Blob Storageのサポートを追加しました。これはAzure File Storageが追加されたのと同じリリースです。Linuxでは、この接続タイプはWindowsやmacOS向けのより十分にテストされたリリースではなく、NetDriveの実験的なUbuntuビルド上で動作します——本番パイプラインをそこへ向ける前に知っておく価値があります。というのも、NetDrive自身の比較ページ上でLinuxには「実験的」というラベルが付いているためです。

Azure Blob Storage provider logo — NetDrive supports Azure Blob Storage on Windows, macOS, and Linux

Azureポータルから必要な情報

NetDriveを開く前に、次の3つの値を集めておきます。

  • ストレージアカウント名 — Azureポータルのストレージアカウントリソースの概要ページに記載されています。
  • コンテナ名 — マウントする特定のBlobコンテナ名で、例えば nightly-exports のようなものです。
  • 認証情報 — プライマリアカウントキー(Azureポータル → ストレージアカウント → Security + networkingAccess keys)か、コンテナに範囲を限定したShared Access Signature(SAS)トークンのいずれかです。無人稼働するマシンでは、認証情報のローテーションポリシーに合わせて有効期限を設定したSASトークンのほうが安全な選択です。

さらにUbuntu 16.04以降が必要で、そのマシンのファイアウォールでAzure Storageエンドポイントへのアウトバウンド通信が許可されている必要があります。

UbuntuへのNetDriveのインストール

NetDrive for LinuxはUbuntuの標準リポジトリには含まれていないため、セットアップは apt ではなくGitHub経由で行います。

  1. github.com/NetDrive/installer にアクセスし、使用しているUbuntuのバージョンに合ったリリースをダウンロードします。
  2. インストール前にそのリリースのノートを確認してください——ドライバコンポーネントを先に読み込ませる必要があり、そうしないと接続がマウントされません。
  3. パッケージをインストールしたら、一度NetDriveを起動してドライバを読み込ませます。この手順ではマシンの設定によって sudo を求められることがあります。

手順:Azure Blobコンテナを接続する

  1. NetDriveのDrive Managerを開き+ Add Drive をクリックします。
  2. プロバイダー一覧からAzure Blob Storageを選択します。

NetDrive Drive Manager showing multiple cloud connections available to add

  1. Azureポータルから取得したアカウント名コンテナ入力します。
  2. 認証フィールドにアカウントキーまたはSASトークンを貼り付けます。
  3. /mnt/azure-exports のようなマウントポイントを設定し、Connect をクリックします。

無人ジョブに使う前にマウントを確認する

無人ジョブをそこに向ける前に、マウントが実際に成功しているかを確認します。

# Confirm the mount is listed
mount | grep azure-exports

# Or just list it
ls /mnt/azure-exports

Confirming that a connected drive mounted successfully after setup

ディレクトリが空に見える、またはマウント自体が現れない場合は、認証情報が間違っていると決めつける前に、マシンのファイアウォールがAzure Storageエンドポイントへのアウトバウンド通信を許可しているか確認してください——ロックダウンされたビルドサーバーでは、間違ったSASトークンよりもブロックされたポートのほうがつまずきの原因になりがちです。

Checking that a network port is reachable when troubleshooting a failed connection

Linuxビルドで想定しておくべきこと

  • リリースサイクルが別立てであること。 WindowsやmacOS向けに出た修正が、同じ週にLinuxビルドへ自動的に反映されるわけではありません。
  • apt との連携がないこと。 アップデートはパッケージマネージャーではなくGitHubのリリースから配布されるため、新バージョンの追跡は手作業になります。
  • WindowsとmacOSのほうがより十分にテストされていること。 Azure Blob Storageから読み込む夜間エクスポートジョブはLinuxビルドに妥当な用途ですが、無人稼働の本番パイプラインの背後に置く前に十分にテストしてください。

まとめ

Azure Blob StorageコンテナをUbuntu上でマウントすれば、Azure SDKを中心にスクリプトを書き直すことなく、WindowsやmacOSでNetDriveが提供するのと同じドライブ形式のアクセスをLinuxマシンでも得られます。より十分にテストされたプラットフォームでの同じプロバイダーについてはWindowsでAzure Blob StorageをマウントまたはmacOSでAzure Blob Storageをマウントを、Linux全般についてはUbuntu LinuxでのNetDriveをご覧ください。

— Casey, NetDrive