使用 API 密钥在 AWS AppSync 中测试解析程序?

Posted

技术标签:

【中文标题】使用 API 密钥在 AWS AppSync 中测试解析程序?【英文标题】:Test Resolver in AWS AppSync w/ API Key? 【发布时间】:2019-06-04 11:26:33 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

    获取您将在未来使用的授权模式(IAM、Cognito、OIDC)。 在 ctx.identity 中查找授权模式提供的字段。你可以在这里找到:Resolver Context Reference

    将这些字段添加到您的测试上下文中。例如,IAM 测试上下文可能如下所示:

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

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


    "account: "$ctx.identity.accountId"

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


    "account: "my aws account"

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

【讨论】:

感谢您的建议!但是,即使我更改了授权模式,当我运行测试时,响应映射模板也会出现 null?我应该运行一个查询以显示测试上下文? 如果没有看到您的响应映​​射模板,我将无法回答返回 null 的响应映射模板。解析器页面上有一个测试按钮,它使用您创建的测试上下文在您的 Web 浏览器中测试解析器。如果您从控制台的查询页面运行查询,您的请求将发送到 AppSync 服务,上下文将由服务填充,并且您将在解析器在服务上运行后得到响应。

以上是关于使用 API 密钥在 AWS AppSync 中测试解析程序?的主要内容,如果未能解决你的问题,请参考以下文章

具有公共/私有访问权限的 Appsync 身份验证,无需 AWS Cognito

AWS AppSync API graphlQL - 需要同步调用 [重复]

使用 cognito 进行 Appsync graphql 授权

通过 AWS AppSync GraphQL API 使用多种授权类型

从 lambda 调用 AWS AppSync GraphQL API 变异查询

AWS Lambda 函数无法访问 AppSync GraphQL API - 权限被拒绝