【发布时间】:2018-06-07 11:33:03
【问题描述】:
我正在使用下面的 AmazonS3Client 示例代码通过 aws api 网关从 S3 存储桶中获取具有 prefix 的文件列表。 但我正在获取该存储桶的所有文件。
当我在api网关日志中查看url时,url中没有prefix参数。
提前致谢
ListObjectsV2Request req = new ListObjectsV2Request().withBucketName("mybucket").withPrefix("myfolder").withDelimiter("/");
req.putCustomRequestHeader("Authorization", "#####");
ListObjectsV2Result result;
do {
result = s3Client.listObjectsV2(req);
for (S3ObjectSummary objectSummary : result.getObjectSummaries()) {
System.out.printf(" - %s (size: %d)\n", objectSummary.getKey(), objectSummary.getSize());
}
// If there are more than maxKeys keys in the bucket, get a continuation token
// and list the next objects.
String token = result.getNextContinuationToken();
System.out.println("Next Continuation Token: " + token);
req.setContinuationToken(token);
} while (result.isTruncated());
【问题讨论】:
-
此代码适用于我,无需调用“putCustomRequestHeader”(不确定它的用途?)。也就是说,如果你想取回“myfolder”下面的键/公共前缀,那么在这种情况下你的前缀需要是“myfolder/”。
-
我正在使用 'putCustomRequestHeader' 验证 aws lambda 中的令牌...但它进入与 url 参数无关的标头(作为存储桶中的 S3 过滤器对象基于 url 参数,例如 GET /?list-type=2&max-keys=3&prefix=E)。我从 docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html 引用 .. @redbido 你有没有通过 aws api gateway 实现这一点..?
-
我没想到 putCustomRequestHeader 会引起问题,只是想清楚我没有调用它。不,我没有从 api 网关执行此操作,尽管只要您的身份验证正常工作(显然是因为您可以列出存储桶),我想不出任何原因使用 API 网关会改变开发工具包和底层 AWS API 在这种情况下运行。
标签: amazon-s3 aws-api-gateway aws-java-sdk