將AWS S3 bucket掛載為EC2 (Amazon Linux 2023)檔案系統磁碟的方式如下。
例如有一個S3 bucket,範例為bucket-202404241830-001
。
安裝s3fs-fuse
s3fs-fuse為掛載S3 bucket為檔案系統的工具。
由於Amazon Linux 2023不支援EPEL,所以在EC2命令列執行以下命令安裝s3fs-fuse
,分別下載需要的套件工具,然後從git下載原始碼回來編譯並安裝。
$ sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -y
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
./autogen.sh
./configure --prefix=/usr --with-openssl
make
sudo make install
IAM identity policy設定
Access key的使用者必須有policy權限,參考「AWS IAM identity policy for mounting S3 bucket」。
取得Access key ID和Secret access key
取得S3的AWS帳號(IAM User)的Access key ID, Secret access key(參考)。例如:
- Access key ID:
AKIAW7AFVMU22A3M4OMK
- Secret access key:
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
s3fs-fuse設定
在EC2命令列輸入$ echo "[ACCESS_KEY_ID]:[SECERT_ACCESS_KEY]" > ~/.passwd-s3fs
新增Access key ID和Security key到~/.passwd-s3fs
檔,此為s3fs存取S3 bucket的key。
echo "AKIAW7AFVMU22A3M4OMK:WkoULKJY5D1nqmiQc3FLr4frAt6t5vURBzWvYXGK" > ~/.passwd-s3fs
輸入chmod 0600 ~/.passwd-s3fs
限制~/.passwd-s3fs
檔只有檔案所有人才可存取。
$ chmod 0600 ~/.passwd-s3fs
掛載S3 bucket
輸入sudo mkdir [MOUNT_DIRECTORY]
建立待會要掛載S3 bucket的目錄。例如sudo mkdir /mnt/bucket-202404241830-001
建立/mnt/bucket-202404241830-001
目錄。
$ sudo mkdir /mnt/bucket-202404241830-001
輸入sudo s3fs [S3_BUCKET_NAME] [MOUNT_DIRECTORY] -o passwd_file=~/.passwd-s3fs
將S3 bucket掛載到目錄;[S3_BUCKET_NAME]
為S3 bucket名稱。例如範例將S3 bucket bucket-202404241830-001
掛載到EC2的/mnt/bucket-202404241830-001
目錄。
$ sudo s3fs bucket-202404241830-001 /mnt/bucket-202404241830-001 -o passwd_file=~/.passwd-s3fs
輸入mount | grep [MOUNT_DIRECTORY]
檢視S3 bucket是否已掛載到目錄。例如範例為mount | grep bucket-202404241830-001
。
$ mount | grep bucket-202404241830-001
s3fs on /mnt/bucket-202404241830-001 type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
測試
輸入sudo sh -c "echo hello > [MOUNT_DIRECTORY]/hello.txt"
新增內容為"hello"的hello.txt
文字檔到掛載目錄。
$ sudo sh -c "echo hello > /mnt/bucket-202404241830-001/hello.txt"
在AWS console檢視被掛載的S3 bucket,及可看到多了hello.txt
。
同樣地,在AWS console將S3 bucket中的檔案刪除,則EC2掛載目錄中的檔案也會消失。
卸載
輸入sudo umount [MOUNT_DIRECTORY]
即可將掛載的目錄卸載。
$ sudo umount /mnt/bucket-202404241830-001
沒有留言:
張貼留言