我正在像嵌套目录一样构建S3存储桶,以便按照某些条件存储文件,例如,我注意到的第一件事是考虑到 sample 仅存储那些 test = xxx 键,它们是最终实例中存储文件的键。
s3Client.doesBucketExistV2("one/two/sample") // true
s3Client.doesBucketExistV2("one/two/sample/test=123") // false
两者都存在并且 test = xxx 包含文件,但是它们不是由我在AWS中手动创建的,而是由程序手动创建的。
Why test=xxx doesn't return
是instead of
是假?
我的第二个疑问是当尝试列出给定存储桶的对象时...
s3Client.listObjects(new ListObjectsRequest()
.withBucketName("one/")
.withPrefix("two/")
.withPrefix("sample/")) // The specified key does not exist. [404]
Why can't I list the objects of a given bucket that exists?
答案 0 :(得分:1)
第二个.withPrefix(“ sample /”)覆盖.withPrefix(“ two /”)。它不连接字符串。
存储桶名称,前缀和键是分开的。在最后一种情况下,BucketExistV2()也会证明密钥。
Your bucketname is: one
Your prefix is: /two/
or Another prefix is: /two/sample/
with the key: "test=xxx"
s3Client.listObjects(new ListObjectsRequest()
.withBucketName("one")
.withPrefix("/two/sample/");
答案 1 :(得分:0)
也许试试看:
s3 = boto3.client("s3")
list_of_files = s3.list_objects_v2(Bucket=your-bucket)['Contents']