【问题标题】:Amazon S3 bucket listing using HTTP使用 HTTP 列出 Amazon S3 存储桶
【发布时间】:2018-08-07 10:02:11
【问题描述】:

这个问题似乎以前被问过,但我以不同的方式做,所以我发布这个,因为我找不到解决这个问题的具体问题。有没有办法在不使用特殊工具或 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 身份验证、存储桶等,并且已经浪费了太多时间来重新开始,除非我得到一些认真的帮助。我希望能找到一些帮助。我不是想偷懒,我只是没有时间和想法。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案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排序,返回最后一条记录,只显示Key(文件名)

    (这适用于 Mac。您可能需要在 Windows 上调整引号。)

    一些关于 AWS CLI 的精彩视频:

    JMESPath Tutorial 对于了解如何使用--query 参数也非常有用。

    【讨论】:

    • 是的,我确实必须将引号从 ' 更改为 " 并且脚本运行没有错误,尽管它所做的只是在连续循环中运行并且从未显示输出。我不知道为什么会这样对我来说太难了。我似乎已经正确安装了 CLI,但我认为有些东西我只是没有“得到”。也许是因为我正在尝试做一些我认为很简单但我对此知之甚少的事情,所以每当我遇到小问题时,我就无法继续。如果我能让它工作,你的脚本正是我正在寻找的。它不断循环 - CLI 和 Powershell
    • OK 这行得通!它在屏幕上输出所需的文件名(就像你的那样,我只是遇到了身份验证问题。)显示输出参数是 -text ... 那么它是否也在某个地方的文本文件中写入了文件名?我在运行它的当前目录中看不到它。现在我可以看到数据,我非常接近。我需要以某种方式在文本文档中得到它。我在网上扫了一遍,仍然无法弄清楚,但我现在已经很接近了。
    • 我现在已经完全弄清楚了,通过你写的和在线研究。我需要在末尾添加“> 文件名”。谢谢您的帮助!我期待在接下来的几个月中能够更加适应 CLI。
    • 我添加了指向来自 AWS re:Invent 的一些很棒的 AWS CLI 会话的链接。
    • 谢谢你——直到现在我才意识到你的职业。难怪你这么乐于助人。
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 2023-03-31
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多