我们在AWS S3上使用了新的Aws SDK API。我们上传并标记了许多带标签的文件和文件夹。
我们如何过滤键值标签,或只过滤其中一个?我想找到key =“temp”,或key =“temp”和value =“lol”的所有对象。
谢谢!
答案 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来完成上述所有操作。