NetDriveでLinuxにAmazon S3をマウントする
GitHubからのインストールから初回接続まで、NetDriveの実験的なLinux版を使ってAmazon S3バケットを通常のUbuntuマウントポイントとしてマウントする方法。
S3に保存されたテストフィクスチャを読み込む必要があるCIランナーや、パッケージング前にバケットからリリースアーティファクトを取得するビルドマシンは、どちらもバケットが誰かが保守しなければならないカスタムのaws s3 syncラッパースクリプトの対象ではなく、普通のディレクトリのように見えることを望んでいます。NetDriveのLinux版は、WindowsやmacOS版と同じ方法でS3をマウントしますが、実験的なリリースとして提供されているため、本番運用のツールをそこに向ける前に前提を整理しておく価値があります。

UbuntuにS3バケットをマウントする
NetDrive を使えば Google Drive、OneDrive、S3、SFTP、WebDAV などが Windows と macOS でネイティブドライブとして表示されます — 同期も、まるごとダウンロードも不要です。
- Ubuntu 16.04以降で動作
- WindowsおよびmacOS版と同じS3接続フロー
- ls、cat、または通常のパスを想定する任意のツールでファイルを読める
無料トライアル。永久ライセンスとサブスクリプションプランあり。
同期ではなくマウントを選ぶ理由
aws s3 syncやs3cmdのようなツールは、スケジュールに従ってオブジェクトをローカルディスクにコピーします。これはローカルのコピーがバケットからずれる可能性があることを意味し、さらに同期したもの全てについてストレージコストを二重に負担することにもなります。NetDrive経由でS3をマウントすればこの手順を省略できます。マウントポイントはバケットに対して直接読み書きを解決するため、cat /mnt/s3-bucket/build-artifacts/latest.tar.gzを実行するスクリプトは、間に同期ジョブを挟まなくても最新のオブジェクトを取得できます。CIジョブとデプロイスクリプトの間で共有スクラッチ領域として使われるバケットにとって、これは「どちらのコピーが古いのか」という種類のバグをまるごと排除します。

UbuntuへのNetDriveのインストール
Linux版NetDriveはUbuntuの標準パッケージリポジトリには含まれていないため、aptではなくGitHub経由でインストールを行います。
- github.com/NetDrive/installerにアクセスし、使用しているUbuntuのバージョンに合ったリリースをダウンロードします。
- お使いのバージョンについて、インストーラーリポジトリのリリースノートに従います。NetDriveが何かをマウントできるようになる前に、ドライバーコンポーネントをインストールする必要があります。
- NetDriveパッケージ自体をインストールします。
- NetDriveを起動します。初回起動時にドライバーコンポーネントが読み込まれ、システムの権限設定によっては
sudoを求められる場合があります。
アップデートはGitHubのリリースとして配布されるため、新しいバージョンの確認はapt upgradeが自動で行ってくれるものではなく、手動の作業になります。このマシンを扱うランブックのどこかに一行書き加えておく価値があります。
S3バケットの接続
NetDriveが起動したら、次の手順を行います。
- NetDriveのドライブマネージャーを開き、+ Add Driveをクリックします。
- プロバイダー一覧からAmazon S3を選びます。
- AWSのアクセスキーとシークレットキーを入力し、対象のバケットを選択します。一部のサブセットだけをマウントしたい場合は、バケット内のフォルダプレフィックスも(任意で)指定できます。
- マウントポイントを設定します。
/mnt/s3-bucketのようなパス、または書き込み権限のある任意の空ディレクトリで構いません。設定したら接続します。

NetDriveのS3コネクタは5GB以上のファイルに対してマルチパートアップロードをサポートしているため、大きなビルドアーティファクトやアーカイブをマウント経由でバケットに書き戻す際も、特別な対応は必要ありません。
接続後は、GUIだけを信用せず、ターミナルから実際にマウントされたかを確認してください。mount | grep s3-bucketを実行するか、マウントポイントに対して普通にlsをかけるだけで構いません。これは実験的なビルドで持っておく価値のある小さな習慣であり、特にそのパスの存在を前提にスクリプトを組む前に行っておくべきです。

Linuxで想定しておくべきこと
このセットアップでUbuntuの複数台を標準化するなら、WindowsおよびmacOS版との以下の違いが重要になります。
- リリースサイクルが別: Linuxドライバーコンポーネントは独自のスケジュールで保守されているため、WindowsやmacOSに適用された修正が、必ずしも同じ週のうちにLinuxへ届くとは限りません。
- パッケージマネージャー未対応: 配布はGitHubのリリースのみです。執筆時点ではPPAもSnapもありません。
- 実験的ステータス: NetDrive自身の比較ページでは、Linuxサポートの項目に文字どおりの意味を持つアスタリスクが付いています。積極的に検証・強化されているのはWindowsとmacOSであり、使用中のUbuntuバージョンとワークロードでのテストに時間をかけてから、何か月も無人稼働に耐えられるとマウントを信頼すべきです。ミッションクリティカルな用途には、フォールバック手段(たとえばスケジュール同期ジョブ)を用意しておきましょう。
これは、CIランナーやたまにバケットへのアクセスが必要な開発マシンでのS3利用を否定するものではありません。むしろそうしたワークロードには妥当な選択です。避けるべきなのは「テストせずに本番パイプラインを賭けてしまう」というシナリオです。
まとめ
UbuntuへのS3マウントは、WindowsやmacOSでNetDriveが提供するのと同じドライブレター感覚のアクセスを、aptではなくGitHub上のインストーラーを通じて実現します。何かを無人で稼働させる用途に頼る前に、実際に使用しているUbuntuバージョンでテストしてください。同じコネクタをより検証が進んだプラットフォームで試したい場合はMount Amazon S3 on macOS with NetDriveを、Linux全般についてはNetDrive on Ubuntu Linuxをご覧ください。
— Steve, NetDrive