这个问题似乎以前被问过,但我以不同的方式做它,所以我发布这个是因为我找不到解决这个问题的具体问题。有没有办法在不使用特殊工具或 Amazon CLI 等的情况下获取公共 Amazon 存储桶中的文件列表(实际上只是最新文件)?我对此没有任何经验,3 小时后我准备把头发拉出来。我有一个简单的项目,我需要存储桶中的最新文件,但我不知道文件名。(天气雷达数据)。这是唯一要求 - 我确实有少量的编程知识,但似乎我无法弄清楚 python/Amazon 工具,所以我只是想找到一条更简单的路线,因为我很快就没有时间了。我正在使用 Windows 和命令行工具。在类似的主机上,我通过使用 wget 从服务器提取数据并使用我编写的简单 C++ 控制台应用程序解析 index.html 文件以获取文件名,然后启动 wget 下载文件,因为文件名很容易在指数。
对于亚马逊,我似乎无法弄清楚这一点。
这是主要列表:https : //s3.amazonaws.com/noaa-nexrad-level2/index.html
由于文件名按日期列出,因此雷达站点 - 我可以找出大部分 URL。示例文件名将是:
https://noaa-nexrad-level2.s3.amazonaws.com/2018/08/07/KEWX/KEWX20180807_094339_V06
对于更精确的示例 - 我需要https://noaa-nexrad-level2.s3.amazonaws.com/2018/08/07/KEWX的最新文件。
如果我可以得到一个目录的 XML 返回,我可以使用我以前做过的方法来做到这一点……但我似乎无法弄清楚。
我可以编写一个简单的程序来执行此操作,即使我必须学习一些 Python(这似乎是最流行的方法),但我不明白我在 AWS 身份验证、存储桶等方面所做的工作。并且已经浪费了太多时间重新开始,除非我得到一些认真的帮助。我希望能找到一些帮助。我不是想偷懒,我只是时间和想法用完了。
您将需要在 PowerShell 或AWS 命令行界面 (CLI)中对结果进行某种形式的编程处理。
这似乎有效:
aws s3api list-objects --bucket noaa-nexrad-level2 --prefix 2018/08/07/KEWX/ --query 'sort_by(Contents, &LastModified)[-1].Key' --output text
2018/08/07/KEWX/KEWX20180807_234734_V06
基本上是说:按LastModified排序,返回最后一条记录,只显示Key(文件名)
(这在 Mac 上有效。您可能需要在 Windows 上摆弄引号。)
一些关于 AWS CLI 的好视频:
该JMESPath教程也是理解如何使用是非常有用的--query
参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句