使用 Boto3 对 Amazon S3 运行查询

问题描述 投票:0回答:2

由于 Glacier Deep 对小对象的昂贵支持,我正在编写一个存档器。如果能够要求

boto3
提供存储桶中尚未属于所需存储类别的对象列表,这对我来说是最有帮助的。感谢这个答案,我知道我可以在 shell 中做到这一点:

aws s3api list-objects --bucket $BUCKETNAME --query 'Contents[?StorageClass!=`DEEP_ARCHIVE`]'

有没有办法将

query
参数传递给
boto3
?我还没有深入研究源代码,但我认为它本质上是命令行工具的包装器 - 但我在任何地方都找不到使用这种技术的文档或示例。

python-3.x amazon-web-services amazon-s3 boto3
2个回答
4
投票

有没有办法将该查询参数传递到 boto3 中?

遗憾的是,您无法执行此操作,因为

--query
选项是特定于 AWS CLI 的。但 boto3 是 Python AWS SDK,因此您可以非常轻松地对其输出进行后处理以获得与 CLI 相同的结果。

--query

选项基于
jmespath。所以如果你真的想在你的Python中使用jmespath
,你可以使用
jmespath包.


2
投票
使用 Athena 查询 S3 库存大小列。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory-athena-query.html

自 2022 年 7 月起,S3 生命周期具有

对象大小过滤器

© www.soinside.com 2019 - 2024. All rights reserved.