python-3.x - 寻找 Python 示例以搜索 Cognito 身份并更新属性
问题描述
我正在集成一个使用网络挂钩的支付解决方案。在结帐期间,支付提供商会获得 Cognito 用户 ID(或用户子)。成功结帐后,支付提供商会调用我使用 AWS Lambda/Gateway 和 Python 实现的网络挂钩。在这个网络挂钩中,我获得了付款状态和 Cognito 用户 ID。
我接下来要做的是在给定的 Cognito 用户 ID 上更新或设置订阅状态的属性。
我发现了一些 JavaScript 代码,它们看起来像是让我到了那里,但我错过了它应该如何工作的一些东西。这是我找到的用于搜索用户的 JS 代码:
var cog = new AWS.CognitoIdentityServiceProvider();
var filter = "sub = \"" + userSub + "\"";
var req = {
"Filter": filter,
"UserPoolId": "your pool id" // looks like us-east-9_KDFn1cvys
};
cog.listUsers(req, function(err, data) {
if (err) {
console.log(err);
}
else {
if (data.Users.length === 1){ //as far as we search by sub, should be only one user.
var user = data.Users[0];
var attributes = data.Users[0].Attributes;
} else {
console.log("Something wrong.");
}
}
});
我需要上述的 Python 版本......我也不太确定如何初始化 AWS.CognitoIdentityServiceProvider 以进行搜索。似乎我需要设置 IAM 凭证才能搜索用户身份池,不是吗?
任何有关如何使用 Python 在 Cognito 身份池中搜索用户的指示都将不胜感激!
解决方案
以下是搜索带前缀的用户的方法:
import json
import boto3
import datetime
client = boto3.client('cognito-idp')
def default(o):
if isinstance(o, (datetime.date, datetime.datetime)):
return o.isoformat()
def lambda_handler(event, context):
response = client.list_users(
UserPoolId='<UserPoolID>',
Limit=1,
Filter='given_name^=\"Xavier\"'
)
return {
'statusCode': 200,
'body': json.dumps(response['Users'],
sort_keys=True,
indent=1,
default=default)
}
您需要将 替换为您的实际 Cognito 用户池 ID。
推荐阅读
- reactjs - React 中的 Jest 模块模拟
- javascript - 将 jQuery 数据表行作为参数传递给 JavaScript 函数
- mysql - SELECT 行,COUNT(*) FROM 表;只返回一个结果而不是全部
- c# - 为什么在我的集成测试期间我的依赖项没有被替换?
- python - 如何计算以天和小时为单位的经过时间
- python - 使用 Python sshtunnel 进行端口转发休息请求
- android - Android xml:自定义标题栏的大小和属性设置问题
- cassandra - Suddenly high write latency for one table in metrics
- python - rabbitpy 中的 Mandatory 参数是什么意思,它是如何工作的?
- google-analytics - Power BI/Google Analytics 连接器 API 错误