簡體   English   中英

嘗試創建 s3 對象的本地緩存時沒有此類文件錯誤

[英]No Such File Error When Trying to Create Local Cache of s3 Object

我正在嘗試使用 Fsspec 在 AWS s3 上的公共訪問存儲桶中創建數據文件存儲的本地緩存。 公共訪問存儲桶位於此處。

我 100% 有必要在本地文件緩存中執行此操作,因為這旨在擴展並且我不想物理下載每個單獨的文件。 我正在嘗試通過使用底層 botocore 框架的 API 調用 fsspec 來做到這一點。 一個簡單的、最小的可重現示例如下所示:

導入 fsspec

url = 'simplecache::s3://noaa-nbm-grib2-pds/blend.20211019/01/core/blend.20211019/01/core/blend.t01z.core.f001.co.grib2
'
of = fsspec.open_local(url, s3={'anon' : True}, filecache={'cache_storage':'/tmp/files'})

如果安裝了所有依賴項,則運行上述命令會重現錯誤。 我試過用文件的處理鏈接地址切換 url(simplecache 方案基於這里的一些 fsspec 文檔),但這仍然給出以下錯誤:

ValueError: open_local can only be used on a filesystem which has attribute local_file=True

是否有一個特定的 url 應該用於這樣的事情? 這是對象的直接 url(帶有注入的括號以防止鏈接立即下載文件)

# Remove parenthesis to get full file link which is a direct file download
https://noaa-nbm-grib2-pds.s3.amazonaws.com/blend.20211019/01/core/(blend.t01z.core.f001.co.grib2)

以下工作正常:

fsspec.open_local("simplecache::https://noaa-nbm-grib2-pds.s3.amazonaws.com/blend.20211019/01/core/blend.t01z.core.f001.co.grib2")

但是通過 s3 接口直接訪問文件失敗並顯示 FileNotFound。 這可能表明權限設置不正確,但 fsspec 仍按您的預期運行。

>>> s3 = fsspec.filesystem("s3", anon=True)
>>> s3.info("s3://noaa-nbm-grib2-pds/blend.20211019/01/core/blend.20211019/01/core/blend.t01z.core.f001.co.grib2")
FileNotFoundError

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM