【问题标题】:Get file list from S3 using aws service(api gateway) proxy with prefix on folder使用带有文件夹前缀的aws服务(api网关)代理从S3获取文件列表
【发布时间】: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


【解决方案1】:

我现在可以通过在 api 网关配置中添加查询字符串:分隔符、前缀来列出对象。as shown in the image

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2016-04-24
    相关资源
    最近更新 更多