我可以通过API网关通过Lambda对AWS Cognito进行调用吗?

问题描述 投票:0回答:1

我目前的堆栈是这样的。

  1. 用户通过AWS Cognito创建一个账户
  2. 后期确认lambda被触发,然后将进一步的用户信息添加到数据库中。

我的数据库使用的是 sub 由cognito生成的id作为userId,所以它们是一样的。我也把电子邮件地址复制到我的数据库中作为用户名。我的目的是使用Cognito来进行认证,而我自己的数据库则用来实现我的应用程序的功能。

然而,如果用户希望更新他们的电子邮件地址,我需要在cognito和我的数据库中同时修改这个地址。我的第一次尝试是在我的lambda中使用以下方法调用cognito admin_update_user_attributes 但很快就意识到它被阻止了与互联网的外部呼叫,所以我创建了一个NAT网关,虽然它可以工作,但它的成本实在是太高了!我的第二个想法是通过cognito,让我的前端进行呼叫,然后让cognito触发lambda更新我的数据库,但我认为这是不可能的。

我的第二个想法是通过cognito,让我的前端进行调用,然后让cognito触发一个lambda来更新我的数据库,但我认为这是不可能的。

是否有一个配置或我遗漏的东西可以通过API网关通过lambda访问AWS cognito,因为它们都是AWS服务。

我不想通过我的前端进行两个独立的调用,因为这会造成一个被完成而另一个没有完成的风险。

谢谢你

aws-lambda aws-api-gateway amazon-cognito api-gateway amazon-cognito-triggers
1个回答
0
投票

如果你在VPC中设置了Lambda功能,就需要一个NAT网关,因为目前还没有Cognito VPC端点。

如果你使用的是像Dynamo这样的数据库,Lambda函数不需要在VPC中,这样你就可以实现你上面提到的用例。

另一个选择是异步地进行Cognito更新,所以你的Lambda有可能使用VPC端点把一个对象放到SQS中,然后由一个Lambda poller(在VPC之外)来轮询消息并更新Cognito。或者通过使用私有的API Gateways来实现类似的用例。

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

© www.soinside.com 2019 - 2024. All rights reserved.