[Cloud]Object StorageをOracle Linuxのファイルシステムとしてマウント/Mounting an Object Storage Bucket as File System on Oracle Linux


この前のことですが、自動で生成された大量のレポートファイルを配布しやすいようにObject Storageに移動する必要があることに気づきました。これをOracle Cloud Infrastructure SDKを使う、あるいはPre-authenticatedリクエストを使うPythonスクリプトを書いたり、cURLやBashスクリプトを書いたりして実現することもできました。けれど、既存の自動化スクリプトに変更を加えることなくObject Storageのコンテンツにファイルシステムを使って直接アクセスできるとしたらナイスなんじゃないかと思いつきました。

s3fs-fuseプロジェクトとOracle Cloud InfrastructureのS3互換APIのおかげで、これは可能で、しかも簡単にできてしまうんです。
このチュートリアルには、Oracle Cloud Infrastructureのアカウントと、Oracle Linux 7コンピュートインスタンス、SSHと10分くらいの時間が必要です。では始めましょう!

ステップ1:s3fs-fuseのインストール

s3fs-fuseはsourceからか、EPELからビルド済packageを使うことでインストールできます。このポストでは後者のバイナリRPMを使います。
yum install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/s3fs-fuse-1.85-1.el7.x86_64.rpm

ステップ2:認証情報の設定

Oracle Cloud Infrastructureのコンソールで、右上の隅にあるProfileのアイコンをクリックし、User Settingsを選択しましょう。
Customer Secret Keysをクリックし、Generate Secret Keyをクリックしてください。
Keyに何か意味のある名前(たとえばs3fs-accessとか)をつけて、Generate Secret Keyをクリックしましょう。
Secret Keyは今後再表示できないので、コピーしてどこかに保存してください。
クレデンシャルはAccess KeyとSecret Keyを使って作成されます。Access KeyはコンソールのCustomer Secret Keysエリアに表示されています。
クレデンシャルを ${HOME}/.passwd-s3fs ファイルに入力し、owner-onlyのパーミッションをセットしておきましょう:
echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs chmod 600 ${HOME}/.passwd-s3fs

ステップ3:ファイルシステムのマウント

次のコマンドでマウントを実行します:
s3fs [bucket] [destination directory] -o passwd_file=${HOME}/.passwd-s3fs -o url=https://[tenancy].compat.objectstorage.[region].oraclecloud.com/ -onomultipart -o use_path_request_style
以下のようなフォーマットで構成されたS3コンパチブルエンドポイントが表示されます:
mynamespace.compat.objectstorage.aa-region-1.oraclecloud.com
opcユーザーを使っている場合は、以下のようなエラーが表示されるでしょう:
fuse: failed to exec fusermount: Permission denied
次のコマンドを実行してから再度トライしてください:
sudo chmod +x /usr/bin/fusermount
これでObject StorageバケットをほぼPOSIX準拠のファイルシステムとして使うことができるようになりました。

フリートライアル

アカウントをお持ちでない場合は、フリートライアルにサインアップして300$分の無料クレジットをゲットしてください。

0 件のコメント:

コメントを投稿