Aws S3按标签过滤。按标签搜索

时间:2017-01-10 14:32:59

标签: search amazon-s3 tags aws-sdk

我们在AWS S3上使用了新的Aws SDK API。我们上传并标记了许多带标签的文件和文件夹。

我们如何过滤键值标签,或只过滤其中一个?我想找到key =“temp”,或key =“temp”和value =“lol”的所有对象。

谢谢!

6 个答案:

答案 0 :(得分:12)

我还希望AWS最终支持通过标签搜索文件"因为这会开辟一些可能性,例如有一个照片存储,其中包含存储在标签中的名称,描述,位置,因此我不需要单独的数据库。

但是,显然AWS显然不支持这一点,并且可能永远不会这样做。引用他们的storage service white paper

  

Amazon S3不适合所有存储情况。 [...]您需要考虑其他AWS存储选项的某些存储需求[...]

     

Amazon S3不提供检索特定对象的查询功能。使用Amazon S3时,您需要知道要从服务中检索的文件的确切存储桶名称和密钥。 Amazon S3本身不能用作数据库或搜索引擎。

     

相反,您可以将Amazon S3与Amazon DynamoDB,Amazon CloudSearch或Amazon Relational Database Service(Amazon RDS)配对,以索引和查询有关Amazon S3存储桶和对象的元数据。

AWS建议使用DynamoDB,RDS或CloudSearch。

答案 1 :(得分:2)

似乎有一种方法可以实现您正在寻找的东西,虽然它并不理想,或者特别方便用户使用。

AWS S3 tagging documentation表示您可以为具有给定标记的对象授予帐户权限。如果您使用正确的权限创建了一个新帐户,那么您可能会获得已过滤的列表。

虽然不是特别有用。

答案 2 :(得分:1)

AFAIK-资源组仅在存储桶级别不支持S3对象级别的标签。

答案 3 :(得分:0)

您应该能够查询添加的标签和值 使用资源组/查询资源:

https://${region}.console.aws.amazon.com/resource-groups/resources

答案 4 :(得分:0)

AWS现在支持对S3图像进行标记,如在自己的示例中所示: https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-tags.html

它们具有用于添加/删除标签的API。

Amazon S3 Select,Amazon Athena可用于使用TAGS搜索S3资源。

当前每个资源的标签数量上限为50,这应该足够了。

答案 5 :(得分:0)

无法按标签过滤/搜索。但是您可以使用S3自己实现。

您可以在存储桶中创建特殊的前缀,例如/ tags /。然后,对于您添加的每个要分配标签的实际对象(例如Department=67),请在/ tags /中添加一个新对象,例如:/tags/XXXXXXXXX_YYYYYYYYY_ZZZZZZZZZ,其中

XXXXXXXXX = hash('Department')
YYYYYYYYY = hash('67')
ZZZZZZZZZ = actualObjectKey

然后,当您要获取分配了特定标签的所有对象(例如Department)时,必须执行前缀/tags/XXXXXXXXX_的ListObjectsV2 S3 API。如果要使用具有特定标记值的对象(例如Department=67),则必须对前缀/tags/XXXXXXXXX_YYYYYYYYY_执行ListObjectsV2 S3 API

https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html

虽然速度不是很快,但仍然可以完成工作。

明显的缺点是您必须自己删除标签。例如,您可以使用S3触发器和Lambda来完成上述所有操作。