Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda 我可以通过API网关通过Lambda调用AWS Cognito吗?_Aws Lambda_Aws Api Gateway_Amazon Cognito_Api Gateway_Amazon Cognito Triggers - Fatal编程技术网

Aws lambda 我可以通过API网关通过Lambda调用AWS Cognito吗?

Aws lambda 我可以通过API网关通过Lambda调用AWS Cognito吗?,aws-lambda,aws-api-gateway,amazon-cognito,api-gateway,amazon-cognito-triggers,Aws Lambda,Aws Api Gateway,Amazon Cognito,Api Gateway,Amazon Cognito Triggers,我的当前堆栈如下所示: 用户通过AWS Cognito创建帐户 触发确认后lambda,然后将进一步的用户详细信息添加到数据库中 我的数据库使用cognito生成的子id作为用户id,因此它们是相同的。我还将电子邮件地址作为用户名复制到数据库中。我的意图是使用Cognito进行身份验证,使用我自己的数据库实现我的应用程序的功能 但是,如果用户希望更新他们的电子邮件地址,我需要在cognito和我的数据库中对其进行修改。我的第一次尝试是在我的lambda中使用admin_update_user_属

我的当前堆栈如下所示:

用户通过AWS Cognito创建帐户 触发确认后lambda,然后将进一步的用户详细信息添加到数据库中 我的数据库使用cognito生成的子id作为用户id,因此它们是相同的。我还将电子邮件地址作为用户名复制到数据库中。我的意图是使用Cognito进行身份验证,使用我自己的数据库实现我的应用程序的功能

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

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

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

我不想通过我的前端打两个单独的电话,因为这会造成一个电话完成,而另一个电话完成不了的风险


谢谢

如果VPC中有Lambda功能,那么需要NAT网关,因为此时没有Cognito VPC端点

如果您使用的是类似Dynamo的DB,那么Lambda函数不需要在VPC中,这样您就可以实现上面提到的用例

另一种选择是异步更新Cognito,这样您的Lambda就可以潜在地使用VPC端点将对象放入SQS中,然后在VPC外部使用Lambda轮询器轮询消息并更新Cognito。或者通过使用私有API网关来实现类似的用例


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

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

如果您使用的是类似Dynamo的DB,那么Lambda函数不需要在VPC中,这样您就可以实现上面提到的用例

另一种选择是异步更新Cognito,这样您的Lambda就可以潜在地使用VPC端点将对象放入SQS中,然后在VPC外部使用Lambda轮询器轮询消息并更新Cognito。或者通过使用私有API网关来实现类似的用例


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

谢谢你的回复。最初我尝试使用dynamodb,但遇到了同样的问题,我需要一个NAT网关。。。后来我发现它根本不能满足我的需要。我的数据库是EC2实例上的Neo4J。如果我正确理解你的回答,我想知道是否有可能有一个单独的lambda,可以调用Cognito,然后调用我的api网关>lambda>EC2。。。不过,这似乎很冗长。如果我说的任何话听起来都很愚蠢,请原谅,这是我第一次参加牛仔竞技表演。Thanks@stackOp请阅读所有原始帖子:所以我创建了一个nat网关,它可以工作,但它的成本太高了!谢谢你的回复。最初我尝试使用dynamodb,但遇到了同样的问题,我需要一个NAT网关。。。后来我发现它根本不能满足我的需要。我的数据库是EC2实例上的Neo4J。如果我正确理解你的回答,我想知道是否有可能有一个单独的lambda,可以调用Cognito,然后调用我的api网关>lambda>EC2。。。不过,这似乎很冗长。如果我说的任何话听起来都很愚蠢,请原谅,这是我第一次参加牛仔竞技表演。Thanks@stackOp请阅读所有原始帖子:所以我创建了一个nat网关,它可以工作,但它的成本太高了!