5

我当前的堆栈是这样的:

  1. 用户通过 AWS Cognito 创建账户
  2. 触发后确认 lambda,然后将更多用户详细信息添加到数据库

我的数据库使用subcognito 生成的 id 作为 userId,所以它们是相同的。我还将电子邮件地址复制为数据库中的用户名。我的意图是使用 Cognito 进行身份验证,并使用我自己的数据库来实现我的应用程序的功能。

但是,如果用户希望更新他们的电子邮件地址,我需要在 cognito 和我的数据库中进行修改。我第一次尝试使用我的 lambda 调用 cognito,admin_update_user_attributes但很快意识到它被阻止向 Internet 进行外部调用,所以我创建了一个 nat 网关,它可以工作,但它的成本太高了!

我的第二个想法是通过 cognito,让我的前端拨打电话,然后让 cognito 触发 lambda 来更新我的数据库,但我认为这是不可能的。

是否有配置或我缺少的东西能够通过 API 网关通过 lambda 访问 AWS cognito,因为它们都是 AWS 服务。

我不想通过我的前端进行两个单独的调用,因为这会产生一个完成而不是另一个完成的风险。

谢谢

4

1 回答 1

7

如果您在 VPC 中有 Lambda 函数,则需要 NAT 网关,因为此时没有 Cognito VPC 终端节点。

当前支持的带有端点的 AWS 服务列表

如果您使用的是 Dynamo 之类的数据库,则 Lambda 函数不需要位于 VPC 中,因此您可以实现上面提到的用例。

另一种选择可能是异步进行 Cognito 更新,因此您的 Lambda 可能会使用 VPC 端点将对象放入 SQS,然后使用 Lambda 轮询器(在 VPC 外部)来轮询消息并更新 Cognito。或者通过使用私有 API 网关来实现类似的用例。

这些只是我自己没有做过的潜在想法。

于 2020-06-13T13:58:43.903 回答