AWS EC2、S3 創建並掛載的實作

這是一篇紀錄 EC2 建立實例、 建立S3儲存桶、設置 IAM 角色,之後將 S3 掛載到 EC2 的流程。

步驟目錄

EC2 開機

1. 登入主控台,搜索 EC2 然後點進去

2. 左方選單 : 執行個體 > 啟動新執行個體

進入頁面設置名稱、使用的系統,這裡我使用 Debian

執行個體類型,這是用來選擇機型的,我這裡保持預設

金鑰對,這裡我選擇建立一個,他會下載一個檔案,這個是用於連接 ssh 的私鑰文件

網路設定、設定儲存

安全群組我保持預設,儲存保持預設的 8G

最後,按下啟動執行個體,等待幾秒鐘顯示成功就完成 EC2 開機了

連線進入機器 SSH

我這裡選擇透過其他 VPS 使用 SSH 連入

1. 首先將 key 用 sftp 傳到機器上

確保跟 key 在同一目錄

2. 修改 key 權限

chmod 400 test1.pem

400 表示僅授予目前帳戶讀取權限

3. 之後使用指令連線 (機器 ip 可以在執行個體頁面看到)

ssh -i "test1.pem" admin@機器ip

首次連接會跳警告,這時打上 yes 之後按下 Enter 就可以了

這時沒意外的話就進入了該機器的 ssh 了

建立 S3 儲存桶,並授權 EC2 存取

1. 主控台左上方搜索 S3 ,點進去

之後點建立儲存體

我這裡是寫好名稱後期它全預設直接到下方按建立

2. 建立存取權設定檔

這裡參考了 aws 知識庫內容 : 如何將我的 Amazon EC2 執行個體存取權授予 Amazon S3 儲存貯體?

IAM 控制台建立角色

選取 AWS 服務,然後在使用案例下選擇 EC2

該知識庫提到

若要允許 EC2 存取您所有的 Amazon S3 儲存貯體,請使用 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess 受管的 IAM 政策。

照字面意思前者是唯讀,後者才有寫入權限,我因為要測試在上面建立檔案選擇後者。

之後設置好名稱按下建立角色即可

等待幾秒顯示已建立就建立完成

3. 將 IAM 執行個體設定檔連接至 EC2 執行個體

EC2 主控台 > 執行個體 > 選取要授權的執行個體

右上 動作標籤 > 安全 > 修改 IAM 角色

選擇先前建立的 IAM,然後按下更新 IAM 角色

顯示成功就完成對 ec2 的授權了

安裝依賴並掛載

回到 EC2 的 ssh

1. 進入 root 用戶

sudo -i

2. 安裝 s3fs

apt update
apt install s3fs -y

3. 建立掛載點目錄

mkdir -p /mnt/s3bucket

4. 掛載

(BUCKET_NAME改成自己為s3設定的名稱、YOUR_IAM_ROLE_NAME那裡改成自己先前設置的IAM角色名稱)

s3fs BUCKET_NAME /mnt/s3bucket \
    -o allow_other \
    -o use_cache=/tmp \
    -o iam_role=YOUR_IAM_ROLE_NAME

5. 檢查

df -h

如果顯示 s3fs 字樣就代表成功

6. 測試

寫一個文件進去試試

echo "test file" > /mnt/s3bucket/test.txt

之後可以到 s3 主控台看看有沒有

有的話就成功了

完成