Java 如何使用ListObjectsV2Request上的前缀或分隔符过滤AWS中的键?

Java 如何使用ListObjectsV2Request上的前缀或分隔符过滤AWS中的键?,java,amazon-web-services,amazon-s3,pattern-matching,Java,Amazon Web Services,Amazon S3,Pattern Matching,我有以下钥匙选项: cat/dog/<random_value>/ShortMetadata cat/dog/<random_value>/bird/LongMetadata cat/dog/<random_value>/values cat/dog/bird/frog cat/dog/<random_value>/bird/<random_value>/HalfMetadata 或: 有人能告诉我该怎么办吗?你说得对,你需要一种机制

我有以下钥匙选项:

cat/dog/<random_value>/ShortMetadata
cat/dog/<random_value>/bird/LongMetadata
cat/dog/<random_value>/values
cat/dog/bird/frog
cat/dog/<random_value>/bird/<random_value>/HalfMetadata
或:


有人能告诉我该怎么办吗?

你说得对,你需要一种机制根据后缀过滤掉密钥

不幸的是,到目前为止,在S3中这是不可能的。你有以下选择

选项1

为元数据对象添加某种后缀。可能如下

cat/dog/Metadata/<random_value>/ShortMetadata 
cat/dog/Metadata/<random_value>/bird/LongMetadata
cat/dog/Metadata//ShortMetadata
猫/狗/元数据//鸟/长元数据
在这里,您可以使用前缀
cat/dog/Metadata
进行搜索。但是这个选项的可行性将完全取决于您的程序逻辑

选项2

如果您经常需要这些信息,可以将密钥存储在某种持久性(RDBMS或DynamoDB)中

选项3


如果要排序的对象数量不是很大,那么很明显,您可以列出整个键集并过滤出所需的内容。但这不是一个可伸缩且性能良好的选项,您说得对,您需要一种基于后缀过滤键的机制

不幸的是,到目前为止,在S3中这是不可能的。你有以下选择

选项1

为元数据对象添加某种后缀。可能如下

cat/dog/Metadata/<random_value>/ShortMetadata 
cat/dog/Metadata/<random_value>/bird/LongMetadata
cat/dog/Metadata//ShortMetadata
猫/狗/元数据//鸟/长元数据
在这里,您可以使用前缀
cat/dog/Metadata
进行搜索。但是这个选项的可行性将完全取决于您的程序逻辑

选项2

如果您经常需要这些信息,可以将密钥存储在某种持久性(RDBMS或DynamoDB)中

选项3

如果要排序的对象数量不是很大,那么很明显,您可以列出整个键集并过滤出所需的内容。但这将不是一个可扩展且性能良好的选项

cat/dog/Metadata/<random_value>/ShortMetadata 
cat/dog/Metadata/<random_value>/bird/LongMetadata