首页 > 解决方案 > 使用 API 密钥在 AWS AppSync 中测试解析程序?

问题描述

目前,AWS AppSync 提供了一个选项来添加测试上下文来测试您的解析器,以确保一切正确。但是,因为我使用 API Key 进行身份验证,所以我不确定在请求映射模板中设置它以便测试上下文可以运行并且我可以测试我的 API 的有效性(特别是因为这是唯一的在测试上下文中没有身份部分的身份验证)?任何人都可以帮忙吗?

标签: graphqlaws-appsyncvtl

解决方案


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

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

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

    { "identity": { "accountId": "my aws account", "cognitoIdentityPoolId": "string", "cognitoIdentityId": "string", "sourceIp": ["string"], "username": "string", "userArn": "string" }, "arguments": {}, "source": { "lambda": "Hello, world!", "testCtx": "Hello, world!" }, "结果": "你好,世界!" }

请求映射模板可能如下所示:

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

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

{
    "account: "my aws account"
}

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


推荐阅读