![](/img/trans.png)
[英]OSError: [Errno 28] No space left on device - AWS Lambda + Zappa
[英]No space left on device - AWS Lambda + Sharp
我正在嘗試使用 sharp 將 SVG 轉換為 TIFF。 我的 NodeJs 應用程序部署在 AWS Lambda 上。由於 AWS Lambda /tmp 目錄的最大大小為 512 MB,對於大文件,我收到錯誤“設備上沒有剩余空間”。
我試圖搜索 inte.net 但找不到任何好的解決方案。
你能建議一下,是否可以在部署在 AWS Lambda 上的應用程序上使用 sharp 來處理大文件? 如果是的話怎么辦?
否則,如果您可以建議在 AWS 上實現它的任何替代方法 - 可能正在使用其他一些服務?
據我所知,您有以下三種選擇:
選項1
將 EFS 卷安裝到您的 Lambda 實例實際上就像將硬盤驅動器添加到您的 Lambda。但請注意,該磁盤在您的 Lambda 實例之間共享,並且在您的 Lambda 關閉后仍然存在。
選項 #2
這是更復雜的選項,可能不適用於所有格式。 但是,您可以分塊處理圖像,然后將這些塊寫入 S3,而不是將每一位都寫入磁盤。 這樣你的 Lambda 根本不需要在磁盤上存儲任何數據,也不需要很多 memory 因為你正在以小塊的形式處理圖像。
選項 #3
您可以將結果寫入緩沖區 ( toBuffer() ),而不是將圖像寫入磁盤 ( toFile()
())。 然后您使用此緩沖區將結果寫入 S3,例如。 這樣就沒有位接觸磁盤,您唯一的限制是最大 Lambda memory 為 10.240 MB。
建議:在嘗試任何解決方案之前,請確保您要刪除轉換后的圖像。 只要您的 Lambda 實例處於活動狀態, /tmp
目錄就會在請求之間持續存在。 這意味着同一個 Lambda 實例可以被調用 20 次並且每次都將一個新文件寫入/tmp
。 如果您在處理完這些文件后沒有清理它們,您的“沒有剩余磁盤空間”錯誤可能是由於未刪除的舊文件造成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.