Mountpoint for Amazon S3 にファイルを直接ダウンロードできるのか検証してみた
はじめに
Mountpoint for Amazon S3 を使用したマウントパスに対して一般的なダウンロードコマンド(wget, curl, aria2)でファイルのダウンロード先に利用できるか検証しました。
検証結果早見
wget と curl は S3 マウントポイントへの直接ダウンロードに成功しましたが、aria2 は失敗しました。EBS と比較すると S3 マウントポイントへのダウンロードは速度が半分以下になっています。レジューム機能は全てのコマンドで利用できませんでした。
コマンド | EBSへのダウンロード | S3への直接ダウンロード | レジューム機能 |
---|---|---|---|
wget | ✅ 468MB/s | ✅ 103MB/s | ❌ Operation not permitted |
curl | ✅ 535MB/s | ✅ 198MB/s | ❌ Failed writing received data |
aria2 | ✅ 734MB/s | ❌ I/O Error | - |
検証の背景
Mountpoint for Amazon S3 は POSIX を完全にサポートしていないため、一般的なコマンドでファイルのダウンロード先として利用可能なのか検証してみました。特に以下の点について確認しました。
- S3 マウントポイントへ直接ファイルをダウンロードできるのか
- ダウンロード速度の比較(EBS vs S3)
- レジューム機能の動作確認
検証環境
実行環境
項目 | 仕様 |
---|---|
OS | Amazon Linux 2023 |
カーネル | 6.1.128-136.201.amzn2023.x86_64 |
AMI 名 | al2023-ami-2023.6.20250218.2-kernel-6.1-x86_64 |
AMI ID | ami-072298436ce5cb0c4 |
リージョン | ap-northeast-1 |
インスタンスタイプ | m7a.large |
使用したコマンド
コマンド | バージョン |
---|---|
wget | 1.21.3 |
curl | 8.5.0 |
aria2 | 1.37.0 |
ダウンロード対象
ダウンロード元サーバー情報
ICSCoE は日本の公式 Ubuntu ミラーサイトの 1 つで、高速な回線(100 Gbps)を提供しています。今回の検証ではネットワーク帯域による速度制限の影響を最小限に抑えるため、日本国内のミラーサイトでかつ、回線の強いところを選択しました。
項目 | 内容 |
---|---|
ミラーサイト名 | ICSCoE(産業サイバーセキュリティセンター) |
ステータス | Official Ubuntu Mirror |
回線速度 | 100 Gbps |
所在地 | 日本 |
URL | https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/ |
テスト対象ファイル
項目 | 内容 | 補足 |
---|---|---|
ファイル名 | ubuntu-24.04.2-live-server-amd64.iso | Ubuntu Server 24.04.2 ISO |
ファイルサイズ | 約 3 GB | |
ダウンロード先(EBS) | /tmp | ローカルディスク |
ダウンロード先(S3) | /mnt/s3 | S3 マウントポイント |
各種コマンドのファイルダウンロード検証
各コマンドで約 3GB の ISO ファイルをダウンロードし、EBS と S3 マウントポイントでの動作を確認しました。速度については 1 回の測定結果のため参考値としてご覧ください。ネットワーク状況により変動する可能性が大いにあります。
wget の検証
検証結果
項目 | 結果 | 速度 | 備考 |
---|---|---|---|
EBSへのダウンロード | ✅ 成功 | 468MB/s | - |
S3への直接ダウンロード | ✅ 成功 | 103MB/s | utimeエラーあり |
レジューム機能 | ❌ 失敗 | - | Operation not permitted |
EBSへのダウンロード
EBS へのダウンロードは問題なく完了し、468MB/s の比較的早い転送速度を記録しました。
$ time wget -P /tmp https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
ubuntu-24.04.2-live-se 100%[==========================>] 2.99G 468MB/s in 6.6s
real 0m6.730s
S3マウントポイントへのダウンロード
utime のエラーが出力しましたが、ファイル自体はダウンロードできました。おそらくダウンロードしたファイルのタイムスタンプを更新するときに失敗しまうのでしょう。
$ time wget -P /mnt/s3 https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
ubuntu-24.04.2-live-se 100%[==========================>] 2.99G 116MB/s in 30s
utime(/mnt/s3/ubuntu-24.04.2-live-server-amd64.iso): Operation not permitted
2025-02-23 22:32:17 (103 MB/s) - '/mnt/s3/ubuntu-24.04.2-live-server-amd64.iso' saved [3213064192/3213064192]
real 0m30.646s
ファイルのタイムスタンプを変更しないオプション(--no-use-server-timestamps
)を付与すればエラーは解消しました。
$ time wget --no-use-server-timestamps -P /mnt/s3 https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
ubuntu-24.04.2-live-se 100%[==========================>] 2.99G 116MB/s in 27s
real 0m27.595s
レジューム機能の検証
ダウンロード途中で中断(Ctrl+C)後、-c オプションでレジュームを試みましたが、Operation not permitted エラーで失敗しました。S3 のマウントポイントではファイルの追記操作が許可されていないためです。
# ダウンロード中断
$ time wget -P /mnt/s3 -c https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
4.04.2-live-server-amd 14%[==> ] 433.18M 116MB/s eta 24s ^C
# ダウンロード再開
$ time wget -P /mnt/s3 -c https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
Cannot write to '/mnt/s3/ubuntu-24.04.2-live-server-amd64.iso' (Operation not permitted).
curl の検証
検証結果
項目 | 結果 | 速度 | 備考 |
---|---|---|---|
EBSへのダウンロード | ✅ 成功 | 535MB/s | - |
S3への直接ダウンロード | ✅ 成功 | 198MB/s | - |
レジューム機能 | ❌ 失敗 | - | Failed writing received data |
EBSへのダウンロード
EBS へのダウンロードは問題なく完了し、533MB/s の高速な転送速度を記録しました。
$ time curl -o /tmp/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
100 3064M 100 3064M 0 0 535M 0 0:00:05 0:00:05 --:--:-- 536M
real 0m5.733s
S3マウントポイントへのダウンロード
S3 マウントポイントへのダウンロードも成功し、198MB/s の転送速度を記録しました。wget と同様に EBS と比べると速度は低下しますがエラーなく完了しました。
$ time curl -o /mnt/s3/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
100 3064M 100 3064M 0 0 198M 0 0:00:15 0:00:15 --:--:-- 266M
real 0m16.115s
レジューム機能の検証
-C オプションでレジュームを試みましたが、Failed writing received data エラーで失敗しました。こちらもまた S3 のマウントポイントでは既存ファイルへの追記操作がサポートされていないことが原因です。
# ダウンロード中断
$ time curl -C - -o /mnt/s3/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
17 3064M 17 543M 0 0 91.1M 0 0:00:33 0:00:05 0:00:28 109M^C
# ダウンロード再開
$ time curl -C - -o /mnt/s3/ubuntu.iso https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
curl: Can't open '/mnt/s3/ubuntu.iso'
curl: (23) Failed writing received data to disk/application
aria2 の検証
検証結果
項目 | 結果 | 速度 | 備考 |
---|---|---|---|
EBSへのダウンロード | ✅ 成功 | 734MB/s | - |
S3への直接ダウンロード | ❌ 失敗 | - | I/O Error |
レジューム機能 | - | - | 直接ダウンロード不可のため未検証 |
EBSへのダウンロード
マルチコネクション(-x16
)を活用して並列ダウンロードすることにより、734MB/s という最も高速な転送速度を記録しました。
$ time aria2c -x16 -d /tmp https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
a01a1e|OK | 734MiB/s|/tmp/ubuntu-24.04.2-live-server-amd64.iso
real 0m6.756s
S3マウントポイントへのダウンロード
I/O Error が発生しました。おそらく aria2 の高度なファイル操作が S3 のマウントポイントではサポートされていないことが原因です。
$ time aria2c -d /mnt/s3/ https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.2/ubuntu-24.04.2-live-server-amd64.iso
[出力省略]
Exception: [AbstractDiskWriter.cc:459] errNum=5 errorCode=17 Failed to write into the file /mnt/s3//ubuntu-24.04.2-live-server-amd64.iso, cause: Input/output error
まとめ
基本的なこと
- wget と curl で S3 をマウントしたパスに直接ダウンロードが可能
- ただし、転送速度は EBS と比較して 40-50%低下
機能の制限事項
- レジューム機能は全てのコマンドで利用不可
利用上の推奨事項
- 小規模ファイルは S3 をマウントしたパスへ直接ダウンロードは wget, curl で可能
- 大容量ファイルのときは目的に合わせて使い分けを推奨
- 転送速度を重視するなら、EBS などのストレージへ一度ダウンロードしてから S3 に転送
- EBS のボリュームサイズを大きくしたくないときや、FSx for OpenZFS などの高速なストレージを利用できない場合は直接ダウンロードも選択肢としてあり
おわりに
wget, curl ができるなら aria2 もできるかなと試してみたのですが、並列ダウンロードを指定しな(-x を未指定)ダメでした。このあたりはツールや、アプリケーションがどうファイルを扱うかになってくるので試してみないとわからないですね。