【问题标题】:How To Filter, Pattern-Match Files on Retrieval from AWS S3 using .NET AWS SDK?如何使用 .NET AWS 开发工具包从 AWS S3 检索时筛选模式匹配文件?
【发布时间】:2019-01-25 00:30:30
【问题描述】:

使用ListObjects 请求(.NET AWS 开发工具包)时,有没有办法只列出键与给定模式匹配的文件?或者,更广泛地说,有没有一种方法可以使用来自 .NET AWS 开发工具包的任何请求类型根据其密钥从 S3 查询文件?

我知道 --query param, available on AWS CLI,但我无法在 .NET 上找到等效方法。

我正在寻找一种方法来运行查询服务器端,以便ListObjects 返回一组模式匹配的键。我想避免检索所有文件and then 过滤它们。

【问题讨论】:

    标签: c# .net amazon-web-services amazon-s3


    【解决方案1】:

    AWS CLI 将 JMESPath 用于查询表达式。有一个名为JmesPath.NET 的.NET 端口与相同的API 兼容并且维护良好。您可以使用 SDK 检索结果集,然后使用 JmesPath.NET 表达式对其进行过滤。它也可以作为NuGet package 使用。

    CLI 上的 --query 参数过滤输出结果集,类似于 JmesPath.NET 的情况。它不会影响 API 调用返回的内容。唯一可用于减少结果集的请求参数是prefixdelimiter,它们在逻辑上对事物进行分组,就像文件存储引擎中的文件夹结构一样。除非您的用例可以由这些参数处理,否则您将无法在输出端进行过滤。

    【讨论】:

    • 我实际上正在寻找一种方法来运行查询 server-side 以便ListObjects 返回一组模式匹配的键。我想避免检索所有文件然后过滤它们。
    • CLI 上的 --query 参数过滤输出的结果集,类似于 JmesPath.NET 的情况。它不会影响 API 调用返回的内容。唯一可用于减少结果集的请求参数是前缀和分隔符,它们基本上可以帮助您对事物进行逻辑分组,就像文件存储引擎中的文件夹结构一样。除非您的用例可以由这些参数处理,否则您将无法在输出端进行过滤。
    • 哦,我明白了。然后我将重构事情以在检索后工作。 ? 您能否更新您的答案以包含最后一点?
    猜你喜欢
    • 2011-11-10
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多