AWS CloudShell で S3 をファイルシステムとしてマウントする(Mountpoint for Amazon S3)
はじめに
AWS CloudShell から S3 バケットをローカルファイルシステムのように扱える Mountpoint for Amazon S3 を検証してみました。背景としては AWS Health Dashboard 通知の CloudShell persistence expiring という通知を検知した際、ホームディレクトリに保存していたファイルを S3 等に退避する場合はどうすれば良いのかと思ったからになります。
Mountpoint for Amazon S3 とは
- AWS 公式の S3 マウントツール
- FUSE ベースで POSIX ライクな操作が可能
前提条件
- AWS CloudShell へのアクセス権限
- S3 バケットの作成権限
1. インストール
RPM パッケージのダウンロード
wget で rpm パッケージをダウンロードします。
cd ~/
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
ls -lh mount-s3.rpm
rpm パッケージダウンロードを確認。

yum でインストール
yum でインストールを実施。
sudo yum install -y mount-s3.rpm
インストール完了メッセージを確認

バージョン確認
バージョン番号、インストール場所を確認。
mount-s3 --version
which mount-s3
バージョン番号は mount-s3 1.21.0 インストール場所は /usr/bin/mount-s3 であることを確認。
~ $ mount-s3 --version
mount-s3 1.21.0
~ $ which mount-s3
/usr/bin/mount-s3
2. S3 バケット準備
テスト用バケット作成
S3 にテスト用バケットを作成します。
BUCKET_NAME="classmethod-mountpoint-test-$(date +%Y%m%d-%H%M%S)"
aws s3 mb s3://${BUCKET_NAME}
echo ${BUCKET_NAME}
バケット名 classmethod-mountpoint-test-20260217-022501 が作成されたことを確認。
~ $ aws s3 mb s3://${BUCKET_NAME}
make_bucket: classmethod-mountpoint-test-20260217-022501
~ $ echo ${BUCKET_NAME}
作成したバケット名: classmethod-mountpoint-test-20260217-022501
テストファイルをアップロード
テスト用バケットに、テスト用テキストファイルをアップロードします。
echo "Mountpoint test" > mountpoint-test.txt
aws s3 cp mountpoint-test.txt s3://${BUCKET_NAME}/
aws s3 ls s3://${BUCKET_NAME}/
バケット名 classmethod-mountpoint-test-20260217-022501 内に mountpoint-test.txt が作成されたことを確認。
~ $ aws s3 cp mountpoint-test.txt s3://${BUCKET_NAME}/
upload: ./mountpoint-test.txt to s3://classmethod-mountpoint-test-20260217-022501/mountpoint-test.txt
~ $ aws s3 ls s3://${BUCKET_NAME}/
2026-02-17 02:28:06 16 mountpoint-test.txt
3. マウント操作
マウントポイント作成とマウント
マウントポイント作成とマウントを実施します。
mkdir ~/mnt
mount-s3 ${BUCKET_NAME} ~/mnt
mount | grep mountpoint-s3
作成したマウントポイントにバケット名 classmethod-mountpoint-test-20260217-022501 がマウントされたことを確認。
~ $ mkdir ~/mnt
~ $ mount-s3 ${BUCKET_NAME} ~/mnt
bucket classmethod-mountpoint-test-20260217-022501 is mounted at /home/cloudshell-user/mnt
~ $ mount | grep mountpoint-s3
mountpoint-s3 on /home/cloudshell-user/mnt type fuse (rw,nosuid,nodev,noatime,user_id=1000,group_id=995,default_permissions)
マウント状態の確認
マウント状態の確認。
df -h | grep mnt
ls -la ~/mnt/
マウントされた S3 バケット情報、容量 8.0E (エクサバイト、S3 の実質無制限)であること、先ほどアップロードした mountpoint-test.txt が確認できた。
~ $ df -h | grep mnt
mountpoint-s3 8.0E 0 8.0E 0% /home/cloudshell-user/mnt
~ $ ls -la ~/mnt/
total 4
drwxr-xr-x. 2 cloudshell-user cloudshell-user 0 Feb 17 05:04 .
drwxr-xr-x. 7 cloudshell-user cloudshell-user 4096 Feb 17 03:41 ..
-rw-r--r--. 1 cloudshell-user cloudshell-user 16 Feb 17 02:28 mountpoint-test.txt
4. バケット内のファイル確認
マウントした S3 バケット内のファイル確認
Mountpoint test という内容が S3 経由でファイルが読めるか確認。
cat ~/mnt/mountpoint-test.txt
Mountpoint test の内容が正常に表示された。S3 にアップロードしたファイルがマウント経由で読めることを確認。
Mountpoint test
5. ローカルファイルをマウント経由で S3 に保存
ホームディレクトリで作成したファイルをマウントポイントにコピー
ホームディレクトリで作成したファイルをマウントポイントにコピーして S3 に保存されるか確認してみる。
echo "Local file content" > ~/local-file.txt
cp ~/local-file.txt ~/mnt/
ls -lh ~/mnt/
cat ~/mnt/local-file.txt
ホームディレクトリのファイル local-file.txt が S3 に保存されたことを確認。
~ $ ls -lh ~/mnt/
total 1.0K
-rw-r--r--. 1 cloudshell-user cloudshell-user 19 Feb 17 02:36 local-file.txt
-rw-r--r--. 1 cloudshell-user cloudshell-user 16 Feb 17 02:28 mountpoint-test.txt
~ $ cat ~/mnt/local-file.txt
Local file content
S3 側で確認
マウント経由で作成したファイルを確認してみる。
aws s3 ls s3://${BUCKET_NAME}/
ファイル local-file.txt があることを確認。
~ $ aws s3 ls s3://${BUCKET_NAME}/
2026-02-17 02:36:36 19 local-file.txt
2026-02-17 02:28:06 16 mountpoint-test.txt
注意点
CloudShell はセッションが終了するときに環境がリセットされるので、自動でアンマウントされる。
6. 再マウント(手動)
手動による再マウントを試してみる。
現在のマウント状態を確認
現在のマウント状態を確認。
mount | grep mountpoint-s3
ls -ld ~/mnt
マウントポイント ~/mnt は残っているがマウントは解除されていることを確認。
~ $ mount | grep mountpoint-s3
~ $ ls -ld ~/mnt
drwxr-xr-x. 2 cloudshell-user cloudshell-user 4096 Feb 17 02:32 /home/cloudshell-user/mnt
アンマウント(セッション終了をシミュレートするなら)
fusermount -u ~/mnt
再マウント
バケット名 classmethod-mountpoint-test-20260217-022501 を再度マウント。
BUCKET_NAME="classmethod-mountpoint-test-20260217-022501"
mount-s3 ${BUCKET_NAME} ~/mnt
mount | grep mountpoint-s3
ls -lh ~/mnt/
正常にマウントされバケット内のファイルも確認することができた。
~ $ mount-s3 ${BUCKET_NAME} ~/mnt
bucket classmethod-mountpoint-test-20260217-022501 is mounted at /home/cloudshell-user/mnt
~ $ mount | grep mountpoint-s3
mountpoint-s3 on /home/cloudshell-user/mnt type fuse (rw,nosuid,nodev,noatime,user_id=1000,group_id=995,default_permissions)
~ $ ls -lh ~/mnt/
total 1.0K
-rw-r--r--. 1 cloudshell-user cloudshell-user 19 Feb 17 02:36 local-file.txt
-rw-r--r--. 1 cloudshell-user cloudshell-user 16 Feb 17 02:28 mountpoint-test.txt
7. 自動再マウント
- 毎度手動での再マウントは面倒だなと思い自動で再マウントする方法は無いか試してみました。
- CloudShell は、起動時にデフォルトで
~/.bashrc.d/配下のシェルスクリプトを実行する (~/.bashrcから読み出される) ので、そこに S3 自動マウントスクリプトを配置。 ~/.bashrc.dディレクトリはデフォルトで存在しないので作成する。- 以下コマンドでスクリプト
auto-mount-s3.shを作成する。
スクリプト作成
cat > ~/.bashrc.d/auto-mount-s3.sh << 'EOF'
#!/bin/bash
# S3 バケットの自動マウント
BUCKET_NAME="your-bucket-name" # 実際のバケット名に変更
MOUNT_POINT="$HOME/mnt"
# すでにマウントされているか確認
if mountpoint -q "$MOUNT_POINT" 2>/dev/null; then
return 0
fi
# マウントポイントが存在しない場合は作成
if [ ! -d "$MOUNT_POINT" ]; then
mkdir -p "$MOUNT_POINT"
fi
# マウント実行
mount-s3 "$BUCKET_NAME" "$MOUNT_POINT" 2>/dev/null || true
EOF
chmod +x ~/.bashrc.d/auto-mount-s3.sh
8. 自動再マウント検証
現在のマウントを解除
予めマウントを解除して現在のマウント状態を確認。
fusermount -u ~/mnt
mount | grep mountpoint-s3
マウントが解除されていることを確認。
何も表示されなければ OK
新しいシェルを起動して自動マウントを確認
新しいシェルを起動して .bashrc が実行され、自動的に S3 バケットがマウントされるか確認。
bash -l
マウントポイントにバケット名 classmethod-mountpoint-test-20260217-022501 がマウントされたことを確認。
~ $ bash -l
bucket classmethod-mountpoint-test-20260217-022501 is mounted at /home/cloudshell-user/mnt
マウント状態を確認
改めてマウント状態を確認。
mount | grep mountpoint-s3
ls -lh ~/mnt/
正常にマウントされバケット内のファイルも確認することができた。
~ $ mount | grep mountpoint-s3
mountpoint-s3 on /home/cloudshell-user/mnt type fuse (rw,nosuid,nodev,noatime,user_id=1000,group_id=995,default_permissions)
~ $ ls -lh ~/mnt/
total 1.0K
-rw-r--r--. 1 cloudshell-user cloudshell-user 19 Feb 17 02:36 local-file.txt
-rw-r--r--. 1 cloudshell-user cloudshell-user 16 Feb 17 02:28 mountpoint-test.txt
まとめ
CloudShell と Mountpoint for Amazon S3 の組み合わせで、S3 バケットを手軽にファイルシステムとして扱えました。また、CloudShell はセッションが終了する際、環境がリセットされ自動アンマウントされてしましますが ~/.bashrc.d/ 配下にシェルスクリプトを保存しておき、CloudShell 起動時にスクリプトを実行させて自動再マウントできることも検証できました。
この記事が誰かのお役に立てれば幸いです。以上 Yoshi でした。







