EC2にS3をマウントする

最終更新日:2026年8月12日

この記事でわかること

・はじめに

項目 AWS Microsoft Azure Google Cloud
世界シェア 約33%(首位) 約22% 約11%
強み サービス数・実績 Microsoft製品連携 データ分析・AI
無料枠 12ヶ月+常時無料 12ヶ月無料 常時無料枠あり
主な資格 CLF / SAA / SAP AZ-900 / AZ-104 ACE / PCA

EC2で環境を用意したはいいが、インスタンスのストレージはあまり使いたくない…(無料期間中はいいけど)
「じゃあ、せっかくだしS3を使ってみるか」っと思いたった今日この頃です。
やってみた感触やユーザーガイドを読んでわかったことを記録していきました。

・事前学習

基本的なことをおさらいしました。

マウント

コンピューターに接続した周辺機器や外部記憶装置等をOSに認識させ、利用可能な状態にすることを指します。
OSがファイルシステムを介することで、そう言ったストレージデバイス上のファイルやディレクトリを利用できるようになります。

パーティション

ストレージ内の区切られた領域のこと。パーティションを分割することでシステムとデータを分けて管理できるなどの利点があります。
バックアップ対象の削減やシステム更新時の危険性の低下などが挙げられます。

ファイルシステム

バイナリシーケンスであるデータを、ファイル単位のオブジェクトとしてユーザーに提供するシステムです。
今回はFUSE(Filesystem in Userspace)を利用することで、仮想的にファイルシステムを構築しているので後ほどインストールします。

goofys

S3のバケットをLinuxのファイルシステムにマウントするソフトウェアです。
マウントするソフトウェアは他にもありますが、現状、有名なs3fsよりもパフォーマンスがいいとの評判なので深く考えずこちらを選択しました。
goofysのREADMEに、ベンチマークが載っているそうです。

【要注意】goofysは有志によるOSSで、現在は活発なメンテナンスが行われていません。
この記事で紹介しているgoofysは非公式のサードパーティ製ツールです。現在AWSは、S3バケットをLinux上のファイルシステムとしてマウントするための公式サポートツール「Mountpoint for Amazon S3」を提供しています。新規に構築する場合は、まずMountpoint for Amazon S3の利用を検討することをおすすめします。

・実行したこと

1. S3でバケット作成

名前決めた以外、特に何もしてません。AWSにログイン後、「S3 Management Console」に移動すると、すぐに「Create bucket」があります。
最終的に「v-s3storage」という名前でS3バケットを作りました。

2. IAMでロール作成

次に、AWSで「IAM Management Console」を開きます。(自分のアイコンの「My Security Credentials」から行けます)
サイドバーにある「Roles」を選択後、「Create role」で作成画面へ移動します。
最初の[Choose a use case]画面では、「EC2」を選択し、「Next:Permissions」をクリックし次へ遷移します。
次の画面の[Attach permissions policies]選択では、「s3」で検索後、「AmazonS3FullAccess」を選択します。
※[Set permissions boundary]選択は特にしなくて平気です。あとはタグや名前を決めて完了です。
※検証用の一時的な手順であれば上記でも構いませんが、本番運用では「AmazonS3FullAccess」のような広範な権限ではなく、対象バケットのみに絞ったIAMポリシーを作成することを推奨します。

3. EC2でインスタンス作成

2で作成したロールを適用し、「t2.micro」作成しました。
インスタンスの作成時の設定は、ロールの適用以外は特にいじってないです。
短くて簡単だったので、手順は省略させて頂きます。

4. EC2コンソールで仮想インスタンスの起動

キーペアを聞かれるので、インスタンス作成時に作ったものを選択し、パスワードを発行します。

5. 仮想インスタンスに接続

今回はSSHクライアントで接続するために、「PuTTY」なるツールを利用するようなのでインストールしました。
詳細は公式ドキュメント「PuTTY を使用した接続」を参照してください。
また、「WinSCP」が入っていない人はインストールをおすすめします。
先ほどの「PuTTY を使用した接続」の設定でセッションを保存していると、「WinSCP」にインポートして取り込むことができます。

6. 諸々のインストール

仮想インスタンスに接続できたので、必要なものをインストールしました。
■Git
■golang
■goofys
以下は実行するコマンドになります
$ sudo yum -y install golang fuse git
$ export GOPATH=$HOME/go
$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys

【要注意】Go言語のバージョンによりコマンドが異なります。
Go 1.17以降では、実行バイナリの取得に`go get`ではなく`go install github.com/kahing/goofys@latest`のような`go install`コマンドを使う形に変わっています。手元のGoのバージョンに合わせて読み替えてください。

7. マウントするためのディレクトリを作成

以下は実行するコマンドになります
$ cd ~
$ sudo mkdir ./mount/S3
$ sudo chown [username]:[username] /mount/S3
※[username]は、「Amazon Linux 2 または Amazon Linux AMI の場合は、ユーザー名は ec2-userです。」と公式ホームページに掲載されております。

【要注意】Amazon Linux 2は標準サポートが終了しています。
上記の[username]の説明で参照しているAmazon Linux 2は、2026年6月30日をもって標準サポートが終了しました。新規にインスタンスを作成する場合は、後継のAmazon Linux 2023(AL2023)の利用を検討してください。なお、ユーザー名が「ec2-user」である点はAmazon Linux 2023でも同様です。

8. マウントコマンド実行します

以下は実行するコマンドになります
$ cd ~
$ ./go/bin/goofys v-s3storage ~/mount/S3
ここで先ほど「S3」で作ったバケット君をマウントします。

9. 確認

以下は実行するコマンドになります
$ df -h
上記コマンドでディスクの使用状況を確認できます。
「S3」で作ったv-s3storageバケットがあります。
あとはファイル作成したり、S3コンソールの方でアップロードしたりして色々試してみてください。

押さえておきたいポイント

  • S3はブロックストレージではなくオブジェクトストレージのため、goofysやMountpoint for Amazon S3などのFUSEベースのツールでマウントしても、通常のディスクと完全に同じ動作にはなりません(ファイルの追記やロックなど一部操作に制約があります)。
  • マウント時に付与するIAMロール・ポリシーは、検証段階では簡易な設定でも構いませんが、本番運用では対象バケットのみに絞った最小権限のポリシーに変更することを推奨します。
  • goofysのような非公式OSSを使う場合は、メンテナンス状況を確認したうえで、可能であればAWS公式のMountpoint for Amazon S3への切り替えも検討してください。

よくある質問

S3をEC2にマウントすると、通常のディスクと同じように使えますか?

基本的なファイルの読み書きは可能ですが、S3はオブジェクトストレージであるため、ファイルへの部分書き込みやランダムアクセス、パーミッション管理など一部の挙動が通常のブロックストレージ(EBS等)とは異なります。データベースのようにランダムな読み書きが頻発する用途には向きません。

goofys以外にS3をマウントする方法はありますか?

代表的なものとしてs3fsがありますが、この記事の執筆時点ではgoofysの方がパフォーマンス面で優れているとされていました。現在はAWS公式の「Mountpoint for Amazon S3」も選択肢に加わっており、サポート面や継続的なアップデートを重視する場合はこちらの利用がおすすめです。

IAMロールに「AmazonS3FullAccess」を付与するのは安全ですか?

検証用の一時的な手順としては簡便ですが、対象アカウント内の全S3バケットへのフルアクセスを許可することになるため、本番運用では推奨されません。マウント対象のバケットのみにアクセスを絞ったカスタムIAMポリシーを作成し、最小権限の原則に沿って運用してください。

・おわりに

公式のドキュメントやネットの情報に助けられ、なんとか実装できました。というのが正直なところです。
必要なソフトや認証周りの設定などわかっていないと、戸惑う部分もありますが、操作自体は簡単なので利用していけば絶対役立つと感じました。
興味ある人はぜひ試してみてください!

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →