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

AWS Rekognition人脸比对报错:无法从S3获取对象元数据求助

排查AWS Rekognition人脸比对“无法从S3获取对象元数据”错误

我来帮你一步步排查这个问题,这个报错通常和S3的配置、权限或者区域不匹配有关,咱们逐个检查:

1. 确认S3对象和桶的信息完全准确

这是最容易踩坑的点,一定要仔细核对:

  • 检查桶名:S3桶名(除了极少数历史遗留桶)必须符合DNS规范,只能用小写字母、数字、连字符和点,如果你代码里的MyBucketName是大写开头,这大概率是问题!改成全小写的桶名试试,比如mybucketname。
  • 核对文件路径:如果你的图片存放在S3桶的子文件夹里(比如user-photos/pic1.jpg),代码里的sourceFile和targetFile必须写完整路径,不能只写文件名pic1.jpg。
  • 控制台验证:直接登录AWS S3控制台,找到对应的桶,确认pic1.jpg和pic2.jpg确实存在,没有拼写错误(比如少了.jpg后缀、大小写不一致)。

2. 检查区域一致性

你的代码里Rekognition客户端指定了us-east-1区域,那要确认:

  • 你的S3桶是不是也在us-east-1区域?如果桶在其他区域(比如us-west-2),要么把Rekognition客户端的区域改成和桶一致(比如client=boto3.client('rekognition','us-west-2')),要么确保你的IAM权限允许跨区域访问S3。
  • 优先建议保持Rekognition和S3桶在同一区域,这样不仅避免跨区域的权限问题,访问速度也更快。

3. 验证IAM权限配置

执行代码的AWS身份(不管是本地的IAM用户,还是EC2实例的IAM角色)必须具备两个核心权限:

  • 允许调用Rekognition的人脸比对接口:rekognition:CompareFaces
  • 允许读取S3桶里的图片对象:s3:GetObject

给你一个示例IAM策略(记得把your-bucket-name替换成你的实际桶名):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rekognition:CompareFaces",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}

如果是在本地运行代码,还可以通过aws configure list命令查看当前生效的AWS凭证是不是对应有权限的用户。

4. 检查S3对象的访问控制

如果你的S3对象是私有的,不要直接给对象设置公开访问(不安全),而是通过上面的IAM策略来授权访问。如果要临时测试,可以给对象设置公开读权限,但测试完成后一定要改回私有。

5. VPC环境下的额外检查

如果你的代码是在AWS VPC内的实例上运行,还要确保实例能访问到S3:

  • 要么实例有公网IP,或者通过NAT网关可以访问公网
  • 要么配置了S3的VPC网关端点,并且实例所在子网的路由表已经正确指向该端点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:13:50