AWS Rekognition调用compareFaces报InvalidS3ObjectException求助
AWS Rekognition CompareFaces 报 InvalidS3ObjectException 的解决办法
核心问题:参数字段错误
你的代码中调用compareFaces时,S3Object配置用了Name字段,但AWS Rekognition API要求使用Key来指定S3对象路径,这是触发错误的直接原因。S3的getObject用的是Key,但Rekognition的S3Object参数同样需要用Key而非Name。
修正后的代码片段
将SourceImage和TargetImage里的Name替换为Key,如果你的S3桶没有启用版本控制,建议移除Version参数(指定latest仅在启用版本控制时有效):
$result = $rekognition->compareFaces([ 'SimilarityThreshold' => 80, 'SourceImage' => [ 'S3Object' => [ 'Bucket' => $bucket, 'Key' => $timeIn, // 把Name改成Key // 若未启用版本控制,移除Version参数 // 'Version' => 'latest', ], ], 'TargetImage' => [ 'S3Object' => [ 'Bucket' => $bucket, 'Key' => $timeOut, // 把Name改成Key // 'Version' => 'latest', ], ], ]);
其他排查方向
- 版本控制验证:如果确实需要指定版本,先确认S3桶已启用版本控制,且
latest版本的对象存在。 - Rekognition权限检查:确保Rekognition使用的服务角色拥有
s3:GetObject权限(注意:这和你的S3客户端权限是分开的,Rekognition需要直接访问S3的权限)。 - 对象路径一致性:检查
timeIn和timeOut的路径是否和S3控制台显示的完全一致,避免空格、大小写或特殊字符导致的匹配失败。
内容的提问来源于stack exchange,提问作者Adrian C.
相关产品推荐
相关产品推荐

