由于 Glacier Deep 对小对象的昂贵支持,我正在编写一个存档器。如果能够要求
boto3
提供存储桶中尚未属于所需存储类别的对象列表,这对我来说是最有帮助的。感谢这个答案,我知道我可以在 shell 中做到这一点:
aws s3api list-objects --bucket $BUCKETNAME --query 'Contents[?StorageClass!=`DEEP_ARCHIVE`]'
有没有办法将
query
参数传递给 boto3
?我还没有深入研究源代码,但我认为它本质上是命令行工具的包装器 - 但我在任何地方都找不到使用这种技术的文档或示例。
有没有办法将该查询参数传递到 boto3 中?
遗憾的是,您无法执行此操作,因为
--query
选项是特定于 AWS CLI 的。但 boto3 是 Python AWS SDK,因此您可以非常轻松地对其输出进行后处理以获得与 CLI 相同的结果。
--query
选项基于jmespath。所以如果你真的想在你的Python中使用
jmespath
,你可以使用jmespath包.
https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory-athena-query.html
自 2022 年 7 月起,S3 生命周期具有对象大小过滤器。