AdSense

網頁

2024/4/25

AWS EC2 Amazon Linux 2023 mount S3 bucket

將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:WkoULKJY5D1nqmiQc3FLr4frAt6t5vURBzWvYXGK


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


沒有留言:

AdSense