第 362 篇 · 第 14 卷 前端,沒有極限 2026 年 7 月 7 日 · 台北
ls -lt ./posts --since=2013 REC · node 362 · uplink

development

AWS S3 申請設定以及 Node.js 串接方式

2023 年 09 月 28 日 · 3 分鐘閱讀 · By Wang Casper

這是鐵人賽相關文章,影片會在活動開始後發布

AWS S3 是雲端靜態檔案的儲存服務,簡單來說就是能夠把圖片、影片等上傳後不太會更動的檔案進行上傳,接下來用戶在觀看時,就能夠直接存取這些檔案。

而這個服務僅會作為靜態檔案儲存使用,因此在價格上會相對直接將檔案存到虛擬主機來得低上許多,本篇會介紹申請以及完整上傳的流程,在開始之前也請先確保已經有 AWS 帳號,並且已經綁定信用卡。

流程說明

  1. 建立 IAM 帳號: 首先會先建立 IAM 帳號,為了安全性,我們會透過一個子帳號來進行上傳,所以必須先賦予子帳號 S3 相關權限。
  2. 建立 S3 Bucket:接下來就能開始準備上傳流程,也會說明相關的權限設置。
  3. 撰寫程式碼~

建立 IAM 帳號

可以在 AWS 導覽列中輸入 IAM,接下來就會在彈出視窗中找到 IAM 管理工具。

接下來建立一個新的使用者,我們會賦予他 S3 的管理權限。

顧名思義,你可以定義使用者的名稱,在此不需要給予額外的管理控制台權限。

在設定許可中,選擇「直接連接政策」,搜尋欄中可以輸入「S3」,許可政策選擇「AmazonS3FullAccess」,接下來按下下一步、建立使用者即可。

在這個流程中已經建立了一個使用者,接下來會需要取得這使用者的存取方式,用來作為 Node.js 存取的方法。

回到 IAM 使用者列表,點選剛剛所建立的使用者,在畫面的上方可以找到建立存取金鑰。

他會問你做什麼用的,據說選什麼沒太大關係,但我們還是乖乖選擇本機代碼。

最後,把這個金鑰存起來,記得這個畫面只能進來一次,請準備好有地方存再開啟。

建立 S3 Bucket

Bucket 策略有兩種,本篇會直接調整 Bucket 的公開政策,讓在此 Bucket 的圖片均可以直接存取,為什麼這麼做可以參考 AWS 所提供的文件

回到 S3 的服務中,選擇建立儲存貯體(Bucket)。

接下來就按照需求輸入名稱以及選擇區域,區域會影響:

  • 存取速度
  • 價格
    而其中的價格影響較小,會建議依據服務受眾所在地區進行選擇。

接下來回到建立的 Bucket,選擇「許可」,在此會開放此 Bucket 的公開權限。

按照下圖的設定方式並儲存。

接下來政策也需要調整,按下編輯。

依據下圖輸入(下方有附上程式碼),確認後進行儲存

Bucket 政策原始碼。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{ bucket name }}/*"
        }
    ]
}

回到程式碼

在此有提供完整的 Node.js 程式碼,依據需求將 IAM 及 Bucket 申請的資料填入 .env 即可(請參照 .env.sample )。

完整範例:https://github.com/Wcc723/node-ironman-sample-2023/tree/feature/aws-s3-upload

如果在開發上有問題,建議參考本影片,會帶你從頭開始申請並上傳圖片喔:https://youtu.be/y12KO8XM6jw