如何從 Node.js 上傳文件到 S3
我有一個簡單的使用案例。
我正在建立一個工作看板,現在是建立提交新工作職位的表單的時候了。
招聘人員可以輸入公司詳細資料、職位詳細資料和公司標誌圖片。
數據存儲在數據庫中,起初我試圖將標誌存儲在數據庫中,但過了一段時間,我意識到儘管在技術上是可行的,但在存儲二進制數據方面存在一些問題,而且任務需要花費太長的時間。因此,我決定將其上傳到 S3。
S3是AWS提供的一個出色的服務。由於我已經在其他方面使用AWS,添加S3存儲桶很容易。
所以我去創建了一個S3存儲桶。
我已經有了一個AWS帳戶。如果您沒有,請從這裡開始: https://aws.amazon.com。
一旦設置好帳戶,請在AWS中創建一個IAM用戶。登錄AWS,點擊頂部的您的名稱,然後點擊“我的安全憑證”。
在側邊欄中點擊“用戶”和“添加用戶”。啟用“編程訪問。”
通過頁面底部的按鈕(“下一步: 權限”)來轉到下一個屏幕。
點擊“直接附加現有策略”:
在過濾器中輸入“S3”以顯示S3策略
選擇AmazonS3FullAccess
權限:
用戶創建完成後,您將獲得一對訪問密鑰ID和安全訪問密鑰。將其複製到您的項目中的.env
文件中,或者存儲在某個地方以便以後使用。
接下來,進入S3並創建一個存儲桶。從S3首頁https://s3.console.aws.amazon.com點擊“創建存儲桶”按鈕。
設置一個名稱,選擇一個AWS區域,禁用“阻止所有公共訪問”(我們將在另一篇文章中討論權限),然後點擊頁面底部的“創建存儲桶”按鈕。
完成!現在是深入研究Node.js的時候了。我在Next.js中在API調用中使用這段代碼。
首先使用npm install aws-sdk
安裝aws-sdk
包。
如前所述,將您的AWS訪問代碼存儲在.env
中:
1 | AWS_ACCESS_KEY_ID=<訪問密鑰> |
在頂部添加
1 | import AWS from 'aws-sdk' |
然後使用以下代碼初始化s3
對象:
1 | const s3 = new AWS.S3({ |
現在,當您想要上傳文件時,從存儲中加載它:
1 | const filename = '文件名' |
tags: [“Node.js”, “S3”, “AWS”, “file upload”]