amazon-web-services - 有没有办法查询每个前缀的最新 S3 对象键名?

标签 amazon-web-services amazon-s3 amazon-athena

在 S3 存储桶中,我存储了成千上万个文件,其名称的结构归结为前缀和数字:

A-0001
A-0002
A-0003
B-0001
B-0002
C-0001
C-0002
C-0003
C-0004
C-0005

给定前缀的新对象应该以不同的频率出现,但可能不会。较旧的对象可能会消失。

有没有办法有效地查询 S3 以获得每个前缀的最大数量,即不列出整个存储桶?我想要的结果是:
A-0003
B-0002
C-0005

S3 API 本身似乎没有提供任何可用的东西。但是,也许像 Athena 这样的其他服务可以做到这一点?到目前为止,我只发现它能够在对象内搜索,但我只关心它们的键名。如果它可以报告桶中对象的内容,它不能报告桶本身吗?

我可以接受每个前缀的最新修改日期,但我想避免切换到仅使用前缀作为名称的版本化存储桶来实现这一点。

最佳答案

我认为这就是你要找的:

变量名是 $path ,您可以使用正则表达式来获取您正在查询的模式...

WHERE regexp_extract(sp."$path", '[^/]+$') like concat('%',cast(current_date - interval '1' day as varchar),'.csv')

关于amazon-web-services - 有没有办法查询每个前缀的最新 S3 对象键名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47804941/

相关文章:

date - 雅典娜日期格式无法将字符串转换为日期格式

python - 使用 boto3 从 S3 存储桶中读取文件内容

amazon-web-services - ELB 到后端服务器使用带有自签名证书的 HTTPS

java - 从 Spring Boot 应用程序将日志文件存储在 AWS S3 中

node.js - aws-sdk 上传到 S3 在 KOA 中可以工作,但通过 Mocha 调用时会停止工作

java - Datapipeline 中的 AWS Athena JDBC Jar 使用引发 Java 版本错误

linux - 以编程方式更改新创建的 AWS 实例的主机名

amazon-web-services - 如何为开发人员创建亚马逊沙盒帐户?

amazon-web-services - 如何使用 s3cmd 仅移动更改为 Amazon S3 的文件?

amazon-web-services - AWS Athena 查询输出格式