【问题标题】:AWS Lambda function context.identity.cognito_identity_id returns nullAWS Lambda 函数 context.identity.cognito_identity_id 返回 null
【发布时间】:2020-07-16 05:04:04
【问题描述】:

对于一个网络应用程序,我正在制作一个由 api 网关触发的 AWS Lambda 函数。我将 api 网关链接到 cognito 用户池,因此您需要在触发该功能之前登录。 “选项”部分未启用授权,“发布”方法将 cognito 用户池作为授权者。当我按下前端的按钮触发它时,该功能运行正常。我的问题是context.identity.cognito_identity_id 总是返回一个空值,而不是预期的子 uuid。我不知道这是为什么。我尝试启用“使用调用者凭据调用”,但是当我将鼠标悬停在复选框上时说我无法启用它。这是我当前的 lambda 函数:

import json

def lambda_handler(event, context):
    UniqueUser = context.identity.cognito_identity_id
    if not UniqueUser:
        UniqueUser = "fail"
        
    return {
        'statusCode': 200,
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'body': json.dumps('Hello from Lambda ' + UniqueUser + "!")
    };

我怎样才能让context.identity.cognito_identity_id(或类似的东西)返回我认为应该的用户的uuid?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito amazon-api-gateway


    【解决方案1】:

    看起来sub 和/或emailevent['requestContext']['authorizer']['claims']

    【讨论】:

    • 感谢您的快速回复!我更改了代码以使用此“UniqueUser = event.requestContext.authorizer.claims.sub”,但它仍然无法正常工作,因为“requestContext”部分不存在。 "AttributeError: 'dict' 对象没有属性 'requestContext'"
    • 这是我的映射模板:{"statusCode": 200, "sub": "$context.authorizer.claims.sub", "username": "$context.authorizer.claims["cognito :用户名"]" }
    • subcognitoIdentityId 不同
    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 2019-05-03
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2021-08-24
    相关资源
    最近更新 更多