【AWS】Lambda S3 listobjects 超過1000筆 (二)
暨之前s3取得1000筆以上數據的作法之後
目前有另一種繞s3數據的作法,listObjectV2
之前的做法是可以將數據完整跑完沒錯。
但是問題是在結合其他aws服務的時候,可能會有問題。
譬如假設是以apigetway + lambda的方式,去取得所有s3物件列表。
以lambda來說是可以設置超時時間(可以設置很長)
是沒有什麼問題的。
但是會有問題的就出在apigetway,
因為apigetway的超時最大值,不能超過29秒
假設今天s3的list資料量已經很巨大。
又有需求需要透過apigetway+lambda的形式來獲取的話。
就會死在apigetway的超時配置。
不過這個問題,aws也有發覺到了。
上篇文章使用的是listobjects,這算是aws的第一代版本。
後面為了避免這種執行過久的問題。
由於v1版本的分頁,只能在lambda進行下一頁
後來Aws出了v2版本,可以藉由token分頁的形式,
當listobject respon時,可以使用IsTruncated來判斷是否有下一頁
並且可以取得token(NextContinuationToken)
來進行獲取下一頁"頁碼"的概念。
實做的方式如下:
方式變更為只取得該頁的資訊,不要全部一次繞完
否則資料量超過1萬6千筆以上時,可能會讓apigetway超時
改採用頁碼(nextToken)直接回應出去,
有需要去查找在用頁碼去指定就可以了。
張貼留言