Amazon Linux2でIAMロールを使ったs3fsの設定をやってみた

Amazon Linux2上でs3fsを使ってS3をマウントする際に、IAMロールを使用する方法をご紹介します。
2020.02.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、大前です。

Amazon Linux2 上で s3fs の設定を実施する機会があったのですが、ググっても Amazon Linux 上での設定しかなかったり、IAM ロールを使った設定例が出てこなかったりで苦労したので、備忘録としてブログに手順を残したいと思います。

やってみた

1. S3 バケットの作成

何はともあれ、S3 のバケットが必要ですので、作成します。

 

特にアクセス権限など弄る必要はないのですが、できたてホヤホヤのバケットを使用すると下記が発生してしまい、s3fs でのマウント設定に失敗する可能性がありますのでご注意ください。

Amazon S3 から HTTP 307 Temporary Redirect レスポンスが返るのはなぜですか?

 

2. IAM ロールの作成

今回は掲題にある通り IAM ロールを使いますので、EC2 にアタッチするロールを作成します。

検証のため、「AmazonS3FullAccess」をアタッチしたロールを作成します。

 

本番に適用する場合には、必要に応じてポリシーを修正しましょう。

 

3. EC2 インスタンス作成

上記で作成した IAM ロールを紐付けた EC2 インスタンスを作成します。

  • インスタンスタイプ ... t3.micro
  • IAM ロール ... EC2RoleForS3FullAccess(2で作成したもの)
  • AMI ... 最新の Amazon Linux2

セキュリティグループ含め、特に特殊な設定はありません。

 

4. s3fs 設定

ssh でインスタンスにアクセスし、それぞれコマンドを実行していきます。

基本的には、公式リポジトリにある README を参考に進めました。

s3fs-fuse / s3fs-fuse

s3fs のインストール

# yumアップデート
$ sudo yum -y update
# s3fsのパッケージを入れるためにライブラリを追加
$ sudo amazon-linux-extras install -y epel
# s3fsインストール
$ sudo yum -y install s3fs-fuse
# バージョン確認できればおk
$ s3fs --version
Amazon Simple Storage Service File System V1.86 (commit:unknown) with OpenSSL
Copyright (C) 2010 Randy Rizun <rrizun@gmail.com>
License GPL2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

マウント設定

s3fs がインストール出来たら、マウント設定をしていきます。

再起動時等にもマウントされるように、/etc/fstab に追記する形式となっています。

また、IAMロールを使用する場合には、オプションで「iam_role=auto」をつけてあげればおkです。

autoをつけると、EC2 にアタッチされているロールを使用してくれます。

# マウント先のディレクトリ作成
$ sudo mkdir /mnt/s3bucket
# fstabにマウント設定を追記
$ echo "mybucket-image /mnt/s3bucket fuse.s3fs _netdev,allow_other,iam_role=auto 0 0" | sudo tee -a /etc/fstab
# 設定の反映
$ sudo mount -a
# 確認
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
(中略)
s3fs             256T     0  256T    0% /mnt/s3bucket

動作確認

マウントが出来た様なので、動作確認をしていきます。

まずは、EC2 上でファイルを適当に追加してみます。

$ cd /mnt/s3bucket/
# ファイル追加
$ touch hoge.html
# ファイルが追加された事を確認
$ ll
合計 1
-rw-rw-r-- 1 ec2-user ec2-user 0  2月 27 07:54 hoge.html

コンソールで S3 を開いてみると、ファイルが追加されていることが確認できます。

※検証時にSSを取得し忘れていた関係で、手順1で作成したバケットと画像上の名前が異なりますが、作成したバケットを確認してください

 

今度は、コンソール上で S3 にファイルを追加してみます。

「index.html」を追加してみました。

EC2 上で確認すると、コンソール上で追加したファイルが表示されました。

$ ll
合計 1
-rw-rw-r-- 1 ec2-user ec2-user 0  2月 27 07:54 hoge.html
-rw-r----- 1 root     root     9  2月 27 07:55 index.html

という事で、無事に S3 をマウントすることができました!

終わりに

Amazon Linux2 上で IAM ロールを使用した s3fs の設定を紹介しました。

s3fs の設定を調べると、認証情報を配置する手順が良く出てくるのですが、認証情報を配置せずとも、IAM ロールを使用したマウント設定が可能ですので、是非ご活用ください。

 

以上、AWS 事業本部の大前でした。