1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 感谢您关于上述查询的联系。我想分享的是,我们可以使用***@aws_lambda*** AppSync指令来指定在使用多个授权模式时,应由AWS_LAMBDA授权模式授权类型的字段。通过此授权模式,我们可以使用Amazon Lambda函数实现自己的API授权逻辑。请注意,我们可以将Lambda函数用于主要或次要授权器之一,但每个API只能有一个Lambda授权函数。
例如,考虑以下样本模式,在其中我们将为特定请求调用Lambda授权函数:
type Author @aws_lambda {
id: ID!
title: String
}
type Mutation {
createAuthor(input: CreateAuthorInput!): Author @aws_lambda
}
请注意,'@aws_lambda'指令将使用配置在AppSync API的授权模式中的Lambda函数。由于每个API只能使用一个Lambda授权函数,因此在使用此指令时不需要指定函数名称。
接下来,在我的测试设置中,我已执行了以下步骤以使授权生效:
- **编写Lambda函数以授权GraphQL API调用-**实现我们的业务逻辑以授权请求,在我的情况下,我实现了函数以检查授权令牌,如果值是自定义授权,则允许请求否则请求将被拒绝。
- **设置AWS Lambda作为AppSync授权模式-**将Lambda函数配置为AppSync API>>设置>>默认/附加授权模式(根据我们的用例)>> AWS_LAMBDA。 3.在从AppSync Console发出的变更请求时,将令牌传递给Lambda以进行验证。
使用上述步骤,我能够调用位于授权模式中设置的Lambda函数来授权请求。
有关详细信息,请参阅以下文档:
- [+]. https://aws.amazon.com/blogs/mobile/appsync-lambda-auth/
- [+]. https://docs.amazonaws.cn/en_us/appsync/latest/devguide/security-authz.html#aws-lambda-authorization
此外,如果您的用例是针对特定请求使用不同的 lambda 函数并在同一请求上处理/实现业务逻辑,那么您可以考虑针对该特定字段使用 Lambda 解析器。
- [+]. 使用 AppSync 控制台:https://docs.amazonaws.cn/en_us/appsync/latest/devguide/tutorial-lambda-resolvers.html
- [+]. 如果使用 Amplify CLI:https://docs.amplify.aws/cli/graphql/custom-business-logic/#lambda-function-resolver 尽管如此,如果您面临进一步的挑战,请随时使用以下链接向 AWS 提出支持案例。
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前