通过 AppSync 上的自定义 Lambda 授权方验证突变

Authenticate a mutation via a Custom Lambda Authorizer on AppSync

我正在尝试创建一个完全由 AppSync 管理的 API。

我正在使用自定义 Lambda 授权方,我想对一些 mutation 进行身份验证。我已经阅读 this very interesting post on nested resolvers and Whosebug post 但我仍然找不到解决问题的方法。

所以,我有一个 mutation,比如说 createReview 应该由 DynamoDB 解析器解决,我希望我的自定义 Lambda 授权方对 createReview 请求进行授权和验证。

应该如何组织?

我知道我可以使用 Lambda 解析器解决我的 createReview 请求,或者我可以使用 AWS Cognito 作为授权方,但我正在努力实现我所拥有的问。

感谢您的任何建议

我链接的 post 已经提供了足够的信息来解决问题。

我固执地迷上了 mutation 的使用,因为我对 GraphQL 的了解不够,不知道它与查询有什么不同。

放弃mutation,使用query就可以解决问题

所以我有一个

type Object {
   field1: String!
   field2: String
}

和一个

type AuthObject {
    field1: String!
    field2: String
    data: Object
}

我的查询就像

type Query {
    createObject (
        field1: String!
        field2: String
    ) : AuthObject
}

和一个身份验证器 lambda 函数,所有参数和身份验证令牌都传递给该函数。此函数的工作是验证令牌,如果有效,则 return 所有参数。在输出映射模板中,如果 lambda 未能验证 GraphQL,则会引发一条 unauthenticated 消息,否则 returns 参数。

然后,我附上了这些解析器:

createObject => a resolver that calls the lambda and maps input and output

AuthObject.data:Object => a dynamodb resolver that calls PutItem using `$ctx.source` to retrieve the arguments.

其实和hackernoon post一样,我只是用了PostItem而不是GetItem。