【问题标题】:Python Lambda function access cognito "sub" uuidPython Lambda 函数访问认知“子”uuid
【发布时间】:2020-11-07 23:29:48
【问题描述】:

我有一个用 python 编写的 Lambda 函数,它由具有代理集成的 API Gateway 和 Cognito 用户池授权方触发。我正在尝试访问 Cognito 为每个用户提供的“子”UUID,但我没有尝试任何工作。我几乎用尽了所有相关搜索结果的谷歌,但我发现没有任何东西似乎有效。它们要么返回 null,要么崩溃。我的功能(每个尝试的 UUID 访问行都被注释掉了)如下:

import json

def lambda_handler(event, context):
    #UniqueUser = context.identity.cognito_identity_id
    #UniqueUser = context.authorizer.claims.sub
    #UniqueUser = event.requestContext.authorizer.claims.sub
    #UniqueUser = event.request.userAttributes.sub
    #UniqueUser = event.queryStringParameters.sub
    
    try:
        # Something that gets sub from cognito
    except:
        UniqueUser = "not valid code"
        
    if not UniqueUser:
        UniqueUser = "UniqueUser is null"
        
    return {
        'statusCode': 200,
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'body': json.dumps('Hello from Lambda ' + UniqueUser + "!")
    };

有谁知道此行为的任何可能来源或此问题的解决方案?

【问题讨论】:

  • 当我这样做时:print(vars(context)) 我得到它作为它的一部分返回:'client_context': None, 'identity': <bootstrap.CognitoIdentity object at 0x7fd269d02a50> 因此,客户端上下文为空,并且有一个我似乎无法访问的身份密钥。

标签: python aws-lambda aws-api-gateway amazon-cognito


【解决方案1】:

如果您需要访问通过代理集成的 API 网关调用 Lambda 函数的 Cognito 用户的 UUID,请使用以下代码。

UniqueUser = event['requestContext']['authorizer']['claims']['sub']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2011-01-13
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多