はじめに
Linux環境においてAmazon S3のファイルアクセスはAPI、AWS CLIの利用が多いかと思います。
しかし、さまざまな事情で先の方法は使用せずAmazon S3を直接マウントしてファイルを取得したいケースもあるかと思います。
このようなケースに使えるMountpoint for Amazon S3が一般提供開始されたので使ってみたいと思います。
手順
サーバ環境
- Red Hat Enterprise Linux
- ※インスタンスにはIAMロールでS3へのアクセス権限付与しておきましょう
ファイルダウンロード
ドキュメントに従いソフトウエアをインストールします。
$ curl -O https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm $ curl -O https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm.asc $ curl -O https://s3.amazonaws.com/mountpoint-s3-release/public_keys/KEYS
署名検証準備
$ gpg --import ./KEYS $ gpg --fingerprint mountpoint-s3@amazon.com
表示されたフィンガープリント文字列がドキュメントに記載されているものと一致することを確認しましょう。
署名検証
$ gpg --verify ./mount-s3.rpm.asc $ echo $?
Good signatureと応答があること、戻り値がゼロであることを確認しましょう。
インストール
$ sudo dnf install ./mount-s3.rpm
インストール確認
$ mount-s3 --version mount-s3 1.1.0
バージョンの応答があることを確認しましょう。
使い方
S3バケットのマウント
$ mkdir ~/mnt-s3 $ mount-s3 20231031-mount-s3 ~/mnt-s3 bucket 20231031-mount-s3 is mounted at /home/ec2-user/mnt-s3
エラーが表示されないことを確認しましょう。
動作確認
mountコマンドでマウントされたことを確認しましょう。
マウントできてしまえば通常のファイルシステム同様に扱えます。
$ mount |grep mountpoint-s3 mountpoint-s3 on /home/ec2-user/mnt-s3 type fuse (rw,nosuid,nodev,noatime,user_id=1000,group_id=1000,default_permissions)
S3バケットのファイル確認
$ ls -l ~/mnt-s3/ total 10970 -rw-r--r--. 1 ec2-user ec2-user 11232288 Oct 31 05:11 mount-s3.rpm
S3バケットからファイルコピー
$ ls -l ~/mnt-s3/ total 10970 -rw-r--r--. 1 ec2-user ec2-user 11232288 Oct 31 05:11 mount-s3.rpm $ cp ~/mnt-s3/mount-s3.rpm /tmp/ $ ls -l /tmp/ total 10972 -rw-r--r--. 1 ec2-user ec2-user 11232288 Nov 2 09:33 mount-s3.rpm drwx------. 3 root root 17 Oct 31 04:46 systemd-private-eff892143c6c417f979aaf72e553e919-chronyd.service-EAICwl drwx------. 3 root root 17 Oct 31 04:46 systemd-private-eff892143c6c417f979aaf72e553e919-dbus-broker.service-J0rUpd drwx------. 3 root root 17 Oct 31 04:46 systemd-private-eff892143c6c417f979aaf72e553e919-systemd-logind.service-A58dYb
S3バケットへファイルコピー
$ cp ./mount-s3.rpm.asc ~/mnt-s3/ $ ls -l ~/mnt-s3/ total 10970 -rw-r--r--. 1 ec2-user ec2-user 11232288 Oct 31 05:11 mount-s3.rpm -rw-r--r--. 1 ec2-user ec2-user 490 Oct 31 05:14 mount-s3.rpm.asc
書き換え、削除
$ rm -i ~/mnt-s3/mount-s3.rpm.asc rm: remove regular file '/home/ec2-user/mnt-s3/mount-s3.rpm.asc'? y rm: cannot remove '/home/ec2-user/mnt-s3/mount-s3.rpm.asc': Operation not permitted $ cp -i ./mount-s3.rpm.asc ~/mnt-s3/mount-s3.rpm.asc cp: overwrite '/home/ec2-user/mnt-s3/mount-s3.rpm.asc'? y cp: cannot create regular file '/home/ec2-user/mnt-s3/mount-s3.rpm.asc': Operation not permitted
おっと、ここはエラーになりました。ドキュメントにも記載のとおり、書き換え(上書き)や削除はデフォルト不可です。 ファイルの削除はオプションを付けてマウントすることで対応可能です。
削除
$ mount-s3 --allow-delete 20231031-mount-s3 ~/mnt-s3 bucket 20231031-mount-s3 is mounted at /home/ec2-user/mnt-s3 $ ls -l ~/mnt-s3/ total 10970 -rw-r--r--. 1 ec2-user ec2-user 11232288 Oct 31 05:11 mount-s3.rpm -rw-r--r--. 1 ec2-user ec2-user 490 Nov 1 07:01 mount-s3.rpm.asc $ rm -i ~/mnt-s3/mount-s3.rpm.asc rm: remove regular file '/home/ec2-user/mnt-s3/mount-s3.rpm.asc'? y $ ls -l ~/mnt-s3/ total 10970 -rw-r--r--. 1 ec2-user ec2-user 11232288 Oct 31 05:11 mount-s3.rpm
S3のファイル取得のケースにおいては有効利用できますので、ドキュメント記載の制約を確認の上、有効活用しましょう。