在从Cognito池中获取所有用户时,在AWS Lambda中出现了“无法编组响应:无法将类型为datetime的对象序列化为JSON”。

9 浏览
0 Comments

在从Cognito池中获取所有用户时,在AWS Lambda中出现了“无法编组响应:无法将类型为datetime的对象序列化为JSON”。

import boto3

client = boto3.client('cognito-idp')

def lambda_handler(event, context):

response = client.list_users(

UserPoolId='us-east-1_TIzqd0Fik',

)

return response

我想通过 API 从 Cognito 获取所有用户。但是我遇到了这个错误 "类型为 datetime 的对象无法进行 JSON 序列化"。

0
0 Comments

问题的原因是在AWS Lambda中从Cognito池获取所有用户时,无法将响应对象序列化为JSON。问题出现的原因是响应中包含了datetime类型的对象,而datetime对象无法直接序列化为JSON。

解决方法是将dumps方法的default参数设置为str。通过设置default参数为str,可以将无法序列化的对象转换为字符串,从而实现序列化的目的。

下面是解决该问题的代码示例:

import boto3
import json
client = boto3.client('cognito-idp')
def lambda_handler(event,context):
    response = client.list_users(
        UserPoolId='us-east-1_TIzqd0Fik',
    )
    return json.dumps(response, default=str))

通过将default参数设置为str,可以确保响应中的所有对象都能够被正确地序列化为JSON。这样就解决了在AWS Lambda中从Cognito池获取所有用户时出现的无法序列化响应对象的问题。

0