簡體   English   中英

如何在 Appsync Lambda 解析器中檢索認知識別數據(使用 cdk)

[英]How to retrieve cognito identification data in Appsync Lambda Resolver (Using cdk)

我有一個 appsync lambda 解析器,它將查詢 postgresql 數據庫。 Appsync 請求使用 API 密鑰授權給未授權用戶,授權用戶使用 Cognito 用戶池。 當經過身份驗證的用戶發出請求時,我想從我的 lambda 解析器中的 cognito 檢索識別數據,但我不知道該怎么做。 首先,這是我對 appsync 和 lambda 解析器的設置:

    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 解析器中的身份驗證數據? 謝謝你。

您可以通過解析器映射模板向您的 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 密鑰發出的請求)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM