Categories: Linux

Linux 使用 Goofys 掛載 S3 儲存空間教學與範例

介紹如何在 Linux 系統上使用 Goofys 掛載 S3 儲存空間,直接取用 S3 上面的資料。

下載 Goofys 執行檔

對於一般的 Linux 發行版,可以直接從 Goofys 的 GibHub 網站上下載最新版的二進位執行檔來使用:

# 下載最新版的 goofys 二進位執行檔
wget https://github.com/kahing/goofys/releases/latest/download/goofys

設定 goofys 的執行權限:

# 設定執行權限
chmod +x goofys

S3 設定檔

建立 ~/.aws 這個放置設定檔的目錄:

# 建立 ~/.aws 目錄
mkdir ~/.aws

然後建立 ~/.aws/credentials 設定檔:

# 建立 ~/.aws/credentials 設定檔
vi ~/.aws/credentials

~/.aws/credentials 設定檔中填入 S3 的 access key 與 secret key,若有多組金鑰則可放在不同的 profile 設定區塊之中,以下是一組預設的 default 設定,以及另外一組 my_profile 設定的內容:

[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = xCBasoZHLsVMulg10Romt3zY60ApsP9qaniqlUvK

[my_profile]
aws_access_key_id = AIKD1231231230
aws_secret_access_key = xiqlUvK0Romt3zYCRsdfe41dgadfs1psP9qan60A

掛載 S3 Bucket

進行掛載 S3 bucket 之前,先建立掛載點目錄:

# 建立掛載點目錄
mkdir s3_folder

接著使用 goofys 將 S3 的 mybucket bucket 掛載至 s3_folder 目錄下,預設會以 ~/.aws/credentials 設定檔中的 default 設定的金鑰進行掛載:

# 透過 Goofys 掛載 S3 儲存空間
./goofys --endpoint https://my.s3.com mybucket s3_folder/

若要使用 default 設定以外的金鑰,可以使用 --profile 參數來指定設定名稱:

# 使用 my_profile 設定
./goofys --profile my_profile --endpoint https://my.s3.com mybucket s3_folder/

接著就可以直接透過 Linux 標準的檔案系統操作,存取 S3 上面的資料了。

卸載 S3 Bucket

若要卸載透過 goofys 掛載的 S3 bucket,可以使用 fusermount

# 卸載 S3 儲存空間
fusermount -u s3_folder

常見問題

如果 S3 伺服器的憑證驗證有問題,可能會出現類似以下的錯誤訊息:

Oct 15 08:00:45 vm /home/ubuntu/goofys[23710]: s3.ERROR Unable to access 'mybucket': x509: certificate signed by unknown authority
Oct 15 08:00:45 vm /home/ubuntu/goofys[23710]: s3.ERROR code=RequestError msg=send request failed, err=Head https://my.s3.com/mybucket/wxi5cmr22gjzc0qbne8d74g19vrj5in9: x509: certificate signed by unknown authority#012
Oct 15 08:00:45 vm /home/ubuntu/goofys[23710]: main.ERROR Unable to access 'mybucket': RequestError: send request failed#012caused by: Head https://my.s3.com/mybucket/wxi5cmr22gjzc0qbne8d74g19vrj5in9: x509: certificate signed by unknown authority
Oct 15 08:00:45 vm /home/ubuntu/goofys[23710]: main.FATAL Mounting file system: Mount: initialization failed

一個繞過這個問題的方式是採用未加密的 HTTP 連線:

# 採用未加密的 HTTP 連線
./goofys --endpoint http://my.s3.com mybucket s3_folder/
Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago