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

Cognito无法提供有效凭证,Evidently命令执行失败求助

问题分析与解决方案

你的核心问题是IAM策略的资源匹配逻辑,以及可能存在的IAM策略缓存或region配置问题,以下是具体修正步骤:

1. 修正IAM策略的资源范围(关键)

虽然你使用了Resource: '*',但CloudWatch Evidently的部分API(如ListFeatures)对资源权限的匹配要求更精确,需要明确指定项目ARN而非通配符。修改CloudFormation模板中的UIIAMRole策略:

Policies: 
  - PolicyName: root
    PolicyDocument:
      Version: '2012-10-17'
      Statement:
        - Effect: Allow
          Action:
            - evidently:ListFeatures
            - evidently:EvaluateFeature
          Resource: 
            - "arn:aws:evidently:us-east-1:YOUR_ACCOUNT_ID:project/my-evidently-project"
            - "arn:aws:evidently:us-east-1:YOUR_ACCOUNT_ID:project/my-evidently-project/feature/*"
        # 移除cognito-identity:GetCredentialsForIdentity,该权限不需要赋予客户端角色(由Cognito服务自动处理)

替换YOUR_ACCOUNT_ID为你的AWS账号ID,这样既覆盖了项目本身(对应ListFeatures),也覆盖了单个功能(对应EvaluateFeature)。

2. 检查并修复region配置

  • 对于AWS CLI调用,确保指定正确的region:
    aws evidently list-features --project my-evidently-project --region us-east-1
    
  • 你的Node SDK代码已经指定了region,这部分没问题,但要确认Evidently项目确实部署在us-east-1。

3. 等待IAM策略缓存生效

IAM策略的变更通常需要1-5分钟才能全局生效,如果你刚创建完资源就测试,可能需要等待一段时间再重试。

4. 排查Evidently项目的资源策略

登录AWS控制台进入Evidently项目,检查是否存在资源级策略(Resource-based Policy)限制了未认证角色的访问,如果有,需添加允许该角色访问的规则。

额外优化:修正角色信任策略的Condition

虽然这不是当前权限错误的直接原因,但可以让信任策略更严谨:将ForAnyValue:StringLike改为ForAnyValue:StringEquals,因为unauthenticated是固定值,不需要模糊匹配:

Condition:
  StringEquals:
    cognito-identity.amazonaws.com:aud: !Ref CognitoIdentityPool
  ForAnyValue:StringEquals:
    cognito-identity.amazonaws.com:amr: unauthenticated

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:06:17