0

我将客户资产存储在 S3 中,一个与帐户相关的值作为每个资产路径中的第一个元素,例如

  • account-1/媒体/视频/382476581823.mp4
  • account-1/images/2348752.png

我想找到一个帐户的所有资产消耗的存储总量——在上面的示例中,路径前缀为“account-1”的所有资产。我有一个可行的解决方案,它遍历 S3 查询返回的 ObjectSummary 对象,但它对我的需求来说太慢了,因为它为每个对象执行一个 HTTP 请求。

我想知道是否可以在 S3 查询中执行类似于您可能对 DynamoDB 执行的计算——要求 S3 执行计算并返回总数。

注意:使用 aws-sdk-ruby

4

2 回答 2

0

我应该提到我们使用的是旧的 1.x 版本的 aws-sdk-ruby,所以我的回答可能与您在当前版本的 S3 sdk 中找到的不同。

我能够使用 AWS::S3::Client#list_objects 方法并迭代这些结果。虽然这不是我所希望的(计算仍然在本地执行),但至少它避免了在迭代 S3::Bucket#objects 调用的结果时调用的对 S3 媒体的 HTTP HEAD 请求。

于 2018-05-18T16:56:36.133 回答
0

S3 宣布了一项新功能 S3 Select,可让您使用 SQL 查询您的 S3 存储桶。以下是发布公告:

https://aws.amazon.com/blogs/aws/s3-glacier-select/

于 2018-06-13T12:44:57.033 回答