首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Appsync Lambda解析器中检索认知识别数据(使用cdk)

如何在Appsync Lambda解析器中检索认知识别数据(使用cdk)
EN

Stack Overflow用户
提问于 2021-10-11 23:52:42
回答 1查看 218关注 0票数 0

我有一个appsync lambda解析器,它将查询postgresql数据库。对于未经授权的用户,Appsync请求使用API密钥进行授权;对于授权用户,则使用认知用户池进行授权。当一个经过身份验证的用户发出请求时,我想在lambda解析器中检索身份识别数据,但我不知道如何做到这一点。首先,这里是我对appsync和lambda解析器的设置:

代码语言:javascript
复制
    this.api = new appsync.GraphqlApi(this, "API-NAME", {
      name: "API-NAME",
      schema: appsync.Schema.fromAsset("graphql/schema.graphql"),
      authorizationConfig: {
        defaultAuthorization: {
          authorizationType: appsync.AuthorizationType.API_KEY,
          apiKeyConfig: {
            expires: cdk.Expiration.after(cdk.Duration.days(365)),
          },
        },
        additionalAuthorizationModes: [
          {
            authorizationType: appsync.AuthorizationType.USER_POOL,
            userPoolConfig: {
              userPool: props.userPool,
            },
          },
        ],
      },
    });

const lambdaDs = this.api.addLambdaDataSource(
      "lambdaDatasource",
      props.LambdaConnectingGraphqlToDatabase
    );


lambdaDs.createResolver({
      typeName: "Query",
      fieldName: "listUsers",
    });

// etc. etc.

在我的lambda解析器中,即使经过身份验证的用户发出请求,context.identity也是未定义的。我曾尝试在lambdaDs.createResolver()中使用请求映射模板,但我不知道如何工作,或者这是不是正确的方法。

如何在lambda解析器中查看身份验证数据?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-10-12 08:58:01

您可以通过解析器映射模板向您的lambda提供身份信息,请参阅https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html

context.identity部分是相关的部分。

有一个部分包含可用于AMAZON_COGNITO_USER_POOLS授权的字段。

但是,请注意,对于API_KEY,不会填充context.identity信息。

但是,您可以区分这两种场景,因为您在lambda中有Cognito场景的身份信息,而没有API密钥场景的任何身份信息(因此,您可以假定它是来自具有API密钥的未授权用户的请求)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69533608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档