带API密钥的AWS AppSync中的测试解析器?

时间:2019-01-09 16:21:27

标签: graphql aws-appsync vtl

当前,AWS AppSync提供了一个选项,用于添加测试上下文以测试您的解析器,以确保一切正确。但是,由于我正在使用API​​密钥进行身份验证,因此我不确定在请求映射模板中进行设置的方法,以便可以运行测试上下文,并且可以测试API的有效性(尤其是因为这是唯一的方法)在测试上下文中没有身份部分的auth)?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您是正确的,即使从客户端调用API时,API密钥授权模式也不会填充身份。

但是,您仍然可以在测试上下文中添加一个标识对象。为此,您需要:

  1. 获取将来将使用的授权模式(IAM,Cognito,OIDC)。
  2. 查找授权模式在ctx.identity中提供的字段。您可以在这里找到:Resolver Context Reference
  3. 将这些字段添加到您的测试上下文中。例如,IAM测试上下文可能如下所示:

    {     “身份”:{         “ accountId”:“我的aws帐户”,         “ cognitoIdentityPoolId”:“字符串”,         “ cognitoIdentityId”:“字符串”,         “ sourceIp”:[“ string”],         “ username”:“ string”,         “ userArn”:“字符串”     },     “参数”:{},     “资源”: {         “ lambda”:“你好,世界!”,         “ testCtx”:“你好,世界!”     },     “结果”:“你好,世界!” }

请求映射模板如下所示:

{
    "account: "$ctx.identity.accountId"
}

,运行测试上下文时,评估后的请求映射模板将如下所示:

{
    "account: "my aws account"
}

注意:您可能还只想将API切换到计划使用的授权模式,然后以登录用户的身份尝试查询。