在从Cognito池中获取所有用户时,在AWS Lambda中出现了“无法编组响应:无法将类型为datetime的对象序列化为JSON”。
在从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 序列化"。
问题的原因是在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池获取所有用户时出现的无法序列化响应对象的问题。