# Node.js Lambda 開發進度說明 ### 須達到的功能及目前完成進度 : - [x] 1. 取得user上傳檔案名稱、檔案內容 - [x] 2. 解析Excel檔,得到座標、欄位內容 - [x] 3. 將檔案複製至 **home/history/廠商名稱/上傳當日日期/** - [x] 4. 刪除user最初上傳的檔案 - [ ] 5. 取得上傳檔案的user name **(已取得)** 、datetime **(已取得)**、object url - [ ] 6. 進行Web api測試 ### 本地環境部署 : #### 軟體需求 : * 編譯器選擇 : **Visual Studio Code** * 須使用 **aws command line** 進行aws設定、上傳lambda的動作 [aws cli 下載](https://aws.amazon.com/tw/powershell/) #### AWS帳號設定指令 : ``` $joey aws configure --> AWS設定輸入 如AccessID、Key、Region、Description $joey aws configure list --> 查看AWS設定 $joey aws lambda update-function-code --function-name my-lambda-function --zip-file fileb://function.zip --> 將local上的程式上傳至AWS Lambda中進行測試 ``` #### 上傳lambda指令 : ``` $joey aws lambda update-function-code --function-name my-lambda-function --zip-file fileb://function.zip --> 將local上的程式上傳至AWS Lambda中進行測試 ``` #### npm初步設置 : 因為專案資料夾裡沒有 package.json 檔案。 而package.json 是掌管專案資訊的重要檔案 。所以要在專案目錄下輸入: ``` npm init ``` 執行後cli會出現要你輸入的相關資訊,請依序確認 (如果沒有特別需求,可以按enter略過) ### lambda所使用的npm套件介紹 + 安裝步驟 : * ### aws-sdk.js > AWS-SDK 可以幫助我們在程式中去使用 AWS 服務 ``` npm install aws-sdk --save var AWS = require('aws-sdk'); ``` * ### js-xlsx.js > js-xlsx是Github中獲得最多星星的解析excel資源,可以支援多種格式 **XLSX / XLSM / XLSB / XLS / CSV**,另外必須以Node.js進行開發 ``` npm install xlsx --save var XLSX = require('xlsx'); 重要參數介紹 : workbook = 整份Excel檔案 worksheet = Excel中的Sheet表 cell = 單一儲存格 ``` * ### moment.js > moment.js 是可以進行解析、轉換、設置、格式化日期的 JavaScript 函式庫,透過 moment.js 就可以簡化js時間處理的過程,快速的達到與時間相關的效果呈現。 ``` npm install moment --save var moment = require('moment'); var d = new Date(); moment(d).utcOffset('0800').format('YYYY-MM-DD'); ``` --- ### 目前開發所碰到的問題 : #### 1. lambda無法成功取得user所上傳object的url > 顯示ERROR : The request signature we calculated does not match the signature you provided. Check your key and signing method. 已查詢資料 : [stackoverflow 相似問題 1 ](https://stackoverflow.com/questions/30518899/how-to-fix-the-request-signature-we-calculated-does-not-match-the-signature-er)、[AWS 簽章版本 4 錯誤進行故障診斷](https://docs.aws.amazon.com/zh_tw/general/latest/gr/signature-v4-troubleshooting.html) **產生ERROR的可能原因 :** 1. AWS登入字串錯誤 2. 路徑錯誤 ### 整體開發下來的一些優缺點 : #### 優 :+1: 1. Node.js 使用由 Google 開發的 V8 引擎,可以將 JavaScript 編譯成原生機器碼並**快速執行**。 2. 具有強大的套件管理工具(NPM)功能,任何人都可以發佈自己的套件,所有的套件也都可以在NPM資料庫中找到。 [NPM Package search](https://www.npmjs.com/) #### 缺 :-1: 1. node_modules太肥,在壓縮上傳至aws lambda時需花費一段時間才可上傳完成。 2. 因node.js弱型別的語言特性,當宣告參數增加時,程式碼容易變得混亂不好理解。 參考資料 > [部署程序](https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/nodejs-create-deployment-pkg.html) >[getObject](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property) >[Create folder](https://stackoverflow.com/questions/19459893/how-to-create-folder-or-key-on-s3-using-aws-sdk-for-node-js/31728298) > [解析Excel檔案](https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/286299/)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.