[AWS]「S3」EC2へのマウント

goofysをインストールして、S3バケットをEC2へマウントします。

※「S3をEC2にマウントすることは安定性やコストの観点から非推奨としています」と公式のアナウンスがありますので、利用には注意して下さい。

1. IAMロールの作成

S3のアクセス権限を持つIAMロールを作成します。
(1) IAMロールの作成
  • サービスメニューより「IAM」(Identity and Access Management)を実行し、ダッシュボードを表示します。
  • 左側のメニューより「ロール」を実行して、「ロールの作成」をクリックします。
  • 「AWSサービス」から「EC2」を選択して、「次のステップ:アクセス権限」をクリックします。
  • 「ポリシーのフィルター」で「S3」を入力します。
ポリシー名 AmazonS3FullAccess
アクセス権限の境界の設定 アクセス権限の境界を設定せずに role を作成する
  • 「次のステップ:タグ」をクリックします。
  • 必要であれば、タグを登録します。
  • 「次のステップ:確認」をクリックします。
ロール名 (例)S3FullAccessRole
ロールの説明 (任意)
  • 「ロールの作成」をクリックします。
(2) EC2への割り当て
  • サービスメニューより「EC2」を実行し、ダッシュボードを表示します。
  • 左側のメニューより「インスタンス」を実行します。
  • 該当のEC2インスタンスにチェックを付けて、「アクション」→「インスタンスの設定」→「IAMロールの割り当て/置換」を実行します。
IAMロール S3FullAccessRole
  • 「適用」をクリックします。

2. ソフトウェアのインストール

S3をマウントするEC2にログインします。
(1) 関連ソフトウェアのインストール
# dnf install git
# dnf install fuse
# dnf install golang
(2) goofysのインストール
# wget https://github.com/kahing/goofys/releases/download/v0.24.0/goofys -P /usr/local/bin/
# chmod 755 /usr/local/bin/goofys

3. S3のマウント

(1) マウントの実行
ここでは、マウントポイントを「/mnt/s3」とします。
# mkdir /mnt/s3
AWS CLI(AWSコマンドラインインターフィース)がインストールされている場合には、登録済みのS3のバケット名を確認します。
# aws s3 ls
マウントを実行します。
ここでは、ユーザ「ec2-user」(uid:1000)、グループ「ec2-user」(gid:1000)としています。
# goofys  -o allow_other --uid=1000 --gid=1000 --dir-mode=0775 --file-mode=0664 [バケット名] /mnt/s3
※[バケット名]にマウントするバケット名を記載します。
(2) マウントの自動化
サーバを再起動してもマウントするようにファイルに書き込みます。
# vi /etc/fstab
/usr/local/bin/goofys#【バケット名】 /mnt/s3 fuse _netdev,allow_other,--dir-mode=0775,--file-mode=0664,--uid=0,--gid=0 0 0
※「【バケット名】」にマウントするバケット名を、「/mnt/s3」にはマウント用ディレクトリ名を登録します。
# systemctl daemon-reload

記述が正しくできたか、検証します。
# umount /mnt/s3
# mount -a
これで、正常にマウントされている場合には、OKです。


最終更新:2024年07月23日 08:09