You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Amazon Rekognition Java程序中指定S3存储桶子文件夹

访问S3子文件夹中的图片来添加到Rekognition集合

没问题,这个需求实现起来非常简单!S3里所谓的“子文件夹”本质上只是**对象键(Object Key)**的一部分(S3本身是扁平存储结构,没有真实的文件夹概念),你只需要把完整的文件路径作为对象名称传给S3Object的withName()方法就可以了。

修改后的代码示例

下面是调整后的完整代码,我标注了关键修改的部分:

public class AddFacesToCollection {
    public static final String collectionId = "MyCollection";
    // 保持桶名称不变
    public static final String bucket = "bucketName";
    // 这里改成子文件夹下的完整路径
    public static final String photo = "image/image1.jpg";

    public static void main(String[] args) throws Exception {
        AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
        
        Image image = new Image()
            .withS3Object(new S3Object()
                .withBucket(bucket)
                .withName(photo)); // 直接传入带层级路径的对象键
        
        IndexFacesRequest indexFacesRequest = new IndexFacesRequest()
            .withImage(image)
            .withQualityFilter(QualityFilter.AUTO)
            .withMaxFaces(1)
            .withCollectionId(collectionId)
            .withExternalImageId(photo) // 也可以根据需求修改,比如只保留文件名作为外部ID
            .withDetectionAttributes("DEFAULT");
            
        IndexFacesResult indexFacesResult = rekognitionClient.indexFaces(indexFacesRequest);
        System.out.println("Results for " + photo);
    }
}

几个需要注意的细节

  • 对象键格式要准确:层级之间用斜杠/分隔,比如folder1/subfolder/photo.jpg,不需要在开头额外加斜杠
  • 权限校验:确保你的Rekognition服务角色拥有访问该S3路径的权限,比如在IAM策略中添加arn:aws:s3:::bucketName/image/*这类资源的访问权限
  • 批量处理拓展:如果需要处理某个子文件夹下的所有图片,可以结合AWS S3 Java SDK的listObjectsV2()方法,通过withPrefix("image/")筛选该路径下的所有对象,再循环处理每一张图片

内容的提问来源于stack exchange,提问作者Harsh Pithadia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:07:40