2017-07-27 53 views
2

目前我有一個設置,其中API網關接受來自POST請求的.wav文件,並將編碼數據從音頻文件發送到作爲使用它們的處理程序的lambda函數二進制支持系統。使用.wav文件的API網關二進制支持

我需要將音頻文件的是base64編碼轉換從網關回一個.wav格式沒有寫入新文件和讀取,因爲AWS lambda表達式是隻讀文件系統。

我試着做new Buffer(data, 'base64').toString('binary')希望的工作,但它並沒有並沒有一大堆的信息,有關如何做到這一點。

回答

0

圖出來的問題爲任何人好奇。

當API網關使用其二進制支持系統對請求主體進行編碼時,它們還會將主體和尾部數據(如果存在)編碼爲WebKitBoundary

它只是切出的前部和尾部屬於該數據,以便所有編碼剩下的只是嚴格.wav數據然後重新創建它作爲使用Buffer的...

let audio = new Buffer(body, 'base64').toString('binary') 

// Sequence of replacements and slices to remove WebKitBoundary header and tail 

const audioBuffer = new Buffer(audio, 'binary') 

audioBuffer結果是完全等同於使用fs模塊簡單讀取.wav文件。

0

只要你的文件小於512MB,你可以在一個lambda文件寫入/tmp

3

主要有兩種limitations你需要看使用API​​網關和Lambda爲您的使用情況下進入。

  • 音頻文件的最大大小爲10MB
  • 如果您需要將文件存儲用於處理在/ tmp目錄,你可以容納高達512MB

因此多數時候仍與10MB的限制受到制約音頻文件。

對於這種處理,一個替代的選擇是使用下面的流程。

  1. 使用API​​網關和Lambda,請求對AWS CloudFront Signed URL上傳音頻文件到AWS S3。
  2. 然後將文件直接從客戶端上傳到S3。
  3. 具有S3桶拉姆達觸發lambda函數用於處理(最大文件大小爲512 MB)