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

使用AWS Rekognition跨区域S3存储桶对比图像遇错,求可行方案

AWS Rekognition CompareFaces跨区域S3图片对比问题

场景与问题

使用AWS Rekognition的CompareFaces功能对比分属不同区域S3桶的两张图片时触发报错:其中一张是Face Liveness的参考图,必须存储在支持该功能的特定区域S3桶;另一张图片和应用部署在合规性、用户延迟更优的其他区域,同区域对比无异常,跨区域则报错。

代码示例

import { RekognitionClient, CompareFacesCommand } from "@aws-sdk/client-rekognition"

const client = new RekognitionClient({
  region: process.env.AWS_REGION,
});

const faceCommand = new CompareFacesCommand({
  TargetImage: {
    S3Object: {
        Bucket: PRIMARY_BUCKET_NAME,
        Name: key
      }
    },
    SourceImage: {
      S3Object: {
        Bucket: LIVENESS_BUCKET_NAME,
        Name: referenceKey
      }
    }
})

const faceRes = await client.send(faceCommand)

报错信息

Unable to get object metadata from S3. Check object key, region and/or access permissions

已确认原因

跨区域S3桶访问限制——Rekognition客户端所在区域无法直接读取另一区域S3桶内的资源,这是AWS服务区域隔离机制导致的,权限配置正确也无法绕过。

偏好解决方案选项

  • 找到跨区域直接对比的方法(最优)
  • 将参考图临时复制到应用所在区域的S3桶再对比
  • 迁移整个应用到支持Face Liveness的区域(不可行)
  • 其他未想到的方案

核心问题解答

跨区域直接调用CompareFaces对比不同区域S3桶的图片不可行。AWS Rekognition通过S3Object参数读取图片时,要求S3桶与Rekognition客户端处于同一区域,跨区域的S3桶无法被其他区域的Rekognition服务直接访问,这是服务架构的固有限制。

可行替代方案

  1. 临时复制参考图到应用所在区域S3桶
    • 使用S3的CopyObjectAPI将Face Liveness参考图复制到应用所在区域的桶,完成对比后删除临时文件,也可配置S3生命周期规则自动清理冗余文件。该方案无需修改核心业务逻辑,实现成本低。
  2. 在Face Liveness区域部署对比逻辑
    • 将CompareFaces对比逻辑单独部署到支持Face Liveness的区域,应用所在区域通过API网关或跨区域Lambda调用该服务。此方案避免了文件复制开销,适合高并发场景。
  3. 使用图片字节流替代S3Object参数
    • 从两个区域的S3桶分别下载图片字节流,通过Bytes参数传入CompareFacesCommand,而非依赖S3Object。需确保应用具备访问两个区域S3桶的权限,同时注意图片大小和网络延迟的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:43:38