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

如何使用未认证身份调用AWS Video Rekognition?权限报错求助

解决Rekognition LabelDetection中iam:PassRole权限报错问题

这是AWS IAM权限体系里典型的角色传递(PassRole)问题,我来帮你拆解清楚:

问题核心原因

当你在Rekognition请求里配置NotificationChannel时,Rekognition服务需要借助你指定的IAM角色来发送SNS通知。这就要求当前执行请求的角色(也就是你这里的CognitoRkUnauth_Role)必须拥有iam:PassRole权限,允许把目标角色传递给Rekognition服务。而你去掉NotificationChannel后能正常拿到jobId,是因为此时Rekognition不需要传递任何角色,自然跳过了这个权限检查环节。

具体解决步骤

1. 给CognitoRkUnauth_Role添加iam:PassRole权限

登录AWS IAM控制台,找到CognitoRkUnauth_Role,新增一条自定义内联策略,内容如下(记得替换xxxxxxxxxx为你的AWS账号ID):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::xxxxxxxxxx:role/CognitoRkUnauth_Role",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "rekognition.amazonaws.com"
                }
            }
        }
    ]
}

这里的Condition是为了最小化权限风险,只允许把这个角色传递给Rekognition服务,避免过度授权。

2. 确保目标角色信任Rekognition服务

进入CognitoRkUnauth_Role的信任关系标签页,编辑信任策略,添加允许Rekognition服务假设该角色的规则(注意保留原有的Cognito相关信任规则,不要删除):

{
  "Version": "2012-10-17",
  "Statement": [
    // 保留你原有的Cognito信任规则
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "rekognition.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

3. 给目标角色添加SNS发布权限

最后还要确保CognitoRkUnauth_Role有向你指定的SNS主题发送消息的权限,否则即使PassRole权限搞定,后续Rekognition发送通知时还是会失败。添加一条类似的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:us-east-1:xxxxxxxxxx:your-notification-topic"
        }
    ]
}

替换us-east-1为你的SNS主题所在区域,your-notification-topic为你的主题ARN或名称。

完成以上三步后,重新运行带NotificationChannel配置的Rekognition请求,应该就能正常执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:31:58