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

如何在AppSync控制台测试VTL解析器时设置用户池授权类型?

在AppSync控制台测试VTL解析器时让$util.authType()返回User Pool Authorization的方法

问题描述

我正在调试由Amplify创建的GraphQL API的认证规则,该API的authenticationType已设置为AMAZON_COGNITO_USER_POOLS且已在API设置中确认。我能在AWS AppSync控制台看到Amplify为Message对象创建的认证函数,其中关键的是作为VTL解析器的QuerygetMessageauth0Function。我可创建测试上下文,直接测试该解析器在不同输入参数和认证信息下的返回结果,但点击“Run Test”测试时,$util.authType()返回“API Key Authorization”而非预期的用户池授权。请问如何在测试时让$util.authType()返回“User Pool Authorization”?

解决步骤

  • 在AppSync控制台的解析器测试页面,找到Test Context配置区域
  • 手动修改上下文的request.headers,添加Cognito用户池授权所需的头部信息:
    "request": {
      "headers": {
        "Authorization": "Bearer <你的Cognito用户ID令牌>"
      }
    }
    
  • 同时,可在上下文的context.identity部分补充用户池身份的相关字段(模拟真实授权场景,可选但推荐):
    "context": {
      "identity": {
        "username": "<你的Cognito用户名>",
        "sub": "<用户的Cognito唯一标识>",
        "issuer": "<你的Cognito用户池域名>",
        "claims": {
          "cognito:username": "<你的Cognito用户名>",
          "email": "<用户邮箱>"
        },
        "sourceIp": ["127.0.0.1"],
        "defaultAuthStrategy": "AMAZON_COGNITO_USER_POOLS"
      }
    }
    
  • 保存修改后的测试上下文,再次点击“Run Test”,此时$util.authType()会返回“User Pool Authorization”

补充说明

  • 需先从Cognito用户池获取有效的ID令牌:可通过Amplify Auth模块的Auth.currentSession()方法获取,或在Cognito控制台的测试用户页面生成临时令牌
  • 确保Authorization头部格式正确,必须是Bearer + 空格 + 令牌字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:13:11