这个问题似乎以前曾被问过,但是我以不同的方式来做,所以我发布了这个问题,因为我找不到解决这个问题的具体问题。有没有一种方法可以在不使用特殊工具或Amazon CLI等的情况下获取公共Amazon存储桶中的文件列表(实际上只是最新文件)?我对此没有任何经验,三个小时后,我准备拔出头发。我有一个简单的项目,我需要存储桶中的最新文件,但不知道文件名。 (天气雷达数据)。这是仅 的要求-我确实有少量的编程知识,但是似乎我无法弄清楚python / Amazon工具,因此我只是想尽快找到一条更简单的路线时间不多了。我正在使用Windows和命令行工具。在类似的主机上,我使用wget从服务器中提取数据,并使用我编写的简单C ++控制台应用程序解析index.html文件来获取文件名,然后启动wget下载文件,因为文件名很容易在索引。
对于Amazon,我似乎无法弄清楚。
这是主要清单: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身份验证的工作,存储桶等等,除非我得到了一些认真的帮助,否则就浪费了太多时间来重新开始。我希望能找到一些帮助。我并不是想变得懒惰,我只是时间和想法都用光了。
答案 0 :(得分:1)
您将需要某种形式的结果处理程序,无论是在PowerShell中还是在AWS Command-Line Interface (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排序,返回最后一条记录,仅显示键(文件名)
(这在Mac上有效。您可能需要在Windows上摆弄一些引号。)
关于AWS CLI的一些不错的视频:
JMESPath Tutorial对于理解如何使用--query
参数也非常有用。