我有一个架构设计,我使用Cognito进行用户管理(电子邮件、电话号码是唯一的属性),然后我使用DynamoDB同步用户,这样我就可以让AppSync的用户查询和获取一些用户信息。
我需要一些同步DynamoDB用户和Cognito用户的方法。目前,我有一个用户postConfirsion lambda触发器,可以在新用户确认时运行插入到DynamoDB中,以获取所有上述信息,但是:
保持Cognito和DynamoDB同步的理想架构是什么?
我会考虑不与DynamoDb同步这些细节。您可以像查询数据库一样查询Cognito来查找/获取用户。我们这样做的方式是,我们使用DynamoDb用户ID的Cognito子(id),以便非常容易地为特定用户从DynamoDb获取数据。数据库表更像是一个补充信息表,就像您用来保存额外用户数据一样。在我看来,这会容易得多——那么你就不需要处理任何与电子邮件变化相关的事情。
例如,我们有一个用于帐户/用户的管理appinc。要查找或变异用户,我们通常使用调用Cognito方法的Lambda。
我也有同样的问题。作为注册过程的一部分,我在cognito中存储电子邮件、姓氏和名字。然后用户可以随时更改这些字段中的任何一个。
我找不到跟踪这些更改的方法,因为文档中没有为同步事件声明任何此类lambda触发器。但是,在我的例子中,由于idToken
包含用户属性,因此在用户进行更改后,它必须更新自身。因此,我对此进行了测试,发现只要用户属性发生更改,就会调用Pre-Token触发器,以便它可以重新生成新的令牌。该lambda包含以下有效载荷
{
version: '1',
triggerSource: 'TokenGeneration_RefreshTokens',
region: 'XXX',
userPoolId: '',
userName: 'XXX',
callerContext: {
awsSdkVersion: 'aws-sdk-unknown-unknown',
clientId: 'XXX'
},
request: {
userAttributes: {
sub: 'XXX',
email_verified: 'false',
'cognito:user_status': 'CONFIRMED',
'cognito:email_alias': 'user1@mailinator.com',
given_name: 'Name',
family_name: 'New',
email: 'user1@mailinator.com'
},
groupConfiguration: {
groupsToOverride: [],
iamRolesToOverride: [],
preferredRole: null
}
},
response: { claimsOverrideDetails: null }
}
所以我在这个lambda中更新了dynamodb中的记录。但是我不是100%确定,因为文档中没有提到这个用例和预令牌触发器。试试看。
原贴于此
问题内容: 我使用安装了一个软件包,并运行其安装过程,在安装过程中,该软件包还安装了其他几个软件包,并将其添加到(假设)中,我假设使用 npm 。很好,但是现在我不同步了。 同步到当前状态的正确,非手动方法是什么? 编辑:将缺少的软件包显示为: 但这并没有添加它们。 问题答案: 奔跑,或只是。 锁定文件会在对依赖项进行任何更改时(即在您运行yarn命令时)完整更新。 从Yarn文档: 您的yarn
我对AWS相当陌生,尽管我在搜索和阅读角色 用例示例: User1在名为“Groups”的表中创建项目“Group_A”。 User2在名为“Groups”的表中创建项目“Group_B”。 另一个名为“Messages”的表有一个排序键,可以是表“Groups”中的任何项 User1如何在不允许访问User2的情况下将“组A”的“消息”的访问权授予User3和User4。
我使用AWS加密客户端。下面的代码抛出错误为 错误:@DoNotTouch不适用于现场 然而,如果我给出@DoNotTouch配置,如下所示[使用getter和setter] 这很好用。我猜lombok生成的getter和setter不会被AmazoneCryptionClient识别 我在跟踪这个aws doc:https://aws.amazon.com/blogs/developer/cli
如果webservice可以用不同的xml结构响应呢?例如和具有完全不同的字段?
问题内容: 我正在使用Python 2.6和用于多线程的多处理模块。现在,我希望有一个同步的字典(我真正需要的唯一原子操作是值上的+ =运算符)。 我应该用multiprocessing.sharedctypes.synchronized()调用包装字典吗?还是另一种方式? 问题答案: 介绍 似乎有很多主席建议,没有可行的例子。这里列出的答案都没有建议使用多处理,这令人失望和不安。作为python